diff --git a/Gemfile b/Gemfile index 286bab0053..136cef779f 100644 --- a/Gemfile +++ b/Gemfile @@ -38,7 +38,7 @@ gem 'octokit' # GitHub # General-purpose gems gem 'mandate', '~> 2.0' gem 'kaminari' -gem 'oj', '~> 3.14.0' +gem 'oj', '~> 3.17' # Setup dependencies gem 'exercism-config', '>= 0.138.0' @@ -132,7 +132,7 @@ gem 'opensearch-ruby' gem 'rack-attack', '~> 6.6' -gem 'rubyzip', '~> 2.3' +gem 'rubyzip', '~> 3.4' gem 'toml', '~> 0.3.0' gem 'ruby-openai' diff --git a/Gemfile.lock b/Gemfile.lock index 8c7de65cc7..0ebfc5580e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -89,8 +89,8 @@ GEM tzinfo (~> 2.0) addressable (2.9.0) public_suffix (>= 2.0.2, < 8.0) - anonymous_loader (0.1.3) - version_gem (~> 1.1, >= 1.1.14) + anonymous_loader (0.1.5) + version_gem (~> 1.1, >= 1.1.17) ansi-to-html (0.0.3) anycable (1.6.4) anycable-core (= 1.6.4) @@ -107,18 +107,18 @@ GEM actioncable (>= 7.0, < 9.0) anycable-core (~> 1.6.0) globalid - anyway_config (2.8.1) + anyway_config (2.9.1) ruby-next-core (~> 1.0) ast (2.4.3) - auth-sanitizer (0.2.3) - version_gem (~> 1.1, >= 1.1.14) - aws-eventstream (1.4.0) - aws-partitions (1.1287.0) - aws-sdk-cloudfront (1.154.0) - aws-sdk-core (~> 3, >= 3.256.0) + auth-sanitizer (0.2.5) + version_gem (~> 1.1, >= 1.1.16) + aws-eventstream (1.4.1) + aws-partitions (1.1299.0) + aws-sdk-cloudfront (1.160.0) + aws-sdk-core (~> 3, >= 3.260.0) aws-sigv4 (~> 1.5) - aws-sdk-core (3.257.0) - aws-eventstream (~> 1, >= 1.3.0) + aws-sdk-core (3.261.0) + aws-eventstream (~> 1, >= 1.4.1) aws-partitions (~> 1, >= 1.992.0) aws-sigv4 (~> 1.9) base64 @@ -126,24 +126,24 @@ GEM jmespath (~> 1, >= 1.6.1) logger rexml (~> 3.4, >= 3.4.2) - aws-sdk-dynamodb (1.174.0) - aws-sdk-core (~> 3, >= 3.256.0) + aws-sdk-dynamodb (1.178.0) + aws-sdk-core (~> 3, >= 3.260.0) aws-sigv4 (~> 1.5) - aws-sdk-ecr (1.134.0) - aws-sdk-core (~> 3, >= 3.256.0) + aws-sdk-ecr (1.138.0) + aws-sdk-core (~> 3, >= 3.260.0) aws-sigv4 (~> 1.5) - aws-sdk-kms (1.132.0) - aws-sdk-core (~> 3, >= 3.256.0) + aws-sdk-kms (1.136.0) + aws-sdk-core (~> 3, >= 3.260.0) aws-sigv4 (~> 1.5) - aws-sdk-s3 (1.232.1) - aws-sdk-core (~> 3, >= 3.256.0) + aws-sdk-s3 (1.235.0) + aws-sdk-core (~> 3, >= 3.258.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.5) - aws-sdk-secretsmanager (1.136.0) - aws-sdk-core (~> 3, >= 3.256.0) + aws-sdk-secretsmanager (1.139.0) + aws-sdk-core (~> 3, >= 3.260.0) aws-sigv4 (~> 1.5) - aws-sdk-sesv2 (1.110.0) - aws-sdk-core (~> 3, >= 3.256.0) + aws-sdk-sesv2 (1.115.0) + aws-sdk-core (~> 3, >= 3.260.0) aws-sigv4 (~> 1.5) aws-sigv4 (1.12.1) aws-eventstream (~> 1, >= 1.0.2) @@ -153,10 +153,10 @@ GEM benchmark (0.5.0) bigdecimal (4.1.3) bindex (0.8.1) - bootsnap (1.26.0) + bootsnap (1.26.1) msgpack (~> 1.5) builder (3.3.0) - bullet (8.2.0) + bullet (8.3.1) activesupport (>= 3.0.0) uniform_notifier (~> 1.11) byebug (13.0.0) @@ -179,12 +179,12 @@ GEM crack (1.0.1) bigdecimal rexml - crass (1.0.7) - crawler_detect (1.2.17) + crass (1.0.8) + crawler_detect (1.2.20) qonfig (>= 0.24) cssbundling-rails (1.4.3) railties (>= 6.0.0) - date (3.5.1) + date (3.6.0) devise (5.0.4) bcrypt (~> 3.0) orm_adapter (~> 0.1) @@ -196,8 +196,8 @@ GEM faraday (~> 1.0) faraday_middleware (~> 1.0) rack (>= 1.6) - domain_name (0.6.20260907) - doorkeeper (5.9.7) + domain_name (0.7.20261007) + doorkeeper (5.9.9) railties (>= 5) drb (2.2.3) erb (6.0.7) @@ -241,6 +241,7 @@ GEM faraday_middleware (1.2.1) faraday (~> 1.0) ffi (1.17.4) + ffi (1.17.4-arm64-darwin) friendly_id (5.4.2) activerecord (>= 4.0.0) fugit (1.14.0) @@ -257,15 +258,15 @@ GEM google-protobuf (4.36.2-x86_64-linux-gnu) bigdecimal rake (~> 13.3) - googleapis-common-protos-types (1.23.0) + googleapis-common-protos-types (1.24.0) google-protobuf (~> 4.26) - grpc (1.84.0) + grpc (1.85.0) google-protobuf (>= 3.25, < 5.0) googleapis-common-protos-types (~> 1.0) - grpc (1.84.0-arm64-darwin) + grpc (1.85.0-arm64-darwin) google-protobuf (>= 3.25, < 5.0) googleapis-common-protos-types (~> 1.0) - grpc (1.84.0-x86_64-linux-gnu) + grpc (1.85.0-x86_64-linux-gnu) google-protobuf (>= 3.25, < 5.0) googleapis-common-protos-types (~> 1.0) haml (7.5.1) @@ -284,7 +285,7 @@ GEM thor tilt hashdiff (1.2.1) - hashie (5.1.0) + hashie (5.2.0) logger highline (3.0.1) http-accept (1.7.0) @@ -296,7 +297,7 @@ GEM image_processing (1.14.0) mini_magick (>= 4.9.5, < 6) ruby-vips (>= 2.0.17, < 3) - io-console (0.9.4) + io-console (0.9.5) irb (1.18.0) pp (>= 0.6.0) prism (>= 1.3.0) @@ -309,25 +310,25 @@ GEM json (2.21.2) jwt (3.3.0) base64 - kaminari (1.2.2) + kaminari (1.3.1) activesupport (>= 4.1.0) - kaminari-actionview (= 1.2.2) - kaminari-activerecord (= 1.2.2) - kaminari-core (= 1.2.2) - kaminari-actionview (1.2.2) + kaminari-actionview (= 1.3.1) + kaminari-activerecord (= 1.3.1) + kaminari-core (= 1.3.1) + kaminari-actionview (1.3.1) actionview - kaminari-core (= 1.2.2) - kaminari-activerecord (1.2.2) + kaminari-core (= 1.3.1) + kaminari-activerecord (1.3.1) activerecord - kaminari-core (= 1.2.2) - kaminari-core (1.2.2) + kaminari-core (= 1.3.1) + kaminari-core (1.3.1) kramdown (2.5.2) rexml (>= 3.4.4) kramdown-parser-gfm (1.1.0) kramdown (~> 2.0) language_server-protocol (3.17.0.6) lint_roller (1.1.0) - listen (3.10.0) + listen (3.10.1) logger rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) @@ -347,7 +348,7 @@ GEM mime-types (3.7.0) logger mime-types-data (~> 3.2025, >= 3.2025.0507) - mime-types-data (3.2026.0921) + mime-types-data (3.2026.1020) mini_magick (5.4.0) logger mini_mime (1.1.5) @@ -357,7 +358,7 @@ GEM minitest (>= 5.0) mocha (3.1.0) ruby2_keywords (>= 0.0.5) - msgpack (1.8.5) + msgpack (1.8.6) multi_json (1.21.2) multi_xml (0.9.1) bigdecimal (>= 3.1, < 5) @@ -365,14 +366,14 @@ GEM mutex_m (0.3.0) mysql2 (0.5.7) bigdecimal - net-imap (0.6.7) + net-imap (0.6.8) date net-protocol net-pop (0.1.2) net-protocol net-protocol (0.4.0) timeout - net-smtp (0.5.1) + net-smtp (0.5.2) net-protocol netrc (0.11.0) nio4r (2.7.5) @@ -383,34 +384,36 @@ GEM racc (~> 1.4) nokogiri (1.19.4-x86_64-linux-gnu) racc (~> 1.4) - oauth2 (2.0.25) - anonymous_loader (~> 0.1, >= 0.1.3) - auth-sanitizer (~> 0.2, >= 0.2.3) + oauth2 (2.1.0) + anonymous_loader (~> 0.1, >= 0.1.5) + auth-sanitizer (~> 0.2, >= 0.2.5) faraday (>= 0.17.3, < 4.0) jwt (>= 1.0, < 4.0) logger (~> 1.2) multi_xml (~> 0.5) rack (>= 1.2, < 4) - snaky_hash (~> 2.0, >= 2.0.7) - version_gem (~> 1.1, >= 1.1.14) + snaky_hash (~> 2.0, >= 2.0.9) + version_gem (~> 1.1, >= 1.1.17) observer (0.1.2) octokit (10.0.0) faraday (>= 1, < 3) sawyer (~> 0.9) - oj (3.14.3) - omniauth (2.1.4) - hashie (>= 3.4.6) + oj (3.17.7) + bigdecimal (>= 3.0) + ostruct (>= 0.2) + omniauth (2.3.1) + hashie (>= 3.5.2) logger - rack (>= 2.2.3) - rack-protection + rack (>= 2.2.8) + rack-protection (>= 2.2.0) omniauth-discord (1.2.0) omniauth-oauth2 (~> 1.6) omniauth-github (2.0.1) omniauth (~> 2.0) omniauth-oauth2 (~> 1.8) - omniauth-oauth2 (1.9.0) + omniauth-oauth2 (1.10.0) oauth2 (>= 2.0.2, < 3) - omniauth (~> 2.0) + omniauth (~> 2.3, >= 2.3.1) omniauth-rails_csrf_protection (2.0.1) actionpack (>= 4.2) omniauth (~> 2.0) @@ -420,19 +423,19 @@ GEM multi_json (>= 1.0) orm_adapter (0.5.0) ostruct (0.6.3) - parallel (1.28.0) + parallel (2.3.0) parlour (9.1.2) commander (~> 5.0) parser rainbow (~> 3.0) sorbet-runtime (>= 0.5) - parser (3.3.12.0) + parser (3.3.13.0) ast (~> 2.4.1) racc parslet (2.0.0) pp (0.6.4) prettyprint - prettyprint (0.2.0) + prettyprint (0.2.1) prism (1.9.0) propshaft (0.4.0) rails (>= 7.0.0.alpha2) @@ -459,7 +462,7 @@ GEM rack-session (2.1.2) base64 (>= 0.1.0) rack (>= 3.0.0) - rack-test (2.2.0) + rack-test (2.3.0) rack (>= 1.3) rackup (2.3.1) rack (>= 3) @@ -518,14 +521,14 @@ GEM ostruct redis (5.4.1) redis-client (>= 0.22.0) - redis-client (0.30.1) + redis-client (0.31.0) connection_pool - redis-cluster-client (0.17.1) + redis-cluster-client (0.17.8) redis-client (~> 0.28) redis-clustering (5.4.1) redis (= 5.4.1) redis-cluster-client (>= 0.10.0) - regexp_parser (2.12.0) + regexp_parser (2.13.1) reline (0.7.0) io-console (~> 0.5) responders (3.2.1) @@ -545,33 +548,33 @@ GEM reverse_markdown (3.0.2) nokogiri rexml (3.4.4) - rubocop (1.77.0) - json (~> 2.3) + rubocop (1.92.1) + json (>= 2.3) language_server-protocol (~> 3.17.0.2) lint_roller (~> 1.1.0) - parallel (~> 1.10) + parallel (>= 1.10) parser (>= 3.3.0.2) rainbow (>= 2.2.2, < 4.0) - regexp_parser (>= 2.9.3, < 3.0) - rubocop-ast (>= 1.45.1, < 2.0) + regexp_parser (>= 2.11.3, < 3.0) + rubocop-ast (>= 1.49.0, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 4.0) rubocop-ast (1.50.0) parser (>= 3.3.7.2) prism (~> 1.7) - rubocop-minitest (0.38.1) + rubocop-minitest (0.41.0) lint_roller (~> 1.1) - rubocop (>= 1.75.0, < 2.0) + rubocop (>= 1.89.0, < 2.0) rubocop-ast (>= 1.38.0, < 2.0) - rubocop-performance (1.25.0) + rubocop-performance (1.27.0) lint_roller (~> 1.1) - rubocop (>= 1.75.0, < 2.0) - rubocop-ast (>= 1.38.0, < 2.0) - rubocop-rails (2.32.0) + rubocop (>= 1.89.0, < 2.0) + rubocop-ast (>= 1.47.1, < 2.0) + rubocop-rails (2.38.0) activesupport (>= 4.2.0) lint_roller (~> 1.1) rack (>= 1.1) - rubocop (>= 1.75.0, < 2.0) + rubocop (>= 1.89.0, < 2.0) rubocop-ast (>= 1.44.0, < 2.0) ruby-next-core (1.2.1) ruby-openai (8.3.0) @@ -583,7 +586,7 @@ GEM ffi (~> 1.12) logger ruby2_keywords (0.0.5) - rubyzip (2.4.1) + rubyzip (3.7.0) rufus-scheduler (3.9.2) fugit (~> 1.1, >= 1.11.1) rugged (1.9.6) @@ -591,27 +594,26 @@ GEM addressable (>= 2.3.5) faraday (>= 0.17.3, < 3) securerandom (0.4.1) - selenium-webdriver (4.49.0) + selenium-webdriver (4.51.0) base64 (~> 0.2) logger (~> 1.4) - rexml (~> 3.2, >= 3.2.5) rubyzip (>= 1.2.2, < 4.0) websocket (~> 1.0) - sentry-rails (7.0.0) + sentry-rails (7.1.0) railties (>= 5.2.0) - sentry-ruby (~> 7.0.0) - sentry-ruby (7.0.0) + sentry-ruby (~> 7.1.0) + sentry-ruby (7.1.0) bigdecimal concurrent-ruby (~> 1.0, >= 1.0.2) logger show_me_the_cookies (6.0.0) capybara (>= 2, < 4) - sidekiq (7.3.9) + sidekiq (7.3.10) base64 - connection_pool (>= 2.3.0) + connection_pool (>= 2.3.0, < 3) logger - rack (>= 2.2.4) - redis-client (>= 0.22.2) + rack (>= 2.2.4, < 3.3) + redis-client (>= 0.23.0, < 1) sidekiq-failures (1.1.0) sidekiq (>= 4.0.0) sidekiq-scheduler (6.0.2) @@ -619,10 +621,10 @@ GEM sidekiq (>= 7.3, < 9) skylight (7.0.0) activesupport (>= 7.1.0) - snaky_hash (2.0.7) + snaky_hash (2.0.9) hashie (>= 0.1.0, < 6) - version_gem (~> 1.1, >= 1.1.14) - solargraph (0.60.4) + version_gem (~> 1.1, >= 1.1.16) + solargraph (0.61.0) ast (~> 2.4.3) backport (~> 1.2) benchmark (~> 0.4) @@ -637,7 +639,7 @@ GEM ostruct (~> 0.6) parser (~> 3.0) prism (~> 1.4) - rbs (>= 3.10.0) + rbs (>= 3.10.4) rdoc (~> 7.0) reverse_markdown (~> 3.0) rubocop (~> 1.76) @@ -647,7 +649,7 @@ GEM yard (~> 0.9, >= 0.9.24) yard-activesupport-concern (~> 0.0) yard-solargraph (~> 0.1) - sorbet-runtime (0.6.13506) + sorbet-runtime (0.6.13599) sord (7.1.0) commander (~> 5.0) parlour (~> 9.1) @@ -656,7 +658,7 @@ GEM sorbet-runtime yard stringio (3.2.0) - stripe (19.6.2) + stripe (20.0.1) bigdecimal logger sysexits (1.2.0) @@ -672,13 +674,13 @@ GEM railties (>= 7.1.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) - tzinfo-data (1.2026.4) + tzinfo-data (1.2026.5) tzinfo (>= 1.0.0) unicode-display_width (3.3.0) unicode-emoji (~> 4.3) unicode-emoji (4.3.0) - uniform_notifier (1.18.0) - version_gem (1.1.15) + uniform_notifier (1.18.1) + version_gem (1.1.17) warden (1.2.9) rack (>= 2.0.9) web-console (4.2.1) @@ -686,7 +688,7 @@ GEM activemodel (>= 6.0.0) bindex (>= 0.4.0) railties (>= 6.0.0) - webmock (3.26.4) + webmock (3.34.0) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) @@ -750,7 +752,7 @@ DEPENDENCIES mocha mysql2 (~> 0.5.6) octokit - oj (~> 3.14.0) + oj (~> 3.17) omniauth-discord omniauth-github omniauth-rails_csrf_protection @@ -772,7 +774,7 @@ DEPENDENCIES rubocop-performance rubocop-rails ruby-openai - rubyzip (~> 2.3) + rubyzip (~> 3.4) rugged selenium-webdriver sentry-rails diff --git a/app/helpers/react_components/mentoring/testimonials_list.rb b/app/helpers/react_components/mentoring/testimonials_list.rb index 1d82ccdda8..89f4a422e8 100644 --- a/app/helpers/react_components/mentoring/testimonials_list.rb +++ b/app/helpers/react_components/mentoring/testimonials_list.rb @@ -30,8 +30,8 @@ def data memoize def tracks tracks = ::Track.where(id: current_user.mentor_testimonials. - joins(discussion: :request). - select(:track_id)) + joins(discussion: :request). + select(:track_id)) AssembleTracksForSelect.(tracks) end diff --git a/app/helpers/time_helper.rb b/app/helpers/time_helper.rb index 831c3fb959..843cdd9523 100644 --- a/app/helpers/time_helper.rb +++ b/app/helpers/time_helper.rb @@ -1,6 +1,6 @@ module TimeHelper def time_ago_in_words(time, short: false) - t = "#{super(time)}" # rubocop:disable Style/RedundantInterpolation Required to unfreeze string + t = "#{super(time)}" # rubocop:disable Style/RedundantInterpolation -- Required to unfreeze string t.gsub!(/^about /, '') t.gsub!(/^almost /, '') diff --git a/app/models/concept_exercise.rb b/app/models/concept_exercise.rb index 77ffeb1f6b..c135aedadb 100644 --- a/app/models/concept_exercise.rb +++ b/app/models/concept_exercise.rb @@ -17,8 +17,8 @@ def self.that_teach(concepts) def unlocked_exercises Exercise.where( id: taught_concepts. - joins(:exercise_prerequisites). - select('exercise_prerequisites.exercise_id') + joins(:exercise_prerequisites). + select('exercise_prerequisites.exercise_id') ) end diff --git a/app/models/github/pull_request.rb b/app/models/github/pull_request.rb index 61581b9975..edbf34f32b 100644 --- a/app/models/github/pull_request.rb +++ b/app/models/github/pull_request.rb @@ -16,7 +16,7 @@ class Github::PullRequest < ApplicationRecord foreign_key: "github_pull_request_id" memoize - def data =super.deep_symbolize_keys + def data = super.deep_symbolize_keys def state = super.to_sym end diff --git a/app/models/partner/advert.rb b/app/models/partner/advert.rb index 14b7052185..e8dfa3bf2c 100644 --- a/app/models/partner/advert.rb +++ b/app/models/partner/advert.rb @@ -20,7 +20,7 @@ def self.for_track(track) includes( light_logo_attachment: :blob, dark_logo_attachment: :blob, - partner: [light_logo_attachment: :blob, dark_logo_attachment: :blob] + partner: [{ light_logo_attachment: :blob, dark_logo_attachment: :blob }] ).find_by(id:) end diff --git a/config/initializers/json.rb b/config/initializers/json.rb index a26d0d3676..0b960f029b 100644 --- a/config/initializers/json.rb +++ b/config/initializers/json.rb @@ -4,7 +4,6 @@ require 'oj' Oj.optimize_rails -# rubocop:disable Security/JSONLoad class JSONWithIndifferentAccess def self.load(str) JSON.load(str, nil, symbolize_names: true, create_additions: false) @@ -16,4 +15,3 @@ def self.dump(obj) JSON.dump(obj) end end -# rubocop:enable Security/JSONLoad diff --git a/db/bootcamp_seeds.rb b/db/bootcamp_seeds.rb index 68a9ac6b14..803c25a2bb 100644 --- a/db/bootcamp_seeds.rb +++ b/db/bootcamp_seeds.rb @@ -1,4 +1,4 @@ -# rubocop:disable Layout/LineLength: +# rubocop:disable Layout/LineLength def concept_intro_for(slug) = File.read(Rails.root / "bootcamp_content/concepts/#{slug}.md") def project_config_for(slug) = JSON.parse(File.read(Rails.root / "bootcamp_content/projects/#{slug}/config.json"), @@ -13,7 +13,7 @@ def exercise_config_for(project_slug, exercise_slug) = JSON.parse( File.read(Rails.root / "bootcamp_content/projects/#{project_slug}/exercises/#{exercise_slug}/config.json"), symbolize_names: true ) -# rubocop:enable Layout/LineLength: +# rubocop:enable Layout/LineLength JSON.parse(File.read(Rails.root / "bootcamp_content/levels/config.json"), symbolize_names: true).each.with_index do |details, idx| idx += 1 diff --git a/package.json b/package.json index d6f01dd320..fc50f9d681 100644 --- a/package.json +++ b/package.json @@ -162,7 +162,6 @@ "@babel/preset-env": "^7.14.2", "@babel/preset-react": "^7.13.13", "@babel/preset-typescript": "^7.13.0", - "@happy-dom/global-registrator": "^15.11.6", "@jackfranklin/test-data-bot": "^1.3.0", "@prettier/plugin-ruby": "^0.18.2", "@testing-library/dom": "^9.3.1", diff --git a/test/commands/bootcamp/submission/create_test.rb b/test/commands/bootcamp/submission/create_test.rb index f9893b3bf9..ff74bc3ad7 100644 --- a/test/commands/bootcamp/submission/create_test.rb +++ b/test/commands/bootcamp/submission/create_test.rb @@ -7,8 +7,10 @@ class Bootcamp::Submission::CreateTest < ActiveSupport::TestCase test_results = { status: "fail", tests: [ - test_1: 'pass', - test_2: 'fail' + { + test_1: 'pass', + test_2: 'fail' + } ] } readonly_ranges = [{ from: '0', to: '4' }, { from: '6', to: '11' }] diff --git a/test/commands/exercise/representation/create_or_update_test.rb b/test/commands/exercise/representation/create_or_update_test.rb index 67576df675..afab8babd2 100644 --- a/test/commands/exercise/representation/create_or_update_test.rb +++ b/test/commands/exercise/representation/create_or_update_test.rb @@ -59,8 +59,8 @@ class Exercise::Representation::CreateOrUpdateTest < ActiveSupport::TestCase exercise = create :practice_exercise submission = create(:submission, exercise:, tests_status: :passed) create(:submission_representation, ast_digest:, submission:) - create :submission_representation, ast_digest:, submission: create(:submission, exercise:, tests_status: :passed) - create :submission_representation, ast_digest:, submission: create(:submission, exercise:, tests_status: :passed) + create :submission_representation, ast_digest:, submission: create(:submission, exercise:, tests_status: :passed) + create :submission_representation, ast_digest:, submission: create(:submission, exercise:, tests_status: :passed) representation = Exercise::Representation::CreateOrUpdate.(submission, ast, ast_digest, mapping, 1, 1, Time.current, "some_git_sha") diff --git a/test/commands/iteration/create_test.rb b/test/commands/iteration/create_test.rb index 34846f8063..03b3cea79f 100644 --- a/test/commands/iteration/create_test.rb +++ b/test/commands/iteration/create_test.rb @@ -55,10 +55,8 @@ class Iteration::CreateTest < ActiveSupport::TestCase solution = create :concept_solution submission = create(:submission, solution:) - Iteration::Create.(solution, submission) - assert enqueued_jobs.find do |job| - job["job_class"] == "MandateJob" && - job["arguments"][0] == "Iteration::GenerateSnippet" + assert_enqueued_with(job: MandateJob, args: ->(job_args) { job_args[0] == Iteration::GenerateSnippet.name }) do + Iteration::Create.(solution, submission) end end @@ -66,23 +64,18 @@ class Iteration::CreateTest < ActiveSupport::TestCase solution = create :concept_solution submission = create(:submission, solution:) - Iteration::Create.(solution, submission) - assert enqueued_jobs.find do |job| - job["job_class"] == "MandateJob" && - job["arguments"][0] == "Iteration::CountLinesOfCode" + assert_enqueued_with(job: MandateJob, args: ->(job_args) { job_args[0] == Iteration::CountLinesOfCode.name }) do + Iteration::Create.(solution, submission) end end test "enqueues PublishIteration job" do - solution = create :concept_solution + solution = create :concept_solution, published_at: Time.current submission = create(:submission, solution:) - Iteration::Create.(solution, submission) - assert enqueued_jobs.find do |job| - job["job_class"] == "MandateJob" && - job["arguments"][0] == "Iteration::PublishIteration" && - job["arguments"][1] == solution && - job["arguments"][2] == solution.published_iteration_id + publish_args = ->(job_args) { job_args[0] == Solution::PublishIteration.name && job_args[1] == solution } + assert_enqueued_with(job: MandateJob, args: publish_args) do + Iteration::Create.(solution, submission) end end diff --git a/test/commands/solution/search_community_solutions_test.rb b/test/commands/solution/search_community_solutions_test.rb index 65d79728f7..9abab6a74b 100644 --- a/test/commands/solution/search_community_solutions_test.rb +++ b/test/commands/solution/search_community_solutions_test.rb @@ -283,7 +283,7 @@ class Solution::SearchCommunitySolutionsTest < ActiveSupport::TestCase Solution::SearchCommunitySolutions::Fallback.expects(:call).with(exercise, 2, 15, :newest, "foobar", :passed, :failed, :up_to_date) OpenSearch::Client.expects(:new).raises - Solution::SearchCommunitySolutions.(exercise, page: 2, per: 15, order: "newest", criteria: "foobar", tests_status: :passed, head_tests_status: :failed, sync_status: :up_to_date) # rubocop:disable Layout:LineLength + Solution::SearchCommunitySolutions.(exercise, page: 2, per: 15, order: "newest", criteria: "foobar", tests_status: :passed, head_tests_status: :failed, sync_status: :up_to_date) # rubocop:disable Layout/LineLength end test "fallback is called when elasticsearch times out" do diff --git a/test/commands/solution/search_user_solutions_test.rb b/test/commands/solution/search_user_solutions_test.rb index b7e06002e5..c06f7135cc 100644 --- a/test/commands/solution/search_user_solutions_test.rb +++ b/test/commands/solution/search_user_solutions_test.rb @@ -360,7 +360,7 @@ class Solution::SearchUserSolutionsTest < ActiveSupport::TestCase assert_equal [ruby_bob_solution, ruby_food_solution, js_bob_solution], Solution::SearchUserSolutions::Fallback.(user, 1, 15, nil, nil, nil, nil, nil, nil, nil, nil) - assert_equal [ruby_bob_solution, ruby_food_solution, js_bob_solution], Solution::SearchUserSolutions::Fallback.(user, 1, 15, nil, nil, nil, " ", nil, nil, nil, nil) # rubocop:disable Layout:LineLength + assert_equal [ruby_bob_solution, ruby_food_solution, js_bob_solution], Solution::SearchUserSolutions::Fallback.(user, 1, 15, nil, nil, nil, " ", nil, nil, nil, nil) # rubocop:disable Layout/LineLength assert_equal [ruby_bob_solution, ruby_food_solution], Solution::SearchUserSolutions::Fallback.(user, 1, 15, nil, nil, nil, "ru", nil, nil, nil, nil) assert_equal [ruby_bob_solution, js_bob_solution], diff --git a/test/commands/user/challenges/featured_exercises_progress_12_in_23_test.rb b/test/commands/user/challenges/featured_exercises_progress_12_in_23_test.rb index 000ae81435..c4b909fa76 100644 --- a/test/commands/user/challenges/featured_exercises_progress_12_in_23_test.rb +++ b/test/commands/user/challenges/featured_exercises_progress_12_in_23_test.rb @@ -15,11 +15,11 @@ class User::Challenges::FeaturedExercisesProgress12In23Test < ActiveSupport::Tes progress = User::Challenges::FeaturedExercisesProgress12In23.(user.reload) expected_sieve = { slug: 'sieve', earned_for: 'nim', track_slugs: %w[c cpp d nim go rust vlang zig] } - assert_equal expected_sieve, (progress.find { |exercise_progress| exercise_progress[:slug] == 'sieve' }) + assert_equal(expected_sieve, progress.find { |exercise_progress| exercise_progress[:slug] == 'sieve' }) expected_raindrops = { slug: 'raindrops', earned_for: 'prolog', track_slugs: %w[ballerina pharo-smalltalk prolog red rust tcl unison] } - assert_equal expected_raindrops, (progress.find { |exercise_progress| exercise_progress[:slug] == 'raindrops' }) + assert_equal(expected_raindrops, progress.find { |exercise_progress| exercise_progress[:slug] == 'raindrops' }) end test "returns single result per exercise" do @@ -36,7 +36,7 @@ class User::Challenges::FeaturedExercisesProgress12In23Test < ActiveSupport::Tes progress = User::Challenges::FeaturedExercisesProgress12In23.(user.reload) expected = { slug: 'sieve', earned_for: 'nim', track_slugs: %w[c cpp d nim go rust vlang zig] } - assert_equal expected, (progress.find { |exercise_progress| exercise_progress[:slug] == 'sieve' }) + assert_equal(expected, progress.find { |exercise_progress| exercise_progress[:slug] == 'sieve' }) end test "ignore invalid track/exercise combination" do @@ -48,7 +48,7 @@ class User::Challenges::FeaturedExercisesProgress12In23Test < ActiveSupport::Tes progress = User::Challenges::FeaturedExercisesProgress12In23.(user.reload) expected = { slug: 'sieve', earned_for: nil, track_slugs: %w[c cpp d nim go rust vlang zig] } - assert_equal expected, (progress.find { |exercise_progress| exercise_progress[:slug] == 'sieve' }) + assert_equal(expected, progress.find { |exercise_progress| exercise_progress[:slug] == 'sieve' }) end test "include exercise if not published in 2023 and published for all featured tracks before 2023 " do @@ -63,24 +63,24 @@ class User::Challenges::FeaturedExercisesProgress12In23Test < ActiveSupport::Tes # Sanity check progress = User::Challenges::FeaturedExercisesProgress12In23.(user.reload) expected = { slug: 'etl', earned_for: nil, track_slugs: %w[julia python r] } - assert_equal expected, (progress.find { |exercise_progress| exercise_progress[:slug] == 'etl' }) + assert_equal(expected, progress.find { |exercise_progress| exercise_progress[:slug] == 'etl' }) # Sanity check create :practice_solution, :published, user:, exercise: julia_exercise_etl, published_at: Time.utc(2021, 2, 7) progress = User::Challenges::FeaturedExercisesProgress12In23.(user.reload) expected = { slug: 'etl', earned_for: nil, track_slugs: %w[julia python r] } - assert_equal expected, (progress.find { |exercise_progress| exercise_progress[:slug] == 'etl' }) + assert_equal(expected, progress.find { |exercise_progress| exercise_progress[:slug] == 'etl' }) # Sanity check create :practice_solution, :published, user:, exercise: python_exercise_etl, published_at: Time.utc(2021, 12, 30) progress = User::Challenges::FeaturedExercisesProgress12In23.(user.reload) expected = { slug: 'etl', earned_for: nil, track_slugs: %w[julia python r] } - assert_equal expected, (progress.find { |exercise_progress| exercise_progress[:slug] == 'etl' }) + assert_equal(expected, progress.find { |exercise_progress| exercise_progress[:slug] == 'etl' }) create :practice_solution, :published, user:, exercise: r_exercise_etl, published_at: Time.utc(2018, 8, 8) progress = User::Challenges::FeaturedExercisesProgress12In23.(user.reload) expected = { slug: 'etl', earned_for: 'julia', track_slugs: %w[julia python r] } - assert_equal expected, (progress.find { |exercise_progress| exercise_progress[:slug] == 'etl' }) + assert_equal(expected, progress.find { |exercise_progress| exercise_progress[:slug] == 'etl' }) end test "don't double count linked-list and simple-linked-list exercises" do @@ -99,26 +99,26 @@ class User::Challenges::FeaturedExercisesProgress12In23Test < ActiveSupport::Tes progress = User::Challenges::FeaturedExercisesProgress12In23.(user.reload) expected_linked_list = { slug: 'linked-list', earned_for: 'nim', track_slugs: %w[c cpp d nim go rust vlang zig] } - assert_equal expected_linked_list, (progress.find { |exercise_progress| exercise_progress[:slug] == 'linked-list' }) + assert_equal(expected_linked_list, progress.find { |exercise_progress| exercise_progress[:slug] == 'linked-list' }) assert_nil(progress.find { |exercise_progress| exercise_progress[:slug] == 'simple-linked-list' }) simple_linked_list_solution = create :practice_solution, :published, user:, exercise: simple_linked_list_exercise, published_at: Time.utc(2023, 3, 24) progress = User::Challenges::FeaturedExercisesProgress12In23.(user.reload) expected_linked_list = { slug: 'linked-list', earned_for: 'nim', track_slugs: %w[c cpp d nim go rust vlang zig] } - assert_equal expected_linked_list, (progress.find { |exercise_progress| exercise_progress[:slug] == 'linked-list' }) + assert_equal(expected_linked_list, progress.find { |exercise_progress| exercise_progress[:slug] == 'linked-list' }) assert_nil(progress.find { |exercise_progress| exercise_progress[:slug] == 'simple-linked-list' }) linked_list_solution.update(published_at: nil) progress = User::Challenges::FeaturedExercisesProgress12In23.(user.reload) expected_simple_linked_list = { slug: 'simple-linked-list', earned_for: 'nim', track_slugs: %w[c cpp d nim go rust vlang zig] } assert_nil(progress.find { |exercise_progress| exercise_progress[:slug] == 'linked-list' }) - assert_equal expected_simple_linked_list, (progress.find { |exercise_progress| exercise_progress[:slug] == 'simple-linked-list' }) + assert_equal(expected_simple_linked_list, progress.find { |exercise_progress| exercise_progress[:slug] == 'simple-linked-list' }) simple_linked_list_solution.update(published_at: nil) progress = User::Challenges::FeaturedExercisesProgress12In23.(user.reload) expected_linked_list = { slug: 'linked-list', earned_for: nil, track_slugs: %w[c cpp d nim go rust vlang zig] } - assert_equal expected_linked_list, (progress.find { |exercise_progress| exercise_progress[:slug] == 'linked-list' }) + assert_equal(expected_linked_list, progress.find { |exercise_progress| exercise_progress[:slug] == 'linked-list' }) assert_nil(progress.find { |exercise_progress| exercise_progress[:slug] == 'simple-linked-list' }) Solution.destroy_all @@ -131,7 +131,7 @@ class User::Challenges::FeaturedExercisesProgress12In23Test < ActiveSupport::Tes progress = User::Challenges::FeaturedExercisesProgress12In23.(user.reload) expected_simple_linked_list = { slug: 'simple-linked-list', earned_for: 'nim', track_slugs: %w[c cpp d nim go rust vlang zig] } assert_nil(progress.find { |exercise_progress| exercise_progress[:slug] == 'linked-list' }) - assert_equal expected_simple_linked_list, (progress.find { |exercise_progress| exercise_progress[:slug] == 'simple-linked-list' }) + assert_equal(expected_simple_linked_list, progress.find { |exercise_progress| exercise_progress[:slug] == 'simple-linked-list' }) Solution.destroy_all @@ -143,7 +143,7 @@ class User::Challenges::FeaturedExercisesProgress12In23Test < ActiveSupport::Tes progress = User::Challenges::FeaturedExercisesProgress12In23.(user.reload) expected_simple_linked_list = { slug: 'simple-linked-list', earned_for: 'nim', track_slugs: %w[c cpp d nim go rust vlang zig] } assert_nil(progress.find { |exercise_progress| exercise_progress[:slug] == 'linked-list' }) - assert_equal expected_simple_linked_list, (progress.find { |exercise_progress| exercise_progress[:slug] == 'simple-linked-list' }) + assert_equal(expected_simple_linked_list, progress.find { |exercise_progress| exercise_progress[:slug] == 'simple-linked-list' }) end test "lists exercises by order of appearance" do diff --git a/test/commands/user_track/generate_exercise_status_mapping_test.rb b/test/commands/user_track/generate_exercise_status_mapping_test.rb index 962c94430f..a666f25d60 100644 --- a/test/commands/user_track/generate_exercise_status_mapping_test.rb +++ b/test/commands/user_track/generate_exercise_status_mapping_test.rb @@ -36,6 +36,6 @@ class UserTrack::GenerateExerciseStatusMappingTest < ActiveSupport::TestCase mapping = UserTrack::GenerateExerciseStatusMapping.(user_track) - assert_equal [11, 5, 7, 9], (mapping['basics'].map { |e| e[:position] }) + assert_equal([11, 5, 7, 9], mapping['basics'].map { |e| e[:position] }) end end diff --git a/test/controllers/api/mentoring/representations_controller_test.rb b/test/controllers/api/mentoring/representations_controller_test.rb index e385364eda..abf86c1a78 100644 --- a/test/controllers/api/mentoring/representations_controller_test.rb +++ b/test/controllers/api/mentoring/representations_controller_test.rb @@ -109,7 +109,7 @@ class API::Mentoring::RepresentationsControllerTest < API::BaseTestCase filename: "log_line_parser.rb", type: "exercise", digest: nil, - content: "module LogLineParser\n def self.message(line)\n raise NotImplementedError, 'Please implement the LogLineParser.message method'\n end\n\n def self.log_level(line)\n raise NotImplementedError, 'Please implement the LogLineParser.log_level method'\n end\n\n def self.reformat(line)\n raise NotImplementedError, 'Please implement the LogLineParser.reformat method'\n end\nend\n" # rubocop:disable Layout/LineLength, + content: "module LogLineParser\n def self.message(line)\n raise NotImplementedError, 'Please implement the LogLineParser.message method'\n end\n\n def self.log_level(line)\n raise NotImplementedError, 'Please implement the LogLineParser.log_level method'\n end\n\n def self.reformat(line)\n raise NotImplementedError, 'Please implement the LogLineParser.reformat method'\n end\nend\n" # rubocop:disable Layout/LineLength } ], instructions: "

In this exercise you'll be processing log-lines.

\n

Each log line is a string formatted as follows: \"[<LEVEL>]: <MESSAGE>\".

\n

There are three different log levels:

\n\n

You have three tasks, each of which will take a log line and ask you to do something with it.

\n

1. Get message from a log line

\n

Implement the LogLineParser.message method to return a log line's message:

\n
LogLineParser.message('[ERROR]: Invalid operation')\n// Returns: \"Invalid operation\"\n
\n

Any leading or trailing white space should be removed:

\n
LogLineParser.message('[WARNING]:  Disk almost full\\r\\n')\n// Returns: \"Disk almost full\"\n
\n

2. Get log level from a log line

\n

Implement the LogLineParser.log_level method to return a log line's log level, which should be returned in lowercase:

\n
LogLineParser.log_level('[ERROR]: Invalid operation')\n// Returns: \"error\"\n
\n

3. Reformat a log line

\n

Implement the LogLineParser.reformat method that reformats the log line, putting the message first and the log level after it in parentheses:

\n
LogLineParser.reformat('[INFO]: Operation completed')\n// Returns: \"Operation completed (info)\"\n
\n", # rubocop:disable Layout/LineLength diff --git a/test/serializers/serialize_exercise_assignment_test.rb b/test/serializers/serialize_exercise_assignment_test.rb index b0f56195ae..b729c67b52 100644 --- a/test/serializers/serialize_exercise_assignment_test.rb +++ b/test/serializers/serialize_exercise_assignment_test.rb @@ -88,7 +88,7 @@ class SerializeExerciseAssignmentTest < ActiveSupport::TestCase serialized = SerializeExerciseAssignment.(solution) expected = [1, 2, 3] - assert_equal expected, (serialized[:tasks].map { |task| task[:id] }) + assert_equal(expected, serialized[:tasks].map { |task| task[:id] }) end test "serialize concept exercise task titles" do @@ -97,7 +97,7 @@ class SerializeExerciseAssignmentTest < ActiveSupport::TestCase serialized = SerializeExerciseAssignment.(solution) expected = ['Get message from a log line', 'Get log level from a log line', 'Reformat a log line'] - assert_equal expected, (serialized[:tasks].map { |task| task[:title] }) + assert_equal(expected, serialized[:tasks].map { |task| task[:title] }) end test "serialize concept exercise task text" do @@ -124,7 +124,7 @@ class SerializeExerciseAssignmentTest < ActiveSupport::TestCase HINT_3 - assert_equal expected, (serialized[:tasks].map { |task| task[:text] }) + assert_equal(expected, serialized[:tasks].map { |task| task[:text] }) end test "serialize concept exercise task hints" do @@ -151,7 +151,7 @@ class SerializeExerciseAssignmentTest < ActiveSupport::TestCase HINT_3 - assert_equal expected, (serialized[:tasks].map { |task| task[:hints] }) + assert_equal(expected, serialized[:tasks].map { |task| task[:hints] }) end test "serialize hints with reference links" do diff --git a/yarn.lock b/yarn.lock index 7fefe862cd..d892a85171 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1501,13 +1501,6 @@ resolved "https://registry.yarnpkg.com/@gleam-lang/highlight.js-gleam/-/highlight.js-gleam-1.5.0.tgz#ab9e43b88b2541a697bcf4d67711c7c4a28adcb3" integrity sha512-rKKpXnfmHVTPuHEogMVvN4DflzKtX6kBXqu1GsVDb0uDf/bvO8Z2VnC0XWUMuKNlxa+poKIjY6geyxTaVZiMFA== -"@happy-dom/global-registrator@^15.11.6": - version "15.11.7" - resolved "https://registry.yarnpkg.com/@happy-dom/global-registrator/-/global-registrator-15.11.7.tgz#690ce2c1f68ad35767672b62ef643a91a0f46d70" - integrity sha512-mfOoUlIw8VBiJYPrl5RZfMzkXC/z7gbSpi2ecycrj/gRWLq2CMV+Q+0G+JPjeOmuNFgg0skEIzkVFzVYFP6URw== - dependencies: - happy-dom "^15.11.7" - "@hotwired/stimulus@^3.2.2": version "3.2.2" resolved "https://registry.yarnpkg.com/@hotwired/stimulus/-/stimulus-3.2.2.tgz#071aab59c600fed95b97939e605ff261a4251608" @@ -1676,7 +1669,7 @@ "@types/node" "*" jest-regex-util "30.5.0" -"@jest/react-is-18@npm:react-is@^18.3.1", react-is@^18.0.0: +"@jest/react-is-18@npm:react-is@^18.3.1": version "18.3.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== @@ -4759,11 +4752,6 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== -entities@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" - integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== - env-paths@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" @@ -6034,15 +6022,6 @@ graphql@^15.3.0: resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.10.3.tgz#3f97c9d59f56847a725f1c6850d62f13c240c0ce" integrity sha512-e2ut+7oOFe5/jENYc+T7GZnL5lIBd7vcWg6TlqVx1L/MFXY3CKOsEcP+jMPgL8uwcfrllJRNSmqq5psZahdKZg== -happy-dom@^15.11.7: - version "15.11.7" - resolved "https://registry.yarnpkg.com/happy-dom/-/happy-dom-15.11.7.tgz#db9854f11e5dd3fd4ab20cbbcfdf7bd9e17cd971" - integrity sha512-KyrFvnl+J9US63TEzwoiJOQzZBJY7KgBushJA8X61DMbNsH+2ONkDuLDnCnwUiPTF42tLoEmrPyoqbenVA5zrg== - dependencies: - entities "^4.5.0" - webidl-conversions "^7.0.0" - whatwg-mimetype "^3.0.0" - har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" @@ -8366,10 +8345,10 @@ mz@^2.7.0: object-assign "^4.0.1" thenify-all "^1.0.0" -nanoid@^3.3.18: - version "3.3.19" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.19.tgz#336d4aa4bcd4fb24d2cddede7ffeae40bec03f0a" - integrity sha512-Y2tUNy4ouw6tq5oDSKeQYGOyhkUBhNOcGV/02KC+6kd9eDGqdZd++mjMiIDilrBYvjEnCYvVtsuHCuP+okSfug== +nanoid@^3.3.20: + version "3.3.20" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.20.tgz#dfd4444d85aa10111ef66ba85ed72e08ba0855d8" + integrity sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ== nanomatch@^1.2.9: version "1.2.13" @@ -9529,13 +9508,13 @@ postcss@^7.0.1: source-map "^0.6.1" postcss@^8.4.47, postcss@^8.5.28: - version "8.5.28" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.28.tgz#da4563a99a06e62d6c1cd1acae363224bcaed6e9" - integrity sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A== + version "8.5.32" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.32.tgz#fbccef8388a0c77508c713bfd37728d646595803" + integrity sha512-LJlKCCAUFKOuZxipUdYw1NzIITEsPcgyOG9LkvRJvuKj/bRzbuRY0ARXvL0pWGpsZvn8jku+LMep2eU0seHp8g== dependencies: - nanoid "^3.3.18" + nanoid "^3.3.20" picocolors "^1.1.1" - source-map-js "^1.2.1" + source-map-js "^1.2.2" prelude-ls@^1.2.1: version "1.2.1" @@ -9867,6 +9846,11 @@ react-is@^17.0.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== +react-is@^18.0.0: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" + integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== + react-lifecycles-compat@^3.0.0: version "3.0.4" resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" @@ -10644,10 +10628,10 @@ sorted-union-stream@~2.1.3: from2 "^1.3.0" stream-iterate "^1.1.0" -source-map-js@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" - integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== +source-map-js@^1.2.1, source-map-js@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.2.tgz#79fb88d97535a21cb27162cb05d211b67acea4ab" + integrity sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw== source-map-resolve@^0.5.0: version "0.5.3" @@ -11764,11 +11748,6 @@ webidl-conversions@^6.1.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== -webidl-conversions@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" - integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== - whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" @@ -11786,11 +11765,6 @@ whatwg-mimetype@^2.3.0: resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== -whatwg-mimetype@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" - integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== - whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"