diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml index bd5ae2eeae..6da744a849 100644 --- a/.github/workflows/release-drafter.yml +++ b/.github/workflows/release-drafter.yml @@ -13,6 +13,6 @@ jobs: runs-on: ubuntu-latest steps: # Drafts next release notes as Pull Requests are merged into "develop" - - uses: toolmantim/release-drafter@v5.22.0 + - uses: toolmantim/release-drafter@v5.23.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/Gemfile b/Gemfile index 109ed0b093..78471f6852 100644 --- a/Gemfile +++ b/Gemfile @@ -72,7 +72,7 @@ gem 'ruby-saml', '~> 1.15.0' # omniauth gem 'omniauth-google-oauth2', '~> 1.1.1' gem 'omniauth-oauth2', '~> 1.8.0' -gem 'omniauth_openid_connect', '~> 0.6.0' +gem 'omniauth_openid_connect', '~> 0.6.1' gem 'omniauth-rails_csrf_protection', '~> 1.0.1' # Json webtokens @@ -180,7 +180,7 @@ group :development do gem 'web-console', '~> 4.2.0' gem 'rb-readline', '~> 0.5.5' # require for irb - gem 'rubocop-rails', '~> 2.17.4' + gem 'rubocop-rails', '~> 2.18.0' # for opening letters gem 'letter_opener', '~> 1.8.1' diff --git a/Gemfile.lock b/Gemfile.lock index 843e9a4278..bc730d95af 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -84,7 +84,7 @@ GEM execjs (~> 2) bcrypt (3.1.18) bcrypt_pbkdf (1.1.0) - bindata (2.4.14) + bindata (2.4.15) bindex (0.8.1) bootsnap (1.16.0) msgpack (~> 1.2) @@ -121,7 +121,7 @@ GEM xpath (~> 3.2) codecov (0.6.0) simplecov (>= 0.15, < 0.22) - concurrent-ruby (1.2.0) + concurrent-ruby (1.2.2) counter_culture (3.3.0) activerecord (>= 4.2) activesupport (>= 4.2) @@ -216,7 +216,7 @@ GEM jsbundling-rails (1.1.1) railties (>= 6.0.0) json (2.6.3) - json-jwt (1.16.2) + json-jwt (1.16.3) activesupport (>= 4.2) aes_key_wrap bindata @@ -306,7 +306,7 @@ GEM omniauth-rails_csrf_protection (1.0.1) actionpack (>= 4.2) omniauth (~> 2.0) - omniauth_openid_connect (0.6.0) + omniauth_openid_connect (0.6.1) omniauth (>= 1.9, < 3) openid_connect (~> 1.1) openid_connect (1.4.2) @@ -322,7 +322,7 @@ GEM webfinger (~> 1.2) orm_adapter (0.5.0) parallel (1.22.1) - parser (3.1.3.0) + parser (3.2.1.0) ast (~> 2.4.1) premailer (1.18.0) addressable @@ -392,25 +392,25 @@ GEM rb-inotify (0.10.1) ffi (~> 1.0) rb-readline (0.5.5) - regexp_parser (2.6.1) + regexp_parser (2.7.0) responders (3.1.0) actionpack (>= 5.2) railties (>= 5.2) rexml (3.2.5) rouge (4.1.0) - rubocop (1.41.1) + rubocop (1.46.0) json (~> 2.3) parallel (~> 1.10) - parser (>= 3.1.2.1) + parser (>= 3.2.0.0) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 1.8, < 3.0) rexml (>= 3.2.5, < 4.0) - rubocop-ast (>= 1.23.0, < 2.0) + rubocop-ast (>= 1.26.0, < 2.0) ruby-progressbar (~> 1.7) - unicode-display_width (>= 1.4.0, < 3.0) - rubocop-ast (1.24.0) - parser (>= 3.1.1.0) - rubocop-rails (2.17.4) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.26.0) + parser (>= 3.2.1.0) + rubocop-rails (2.18.0) activesupport (>= 4.2.0) rack (>= 1.1) rubocop (>= 1.33.0, < 2.0) @@ -456,15 +456,15 @@ GEM activesupport (>= 3) attr_required (>= 0.0.5) httpclient (>= 2.4) - terser (1.1.13) + terser (1.1.14) execjs (>= 0.3.0, < 3) test-prof (1.2.0) thor (1.2.1) tilt (2.0.11) - timeout (0.3.1) + timeout (0.3.2) tzinfo (2.0.6) concurrent-ruby (~> 1.0) - unicode-display_width (2.3.0) + unicode-display_width (2.4.2) validate_email (0.1.6) activemodel (>= 3.0) mail (>= 2.2.5) @@ -553,7 +553,7 @@ DEPENDENCIES omniauth-google-oauth2 (~> 1.1.1) omniauth-oauth2 (~> 1.8.0) omniauth-rails_csrf_protection (~> 1.0.1) - omniauth_openid_connect (~> 0.6.0) + omniauth_openid_connect (~> 0.6.1) premailer-rails (~> 1.12.0) pretender (~> 0.4.0) puma (~> 6.1.0) @@ -564,7 +564,7 @@ DEPENDENCIES rails-i18n (~> 7.0.6) rb-readline (~> 0.5.5) rouge (= 4.1.0) - rubocop-rails (~> 2.17.4) + rubocop-rails (~> 2.18.0) ruby-saml (~> 1.15.0) rubyzip (~> 2.3.2) selenium-webdriver (~> 4.8.1) diff --git a/app/assets/stylesheets/bootstrap_style_overrides.css.scss b/app/assets/stylesheets/bootstrap_style_overrides.css.scss index 8af4fc8849..8f08f2945c 100644 --- a/app/assets/stylesheets/bootstrap_style_overrides.css.scss +++ b/app/assets/stylesheets/bootstrap_style_overrides.css.scss @@ -113,6 +113,10 @@ code { @include shadow-z5; } +.dropdown-divider { + overflow: visible; +} + // tables .table { margin-bottom: 0; diff --git a/app/models/institution.rb b/app/models/institution.rb index f945b81f13..90ea10a2a8 100644 --- a/app/models/institution.rb +++ b/app/models/institution.rb @@ -95,7 +95,8 @@ def self.similarity_matrix # we group by domain to get all institutions with the same domain, we update the similarity matrix for all pairs of institutions domains.group_by { |u| u[:domain] }.each do |_, institution| institution.combination(2).each do |i1, i2| - matrix[i1[:institution_id]][i2[:institution_id]] = [matrix[i1[:institution_id]][i2[:institution_id]], [i1[:count], i2[:count]].min].max + overlap = [i1[:count], i2[:count]].min + matrix[i1[:institution_id]][i2[:institution_id]] = [matrix[i1[:institution_id]][i2[:institution_id]], overlap].max matrix[i2[:institution_id]][i1[:institution_id]] = matrix[i1[:institution_id]][i2[:institution_id]] end end diff --git a/app/views/activities/_labels.html.erb b/app/views/activities/_labels.html.erb index 7a8bffea42..40d1f623a3 100644 --- a/app/views/activities/_labels.html.erb +++ b/app/views/activities/_labels.html.erb @@ -16,9 +16,9 @@ <% end %> ... <% elsif labels.any? %> - <% labels.each do |label| %> + <% labels.each_with_index do |label, index| %> - <%= label.name %>, + <%= label.name %><%= "," unless index == labels.count - 1 %> <% end %> <% end %> diff --git a/app/views/series/_form.html.erb b/app/views/series/_form.html.erb index f0f741d386..d6b1ba442c 100644 --- a/app/views/series/_form.html.erb +++ b/app/views/series/_form.html.erb @@ -49,8 +49,7 @@
- - <%= check_box_tag "series[progress_enabled]", "0", !@series.progress_enabled, class: "form-check-input" %> + <%= f.check_box :progress_enabled, {checked: !@series.progress_enabled, class: "form-check-input" }, '0', '1' %> <%= f.label :progress_enabled, t('.class_progress_disable'), class: 'form-check-label' %>
@@ -61,8 +60,7 @@
- - <%= check_box_tag "series[activities_visible]", "0", !@series.activities_visible, class: "form-check-input" %> + <%= f.check_box :activities_visible, {checked: !@series.activities_visible, class: "form-check-input" }, '0', '1' %> <%= f.label :activities_visible, t('.hide_activities'), class:"form-check-label" %>
@@ -73,7 +71,6 @@
- <%= f.check_box :activity_numbers_enabled, class: "form-check-input" %> <%= f.label :activity_numbers_enabled, t('.activity_numbers_enabled'), class:"form-check-label" %>
diff --git a/app/views/series/_series.html.erb b/app/views/series/_series.html.erb index d56c01f92b..e135512bc4 100644 --- a/app/views/series/_series.html.erb +++ b/app/views/series/_series.html.erb @@ -139,19 +139,19 @@ <% if current_user&.course_admin?(series.course) && series.hidden? %>
<%= t "series.show.series_not_visible" %> - <%= t('series.show.make_visible_html', series_url: series_path(series, series: {visibility: :open}), method: :patch) %> + <%= link_to t("series.show.make_visible_text"), series_path(series, series: {visibility: :open}), method: :patch, data: {confirm: t('general.are_you_sure')} %>
<% end %> <% if current_user&.course_admin?(series.course) && series.closed? %>
<%= t "series.show.series_not_accessible" %> - <%= t('series.show.make_visible_html', series_url: series_path(series, series: {visibility: :open}), method: :patch) %> + <%= link_to t("series.show.make_visible_text"), series_path(series, series: {visibility: :open}), method: :patch, data: {confirm: t('general.are_you_sure')} %>
<% end %> <% if current_user&.course_admin?(series.course) && !series.activities_visible %>
<%= t "series.show.activities_not_visible" %> - <%= t('series.show.make_visible_html', series_url: series_path(series, series: {activities_visible: true}), method: :patch) %> + <%= link_to t("series.show.make_visible_text"), series_path(series, series: {activities_visible: true}), method: :patch, data: {confirm: t('general.are_you_sure')} %>
<% end %>
diff --git a/config/initializers/00_version.rb b/config/initializers/00_version.rb index e40d89773e..dbb0012c2a 100644 --- a/config/initializers/00_version.rb +++ b/config/initializers/00_version.rb @@ -3,7 +3,7 @@ class Application module Version MAJOR = 6 MINOR = 6 - PATCH = 2 + PATCH = 3 STRING = [MAJOR, MINOR, PATCH].compact.join('.') end diff --git a/config/locales/views/series/en.yml b/config/locales/views/series/en.yml index b48510648c..1db66dcf29 100644 --- a/config/locales/views/series/en.yml +++ b/config/locales/views/series/en.yml @@ -24,7 +24,7 @@ en: activities: Learning activities download_submissions: Export my submissions download_all_solutions: Export student submissions - make_visible_html: "Make visible for students." + make_visible_text: Make visible for students. series_not_visible: This series is only visible for students using the secret link! series_not_accessible: This series is not accessible to students! activities_not_visible: The learning activities in this series are not visible to students! diff --git a/config/locales/views/series/nl.yml b/config/locales/views/series/nl.yml index cfede3cf20..7ccf49f229 100644 --- a/config/locales/views/series/nl.yml +++ b/config/locales/views/series/nl.yml @@ -24,7 +24,7 @@ nl: activities: Leeractiviteiten download_submissions: Mijn oplossingen exporteren download_all_solutions: Oplossingen van studenten exporteren - make_visible_html: "Maak zichtbaar voor studenten." + make_visible_text: "Maak zichtbaar voor studenten." series_not_visible: Deze reeks is enkel zichtbaar voor studenten via de geheime link! series_not_accessible: Deze reeks is niet toegankelijk voor studenten! activities_not_visible: De leeractiviteiten in deze reeks zijn niet zichtbaar voor studenten! diff --git a/package.json b/package.json index 29679bedfb..17a778b2d1 100644 --- a/package.json +++ b/package.json @@ -11,11 +11,11 @@ "typeCheck": "yarn tsc --skipLibCheck --noEmit" }, "dependencies": { - "@babel/core": "^7.20.12", - "@babel/plugin-proposal-decorators": "^7.20.13", - "@babel/plugin-transform-runtime": "^7.19.6", + "@babel/core": "^7.21.0", + "@babel/plugin-proposal-decorators": "^7.21.0", + "@babel/plugin-transform-runtime": "^7.21.0", "@babel/preset-env": "^7.20.2", - "@babel/preset-typescript": "^7.18.6", + "@babel/preset-typescript": "^7.21.0", "@dodona/papyros": "^1.0.1", "@popperjs/core": "^2.11.6", "@rails/activestorage": "^7.0.4", @@ -26,7 +26,7 @@ "babel-plugin-macros": "^3.1.0", "bootstrap": "5.2.0", "clipboard": "^2.0.11", - "core-js": "^3.28.0", + "core-js": "^3.29.0", "d3": "^7.8.2", "dayjs": "^1.11.7", "dragula": "^3.7.3", @@ -50,9 +50,9 @@ "@types/iframe-resizer": "^3.5.9", "@types/jest": "^27.5.0", "@types/serviceworker": "^0.0.62", - "@typescript-eslint/eslint-plugin": "^5.52.0", - "@typescript-eslint/parser": "^5.52.0", - "eslint": "^8.34.0", + "@typescript-eslint/eslint-plugin": "^5.54.0", + "@typescript-eslint/parser": "^5.54.0", + "eslint": "^8.35.0", "eslint-config-google": "^0.14.0", "eslint-plugin-jest": "^27.2.1", "eslint-plugin-lit": "^1.8.2", diff --git a/test/controllers/activities_controller_test.rb b/test/controllers/activities_controller_test.rb index 6d5d987e15..0a33c7b5a7 100644 --- a/test/controllers/activities_controller_test.rb +++ b/test/controllers/activities_controller_test.rb @@ -163,25 +163,25 @@ def setup start_exercises = Activity.exercises.count start_content = Activity.content_pages.count get activities_url(format: :json, type: ContentPage.name) - assert_equal start_content, JSON.parse(response.body).count + assert_equal start_content, response.parsed_body.count get activities_url(format: :json, type: Exercise.name) - assert_equal start_exercises, JSON.parse(response.body).count + assert_equal start_exercises, response.parsed_body.count end test 'should get activities with certain description languages available' do @instance = create(:exercise, :description_html) # @instance has a Dutch and Englisch description get activities_url(format: :json, description_languages: ['en']) - assert_equal 1, JSON.parse(response.body).count - assert_equal @instance.id, JSON.parse(response.body)[0]['id'] + assert_equal 1, response.parsed_body.count + assert_equal @instance.id, response.parsed_body[0]['id'] get activities_url(format: :json, description_languages: ['nl']) - assert_equal 1, JSON.parse(response.body).count - assert_equal @instance.id, JSON.parse(response.body)[0]['id'] + assert_equal 1, response.parsed_body.count + assert_equal @instance.id, response.parsed_body[0]['id'] get activities_url(format: :json, description_languages: %w[en nl]) - assert_equal 1, JSON.parse(response.body).count - assert_equal @instance.id, JSON.parse(response.body)[0]['id'] + assert_equal 1, response.parsed_body.count + assert_equal @instance.id, response.parsed_body[0]['id'] # create exercises to obtain all possible condition combinations create :exercise, description_en_present: true @@ -189,21 +189,21 @@ def setup create :exercise, description_nl_present: true, description_en_present: true get activities_url(format: :json, description_languages: ['nl']) - assert_equal 3, JSON.parse(response.body).count + assert_equal 3, response.parsed_body.count get activities_url(format: :json, description_languages: ['en']) - assert_equal 3, JSON.parse(response.body).count + assert_equal 3, response.parsed_body.count get activities_url(format: :json, description_languages: []) - assert_equal Exercise.count, JSON.parse(response.body).count # should yield all exercises + assert_equal Exercise.count, response.parsed_body.count # should yield all exercises end test 'should get activities filtered by judge' do judge = @instance.judge get activities_url(format: :json, judge_id: judge.id) - assert_equal Activity.where(judge: judge).count, JSON.parse(response.body).count - assert_equal @instance.id, JSON.parse(response.body)[0]['id'] + assert_equal Activity.where(judge: judge).count, response.parsed_body.count + assert_equal @instance.id, response.parsed_body[0]['id'] get activities_url(format: :json, judge_id: Judge.all.last.id + 1) - assert_equal 0, JSON.parse(response.body).count + assert_equal 0, response.parsed_body.count end test 'should get available activities for series' do @@ -221,7 +221,7 @@ def setup get available_activities_series_url(series, format: :json) assert_response :success - result_exercises = JSON.parse response.body + result_exercises = response.parsed_body assert result_exercises.any? { |ex| ex['id'] == @instance.id }, 'should contain exercise usable by course' assert result_exercises.any? { |ex| ex['id'] == other_exercise.id }, 'should contain exercise usable by repo admin' @@ -245,7 +245,7 @@ def setup get available_activities_series_url(series, labels: [label.name], format: :json) assert_response :success - result_exercises = JSON.parse response.body + result_exercises = response.parsed_body assert_equal 0, result_exercises.count, 'should not contain exercises' label.activities << @instance @@ -253,7 +253,7 @@ def setup get available_activities_series_url(series, labels: [label.name], format: :json) assert_response :success - result_exercises = JSON.parse response.body + result_exercises = response.parsed_body assert result_exercises.any? { |ex| ex['id'] == @instance.id }, 'should contain exercise with label' assert result_exercises.all? { |ex| ex['id'] != other_exercise.id }, 'should not contain exercise without label' @@ -275,7 +275,7 @@ def setup get available_activities_series_url(series, programming_language: programming_language.name, format: :json) assert_response :success - result_exercises = JSON.parse response.body + result_exercises = response.parsed_body assert_equal 0, result_exercises.count, 'should not contain exercises' @instance.update(programming_language: programming_language) @@ -283,7 +283,7 @@ def setup get available_activities_series_url(series, programming_language: programming_language.name, format: :json) assert_response :success - result_exercises = JSON.parse response.body + result_exercises = response.parsed_body assert result_exercises.any? { |ex| ex['id'] == @instance.id }, 'should contain exercise with programming language' assert result_exercises.all? { |ex| ex['id'] != other_exercise.id }, 'should not contain exercise with other programming language' @@ -305,7 +305,7 @@ def setup def assert_response_contains_activity(activity, msg = nil) assert_response :success - result_activities = JSON.parse response.body + result_activities = response.parsed_body assert result_activities.any? { |ex| ex['id'] == activity.id }, msg end @@ -349,7 +349,7 @@ def assert_response_contains_activity(activity, msg = nil) get series_activities_url(series, format: :json) assert_response :success - exercises_response = JSON.parse response.body + exercises_response = response.parsed_body assert_equal 2, exercises_response.count exercise_response_ids = exercises_response.pluck('id') @@ -583,7 +583,7 @@ def create_exercises_return_valid get activities_url, params: { format: :json } - exercises = JSON.parse response.body + exercises = response.parsed_body assert_equal start_activities + 1, exercises.length assert_includes exercises.pluck('id'), visible.id end @@ -596,7 +596,7 @@ def create_exercises_return_valid get activities_url, params: { format: :json } - exercises = JSON.parse response.body + exercises = response.parsed_body assert_equal 3, exercises.length - start end @@ -610,17 +610,17 @@ def create_exercises_return_valid s2.course.enrolled_members << @user create :correct_submission, user: @user, course: s1.course, exercise: ex get activity_url(ex, format: :json) - resp = JSON.parse response.body + resp = response.parsed_body assert resp['last_solution_is_best'] assert resp['has_solution'] assert resp['has_correct_solution'] get course_series_activity_url(s1.course, s1, ex, format: :json) - resp = JSON.parse response.body + resp = response.parsed_body assert resp['last_solution_is_best'] assert resp['has_solution'] assert resp['has_correct_solution'] get course_series_activity_url(s2.course, s2, ex, format: :json) - resp = JSON.parse response.body + resp = response.parsed_body assert resp['last_solution_is_best'] assert_not resp['has_solution'] assert_not resp['has_correct_solution'] @@ -636,13 +636,13 @@ def create_exercises_return_valid s2.course.enrolled_members << @user create :activity_read_state, activity: ra, user: @user, course: s1.course get activity_url(ra, format: :json) - resp = JSON.parse response.body + resp = response.parsed_body assert resp['has_read'] get course_series_activity_url(s1.course, s1, ra, format: :json) - resp = JSON.parse response.body + resp = response.parsed_body assert resp['has_read'] get course_series_activity_url(s2.course, s2, ra, format: :json) - resp = JSON.parse response.body + resp = response.parsed_body assert_not resp['has_read'] end @@ -746,7 +746,7 @@ class ExerciseDescriptionTest < ActionDispatch::IntegrationTest assert_response :success - exercise_json = JSON.parse response.body + exercise_json = response.parsed_body description_url = exercise_json['description_url'] assert description_url.include?(Rails.configuration.sandbox_host) @@ -771,7 +771,7 @@ class ExerciseDescriptionTest < ActionDispatch::IntegrationTest get series_activities_url(series, format: :json) assert_response :success - activities_json = JSON.parse response.body + activities_json = response.parsed_body assert_equal [exercise.id, other_exercise.id], activities_json.pluck('id') SeriesMembership.find_by(series: series, activity: exercise).update(order: 2) @@ -780,7 +780,7 @@ class ExerciseDescriptionTest < ActionDispatch::IntegrationTest get series_activities_url(series, format: :json) assert_response :success - activities_json = JSON.parse response.body + activities_json = response.parsed_body assert_equal [other_exercise.id, exercise.id], activities_json.pluck('id') end @@ -793,7 +793,7 @@ class ExerciseDescriptionTest < ActionDispatch::IntegrationTest get activities_url(format: :json) assert_response :success - activities_json = JSON.parse response.body + activities_json = response.parsed_body assert_equal [exercise.id, other_exercise.id], activities_json.pluck('id') create :series, exercises: [other_exercise] @@ -802,7 +802,7 @@ class ExerciseDescriptionTest < ActionDispatch::IntegrationTest get activities_url(format: :json) assert_response :success - activities_json = JSON.parse response.body + activities_json = response.parsed_body assert_equal [other_exercise.id, exercise.id], activities_json.pluck('id') end end diff --git a/test/controllers/activity_read_states_controller_test.rb b/test/controllers/activity_read_states_controller_test.rb index 62d8e23a0f..0c02277626 100644 --- a/test/controllers/activity_read_states_controller_test.rb +++ b/test/controllers/activity_read_states_controller_test.rb @@ -42,7 +42,7 @@ def setup get activity_read_states_url, params: { filter: 'abcd', format: :json } - assert_equal 1, JSON.parse(response.body).count + assert_equal 1, response.parsed_body.count end test 'should be able to search by user name' do @@ -54,7 +54,7 @@ def setup get activity_read_states_url, params: { filter: 'abcd', format: :json } - assert_equal 1, JSON.parse(response.body).count + assert_equal 1, response.parsed_body.count end test 'should be able to search by course label' do @@ -71,7 +71,7 @@ def setup create :activity_read_state, user: u2, activity: a1, course: course get course_activity_read_states_url course, params: { course_labels: ['test'], format: :json } - assert_equal 1, JSON.parse(response.body).count + assert_equal 1, response.parsed_body.count end test 'normal user should not be able to search by course label' do @@ -89,7 +89,7 @@ def setup create :activity_read_state, user: u2, activity: a1, course: course get course_activity_read_states_url course, params: { course_labels: ['test'], format: :json } - assert_equal 1, JSON.parse(response.body).count + assert_equal 1, response.parsed_body.count end test 'should not mark content_page as read twice' do diff --git a/test/controllers/annotations_controller_test.rb b/test/controllers/annotations_controller_test.rb index 555185b099..a1eff8ef07 100644 --- a/test/controllers/annotations_controller_test.rb +++ b/test/controllers/annotations_controller_test.rb @@ -65,7 +65,7 @@ def setup sign_in admin get questions_url(format: :json) - assert_equal 1, JSON.parse(response.body).count + assert_equal 1, response.parsed_body.count end test 'should be able to search by exercise name' do @@ -80,7 +80,7 @@ def setup get questions_url, params: { filter: 'abcd', format: :json } - assert_equal 1, JSON.parse(response.body).count + assert_equal 1, response.parsed_body.count end test 'should be able to search by user name' do @@ -93,7 +93,7 @@ def setup get questions_url, params: { filter: 'abcd', everything: true, format: :json } - assert_equal 1, JSON.parse(response.body).count + assert_equal 1, response.parsed_body.count end test 'should be able to filter by status' do @@ -106,7 +106,7 @@ def setup get questions_url, params: { question_state: 'answered', format: :json } - assert_equal 1, JSON.parse(response.body).count + assert_equal 1, response.parsed_body.count end test 'should be able to filter by course' do @@ -120,7 +120,7 @@ def setup # Filter mode get questions_url, params: { course_id: s1.course.id, format: :json } - assert_equal 1, JSON.parse(response.body).count + assert_equal 1, response.parsed_body.count end test 'should be able to filter by user' do @@ -132,7 +132,7 @@ def setup # Filter mode get questions_url, params: { user_id: s1.user_id, format: :json } - assert_equal 1, JSON.parse(response.body).count + assert_equal 1, response.parsed_body.count end test 'annotation index should contain all annotations user can see' do @@ -149,15 +149,15 @@ def setup create :annotation, user: other_user, submission: (create :submission, user: other_user, course: create(:course)) get annotations_url(format: :json) - assert_equal 5, JSON.parse(response.body).count + assert_equal 5, response.parsed_body.count sign_in course_admin get annotations_url(format: :json) - assert_equal 3, JSON.parse(response.body).count + assert_equal 3, response.parsed_body.count sign_in user get annotations_url(format: :json) - assert_equal 3, JSON.parse(response.body).count + assert_equal 3, response.parsed_body.count end test 'annotation index should be filterable by user' do @@ -171,10 +171,10 @@ def setup create :annotation, user: other_user, submission: (create :submission, user: other_user, course: create(:course)) get annotations_url(format: :json, user_id: user.id) - assert_equal 3, JSON.parse(response.body).count + assert_equal 3, response.parsed_body.count get annotations_url(format: :json, user_id: other_user.id) - assert_equal 2, JSON.parse(response.body).count + assert_equal 2, response.parsed_body.count end test 'user who created submission should be able to see the annotation' do diff --git a/test/controllers/api_tokens_controller_test.rb b/test/controllers/api_tokens_controller_test.rb index 422bd4aed8..917dbcab76 100644 --- a/test/controllers/api_tokens_controller_test.rb +++ b/test/controllers/api_tokens_controller_test.rb @@ -56,7 +56,7 @@ def fetch_root_with_token(token) test 'should login with token' do fetch_root_with_token(@token) assert_response :success - result = JSON.parse response.body + result = response.parsed_body assert_not_nil result['user'] assert_equal result['user']['email'], @user.email end diff --git a/test/controllers/courses_controller_test.rb b/test/controllers/courses_controller_test.rb index d4d51aefbb..a9ea37dcd0 100644 --- a/test/controllers/courses_controller_test.rb +++ b/test/controllers/courses_controller_test.rb @@ -527,7 +527,7 @@ def with_users_signed_in(users) @course.update(visibility: 'hidden') with_users_signed_in @admins do |who| get courses_url, params: { format: :json } - courses = JSON.parse response.body + courses = response.parsed_body assert courses.any? { |c| c['id'] == @course.id }, "#{who} should be able to see a hidden course of which he is course administrator" end end @@ -538,7 +538,7 @@ def with_users_signed_in(users) with_users_signed_in @not_subscribed do |who| get courses_url, params: { format: :json } if response.successful? - courses = JSON.parse response.body + courses = response.parsed_body assert_not courses.any? { |c| c['id'] == @course.id }, "#{who} should not be able to see a hidden course" else assert response.forbidden? || response.unauthorized? @@ -571,53 +571,53 @@ def with_users_signed_in(users) # all courses get courses_url, params: { format: :json } assert_response :success - courses = JSON.parse response.body + courses = response.parsed_body assert_equal 3, courses.length # my courses get courses_url, params: { format: :json, tab: 'my' } assert_response :success - courses = JSON.parse response.body + courses = response.parsed_body assert_equal 1, courses.length # institution courses get courses_url, params: { format: :json, tab: 'institution' } assert_response :success - courses = JSON.parse response.body + courses = response.parsed_body assert_equal 2, courses.length # copy courses get courses_url, params: { format: :json, copy_courses: true } assert_response :success - courses = JSON.parse response.body + courses = response.parsed_body assert_equal 3, courses.length # copy courses filtered get courses_url, params: { format: :json, copy_courses: true, filter: 'course' } assert_response :success - courses = JSON.parse response.body + courses = response.parsed_body assert_equal 2, courses.length # All courses filtered get courses_url, params: { format: :json, filter: 'greatest' } assert_response :success - courses = JSON.parse response.body + courses = response.parsed_body assert_equal 1, courses.length # Institution courses filtered get courses_url, params: { format: :json, filter: 'worst' } assert_response :success - courses = JSON.parse response.body + courses = response.parsed_body assert_equal 1, courses.length end test 'featured courses should only show featured courses' do get courses_url, params: { format: :json } assert_response :success - courses = JSON.parse response.body + courses = response.parsed_body assert_equal Course.count, courses.length get courses_url, params: { format: :json, tab: 'featured' } assert_response :success - courses = JSON.parse response.body + courses = response.parsed_body assert_equal 0, courses.length @course.update(featured: true) get courses_url, params: { format: :json, tab: 'featured' } assert_response :success - courses = JSON.parse response.body + courses = response.parsed_body assert_equal 1, courses.length end @@ -682,7 +682,7 @@ def with_users_signed_in(users) sign_in user new_course = build :course post courses_url, params: { course: { name: new_course.name, description: new_course.description, visibility: new_course.visibility, registration: new_course.registration, teacher: new_course.teacher }, copy_options: { base_id: course.id }, format: :json } - assert_equal 0, Course.find(JSON.parse(response.body)['id']).series.count + assert_equal 0, Course.find(response.parsed_body['id']).series.count end test 'hidden course page shown to unsubscribed student should include registration url with secret' do diff --git a/test/controllers/series_controller_test.rb b/test/controllers/series_controller_test.rb index aabc967f4b..8588e51d2e 100644 --- a/test/controllers/series_controller_test.rb +++ b/test/controllers/series_controller_test.rb @@ -223,7 +223,7 @@ def assert_show_and_overview(authorized, token: nil) assert_response :success - result_series = JSON.parse response.body + result_series = response.parsed_body assert_equal 1, result_series.count, 'expected only one (visible) series' @@ -239,7 +239,7 @@ def assert_show_and_overview(authorized, token: nil) assert_response :success - result_series = JSON.parse response.body + result_series = response.parsed_body assert_equal 3, result_series.count, 'expected all series (open, visible and closed)' end diff --git a/test/controllers/statistics_controller_test.rb b/test/controllers/statistics_controller_test.rb index 5316b546a5..7e797a5788 100644 --- a/test/controllers/statistics_controller_test.rb +++ b/test/controllers/statistics_controller_test.rb @@ -16,22 +16,22 @@ def setup # violin get violin_path format: :json, params: { series_id: series.id } - results = JSON.parse response.body + results = response.parsed_body assert_equal 2, results['data'].count # stacked get stacked_status_path format: :json, params: { series_id: series.id } - results = JSON.parse response.body + results = response.parsed_body assert_equal 2, results['data'].count # time series get timeseries_path format: :json, params: { series_id: series.id } - results = JSON.parse response.body + results = response.parsed_body assert_equal 2, results['data'].count # ctimeseries get cumulative_timeseries_path format: :json, params: { series_id: series.id } - results = JSON.parse response.body + results = response.parsed_body assert_equal 2, results['data'].count end end diff --git a/test/controllers/submissions_controller_test.rb b/test/controllers/submissions_controller_test.rb index 15291e12d0..70b5c8a86b 100644 --- a/test/controllers/submissions_controller_test.rb +++ b/test/controllers/submissions_controller_test.rb @@ -29,7 +29,7 @@ class SubmissionsControllerTest < ActionDispatch::IntegrationTest get course_activity_submissions_url c, e, most_recent_correct_per_user: true, format: :json - results = JSON.parse response.body + results = response.parsed_body result_ids = results.pluck('id') assert_equal submissions.count, result_ids.count @@ -48,7 +48,7 @@ class SubmissionsControllerTest < ActionDispatch::IntegrationTest get submissions_url, params: { filter: 'abcd', format: :json } - assert_equal 1, JSON.parse(response.body).count + assert_equal 1, response.parsed_body.count end test 'should be able to search by user name' do @@ -59,7 +59,7 @@ class SubmissionsControllerTest < ActionDispatch::IntegrationTest get submissions_url, params: { filter: 'abcd', format: :json } - assert_equal 1, JSON.parse(response.body).count + assert_equal 1, response.parsed_body.count end test 'should be able to search by status' do @@ -70,7 +70,7 @@ class SubmissionsControllerTest < ActionDispatch::IntegrationTest get submissions_url, params: { status: 'correct', format: :json } - assert_equal 1, JSON.parse(response.body).count + assert_equal 1, response.parsed_body.count end test 'should be able to search by course label' do @@ -84,7 +84,7 @@ class SubmissionsControllerTest < ActionDispatch::IntegrationTest create :submission, status: :wrong, user: u2, course: course get course_submissions_url course, params: { course_labels: ['test'], format: :json } - assert_equal 1, JSON.parse(response.body).count + assert_equal 1, response.parsed_body.count end test 'normal user should not be able to search by course label' do @@ -100,7 +100,7 @@ class SubmissionsControllerTest < ActionDispatch::IntegrationTest get course_submissions_url course, params: { course_labels: ['test'], format: :json } - assert_equal 1, JSON.parse(response.body).count + assert_equal 1, response.parsed_body.count end test 'submission http caching works' do diff --git a/test/controllers/users_controller_test.rb b/test/controllers/users_controller_test.rb index a11c3439ff..75dea1ed7f 100644 --- a/test/controllers/users_controller_test.rb +++ b/test/controllers/users_controller_test.rb @@ -34,7 +34,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest get user_url(@instance, format: :json) assert_response :success - user_json = JSON.parse(response.body) + user_json = response.parsed_body assert user_json.key?('subscribed_courses') course_ids = user_json['subscribed_courses'].pluck('id') diff --git a/yarn.lock b/yarn.lock index f423432a1e..4a18d153b6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,12 +2,13 @@ # yarn lockfile v1 -"@ampproject/remapping@^2.1.0": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.2.tgz#4edca94973ded9630d20101cd8559cedb8d8bd34" - integrity sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg== +"@ampproject/remapping@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" + integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== dependencies: - "@jridgewell/trace-mapping" "^0.3.0" + "@jridgewell/gen-mapping" "^0.1.0" + "@jridgewell/trace-mapping" "^0.3.9" "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.18.6": version "7.18.6" @@ -26,34 +27,35 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.10.tgz#9d92fa81b87542fff50e848ed585b4212c1d34ec" integrity sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg== -"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.20.12", "@babel/core@^7.7.5": - version "7.20.12" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.20.12.tgz#7930db57443c6714ad216953d1356dac0eb8496d" - integrity sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg== +"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.21.0", "@babel/core@^7.7.5": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.0.tgz#1341aefdcc14ccc7553fcc688dd8986a2daffc13" + integrity sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA== dependencies: - "@ampproject/remapping" "^2.1.0" + "@ampproject/remapping" "^2.2.0" "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.20.7" + "@babel/generator" "^7.21.0" "@babel/helper-compilation-targets" "^7.20.7" - "@babel/helper-module-transforms" "^7.20.11" - "@babel/helpers" "^7.20.7" - "@babel/parser" "^7.20.7" + "@babel/helper-module-transforms" "^7.21.0" + "@babel/helpers" "^7.21.0" + "@babel/parser" "^7.21.0" "@babel/template" "^7.20.7" - "@babel/traverse" "^7.20.12" - "@babel/types" "^7.20.7" + "@babel/traverse" "^7.21.0" + "@babel/types" "^7.21.0" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.2" semver "^6.3.0" -"@babel/generator@^7.20.7": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.7.tgz#f8ef57c8242665c5929fe2e8d82ba75460187b4a" - integrity sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw== +"@babel/generator@^7.21.0", "@babel/generator@^7.21.1": + version "7.21.1" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.1.tgz#951cc626057bc0af2c35cd23e9c64d384dea83dd" + integrity sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA== dependencies: - "@babel/types" "^7.20.7" + "@babel/types" "^7.21.0" "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" "@babel/helper-annotate-as-pure@^7.18.6": @@ -82,15 +84,15 @@ lru-cache "^5.1.1" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.20.12": - version "7.20.12" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz#4349b928e79be05ed2d1643b20b99bb87c503819" - integrity sha512-9OunRkbT0JQcednL0UFvbfXpAsUXiGjUk0a7sN8fUXX7Mue79cUSMjHGDRRi/Vz9vYlpIhLV5fMD5dKoMhhsNQ== +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.0.tgz#64f49ecb0020532f19b1d014b03bccaa1ab85fb9" + integrity sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" - "@babel/helper-member-expression-to-functions" "^7.20.7" + "@babel/helper-function-name" "^7.21.0" + "@babel/helper-member-expression-to-functions" "^7.21.0" "@babel/helper-optimise-call-expression" "^7.18.6" "@babel/helper-replace-supers" "^7.20.7" "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" @@ -165,6 +167,14 @@ "@babel/template" "^7.18.10" "@babel/types" "^7.19.0" +"@babel/helper-function-name@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz#d552829b10ea9f120969304023cd0645fa00b1b4" + integrity sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg== + dependencies: + "@babel/template" "^7.20.7" + "@babel/types" "^7.21.0" + "@babel/helper-hoist-variables@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" @@ -179,6 +189,13 @@ dependencies: "@babel/types" "^7.20.7" +"@babel/helper-member-expression-to-functions@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz#319c6a940431a133897148515877d2f3269c3ba5" + integrity sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q== + dependencies: + "@babel/types" "^7.21.0" + "@babel/helper-module-imports@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" @@ -186,10 +203,10 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.19.6", "@babel/helper-module-transforms@^7.20.11": - version "7.20.11" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz#df4c7af713c557938c50ea3ad0117a7944b2f1b0" - integrity sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg== +"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.19.6", "@babel/helper-module-transforms@^7.21.0": + version "7.21.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz#160caafa4978ac8c00ac66636cb0fa37b024e2d2" + integrity sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ== dependencies: "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-module-imports" "^7.18.6" @@ -197,8 +214,8 @@ "@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/traverse" "^7.21.2" + "@babel/types" "^7.21.2" "@babel/helper-optimise-call-expression@^7.18.6": version "7.18.6" @@ -287,10 +304,10 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== -"@babel/helper-validator-option@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" - integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== +"@babel/helper-validator-option@^7.18.6", "@babel/helper-validator-option@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz#8224c7e13ace4bafdc4004da2cf064ef42673180" + integrity sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ== "@babel/helper-wrap-function@^7.18.6": version "7.18.6" @@ -312,14 +329,14 @@ "@babel/traverse" "^7.18.11" "@babel/types" "^7.18.10" -"@babel/helpers@^7.20.7": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.7.tgz#04502ff0feecc9f20ecfaad120a18f011a8e6dce" - integrity sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA== +"@babel/helpers@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.21.0.tgz#9dd184fb5599862037917cdc9eecb84577dc4e7e" + integrity sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA== dependencies: "@babel/template" "^7.20.7" - "@babel/traverse" "^7.20.7" - "@babel/types" "^7.20.7" + "@babel/traverse" "^7.21.0" + "@babel/types" "^7.21.0" "@babel/highlight@^7.18.6": version "7.18.6" @@ -330,10 +347,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.7.tgz#66fe23b3c8569220817d5feb8b9dcdc95bb4f71b" - integrity sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.21.0", "@babel/parser@^7.21.2": + version "7.21.2" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.2.tgz#dacafadfc6d7654c3051a66d6fe55b6cb2f2a0b3" + integrity sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" @@ -378,16 +395,16 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-proposal-decorators@^7.20.13": - version "7.20.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.13.tgz#b6bea3b18e88443688fa7ed2cc06d2c60da9f4a7" - integrity sha512-7T6BKHa9Cpd7lCueHBBzP0nkXNina+h5giOZw+a8ZpMfPFY19VjJAjIxyFHuWkhCWgL6QMqRiY/wB1fLXzm6Mw== +"@babel/plugin-proposal-decorators@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.21.0.tgz#70e0c89fdcd7465c97593edb8f628ba6e4199d63" + integrity sha512-MfgX49uRrFUTL/HvWtmx3zmpyzMMr4MTj3d527MLlr/4RTT9G/ytFFP7qet2uM2Ve03b+BkpWUpK+lRXnQ+v9w== dependencies: - "@babel/helper-create-class-features-plugin" "^7.20.12" + "@babel/helper-create-class-features-plugin" "^7.21.0" "@babel/helper-plugin-utils" "^7.20.2" "@babel/helper-replace-supers" "^7.20.7" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/plugin-syntax-decorators" "^7.19.0" + "@babel/plugin-syntax-decorators" "^7.21.0" "@babel/plugin-proposal-dynamic-import@^7.18.6": version "7.18.6" @@ -519,12 +536,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-decorators@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.19.0.tgz#5f13d1d8fce96951bea01a10424463c9a5b3a599" - integrity sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ== +"@babel/plugin-syntax-decorators@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.21.0.tgz#d2b3f31c3e86fa86e16bb540b7660c55bd7d0e78" + integrity sha512-tIoPpGBR8UuM4++ccWN3gifhVvQu7ZizuR1fklhRJrd5ewgbkUS+0KVFeWWxELtn18NTLoW32XV7zyOgIAiz+w== dependencies: - "@babel/helper-plugin-utils" "^7.19.0" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" @@ -617,12 +634,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz#1c09cd25795c7c2b8a4ba9ae49394576d4133285" - integrity sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA== +"@babel/plugin-syntax-typescript@^7.20.0": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz#4e9a0cfc769c85689b77a2e642d24e9f697fc8c7" + integrity sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-transform-arrow-functions@^7.18.6": version "7.18.6" @@ -823,13 +840,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-runtime@^7.19.6": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz#9d2a9dbf4e12644d6f46e5e75bfbf02b5d6e9194" - integrity sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw== +"@babel/plugin-transform-runtime@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.21.0.tgz#2a884f29556d0a68cd3d152dcc9e6c71dfb6eee8" + integrity sha512-ReY6pxwSzEU0b3r2/T/VhqMKg/AkceBT19X0UptA3/tYi5Pe2eXgEUH+NNMC5nok6c6XQz5tyVTUpuezRfSMSg== dependencies: "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.19.0" + "@babel/helper-plugin-utils" "^7.20.2" babel-plugin-polyfill-corejs2 "^0.3.3" babel-plugin-polyfill-corejs3 "^0.6.0" babel-plugin-polyfill-regenerator "^0.4.1" @@ -871,14 +888,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-typescript@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.6.tgz#8f4ade1a9cf253e5cf7c7c20173082c2c08a50a7" - integrity sha512-ijHNhzIrLj5lQCnI6aaNVRtGVuUZhOXFLRVFs7lLrkXTHip4FKty5oAuQdk4tywG0/WjXmjTfQCWmuzrvFer1w== +"@babel/plugin-transform-typescript@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.0.tgz#f0956a153679e3b377ae5b7f0143427151e4c848" + integrity sha512-xo///XTPp3mDzTtrqXoBlK9eiAYW3wv9JXglcn/u1bi60RW11dEUxIgA8cbnDhutS1zacjMRmAwxE0gMklLnZg== dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-typescript" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.21.0" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-typescript" "^7.20.0" "@babel/plugin-transform-unicode-escapes@^7.18.10": version "7.18.10" @@ -987,14 +1004,14 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/preset-typescript@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz#ce64be3e63eddc44240c6358daefac17b3186399" - integrity sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ== +"@babel/preset-typescript@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.21.0.tgz#bcbbca513e8213691fe5d4b23d9251e01f00ebff" + integrity sha512-myc9mpoVA5m1rF8K8DgLEatOYFDpwC+RkMkjZ0Du6uI62YvDe8uxIEYVs/VCdSJ097nlALiU/yBC7//3nI+hNg== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-transform-typescript" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-validator-option" "^7.21.0" + "@babel/plugin-transform-typescript" "^7.21.0" "@babel/runtime@^7.12.5", "@babel/runtime@^7.8.4": version "7.17.9" @@ -1012,26 +1029,26 @@ "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.18.11", "@babel/traverse@^7.18.6", "@babel/traverse@^7.20.10", "@babel/traverse@^7.20.12", "@babel/traverse@^7.20.7": - version "7.20.12" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.12.tgz#7f0f787b3a67ca4475adef1f56cb94f6abd4a4b5" - integrity sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ== +"@babel/traverse@^7.1.0", "@babel/traverse@^7.18.11", "@babel/traverse@^7.18.6", "@babel/traverse@^7.20.7", "@babel/traverse@^7.21.0", "@babel/traverse@^7.21.2": + version "7.21.2" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.2.tgz#ac7e1f27658750892e815e60ae90f382a46d8e75" + integrity sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw== dependencies: "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.20.7" + "@babel/generator" "^7.21.1" "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" + "@babel/helper-function-name" "^7.21.0" "@babel/helper-hoist-variables" "^7.18.6" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.20.7" - "@babel/types" "^7.20.7" + "@babel/parser" "^7.21.2" + "@babel/types" "^7.21.2" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.7", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.7.tgz#54ec75e252318423fc07fb644dc6a58a64c09b7f" - integrity sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg== +"@babel/types@^7.0.0", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.2", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.21.2" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.2.tgz#92246f6e00f91755893c2876ad653db70c8310d1" + integrity sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw== dependencies: "@babel/helper-string-parser" "^7.19.4" "@babel/helper-validator-identifier" "^7.19.1" @@ -1178,10 +1195,10 @@ pyodide-worker-runner "^0.0.10" sync-message "^0.0.10" -"@eslint/eslintrc@^1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.4.1.tgz#af58772019a2d271b7e2d4c23ff4ddcba3ccfb3e" - integrity sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA== +"@eslint/eslintrc@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.0.tgz#943309d8697c52fc82c076e90c1c74fbbe69dbff" + integrity sha512-fluIaaV+GyV24CCu/ggiHdV+j4RNh85yQnAYS/G2mZODZgGmmlrgCydjUcV3YvxCm9x8nMAfThsqTni4KiXT4A== dependencies: ajv "^6.12.4" debug "^4.3.2" @@ -1193,6 +1210,11 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" +"@eslint/js@8.35.0": + version "8.35.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.35.0.tgz#b7569632b0b788a0ca0e438235154e45d42813a7" + integrity sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw== + "@humanwhocodes/config-array@^0.11.8": version "0.11.8" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9" @@ -1399,6 +1421,14 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" +"@jridgewell/gen-mapping@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" + integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": version "0.3.2" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" @@ -1408,12 +1438,12 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/resolve-uri@^3.0.3": +"@jridgewell/resolve-uri@3.1.0", "@jridgewell/resolve-uri@^3.0.3": version "3.1.0" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== -"@jridgewell/set-array@^1.0.1": +"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": version "1.1.2" resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== @@ -1426,18 +1456,18 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/sourcemap-codec@^1.4.10": +"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": version "1.4.14" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== -"@jridgewell/trace-mapping@^0.3.0": - version "0.3.4" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3" - integrity sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ== +"@jridgewell/trace-mapping@^0.3.17": + version "0.3.17" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" + integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" "@jridgewell/trace-mapping@^0.3.9": version "0.3.14" @@ -1960,14 +1990,14 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^5.52.0": - version "5.52.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.52.0.tgz#5fb0d43574c2411f16ea80f5fc335b8eaa7b28a8" - integrity sha512-lHazYdvYVsBokwCdKOppvYJKaJ4S41CgKBcPvyd0xjZNbvQdhn/pnJlGtQksQ/NhInzdaeaSarlBjDXHuclEbg== +"@typescript-eslint/eslint-plugin@^5.54.0": + version "5.54.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.54.0.tgz#2c821ad81b2c786d142279a8292090f77d1881f4" + integrity sha512-+hSN9BdSr629RF02d7mMtXhAJvDTyCbprNYJKrXETlul/Aml6YZwd90XioVbjejQeHbb3R8Dg0CkRgoJDxo8aw== dependencies: - "@typescript-eslint/scope-manager" "5.52.0" - "@typescript-eslint/type-utils" "5.52.0" - "@typescript-eslint/utils" "5.52.0" + "@typescript-eslint/scope-manager" "5.54.0" + "@typescript-eslint/type-utils" "5.54.0" + "@typescript-eslint/utils" "5.54.0" debug "^4.3.4" grapheme-splitter "^1.0.4" ignore "^5.2.0" @@ -1976,72 +2006,72 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/parser@^5.52.0": - version "5.52.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.52.0.tgz#73c136df6c0133f1d7870de7131ccf356f5be5a4" - integrity sha512-e2KiLQOZRo4Y0D/b+3y08i3jsekoSkOYStROYmPUnGMEoA0h+k2qOH5H6tcjIc68WDvGwH+PaOrP1XRzLJ6QlA== +"@typescript-eslint/parser@^5.54.0": + version "5.54.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.54.0.tgz#def186eb1b1dbd0439df0dacc44fb6d8d5c417fe" + integrity sha512-aAVL3Mu2qTi+h/r04WI/5PfNWvO6pdhpeMRWk9R7rEV4mwJNzoWf5CCU5vDKBsPIFQFjEq1xg7XBI2rjiMXQbQ== dependencies: - "@typescript-eslint/scope-manager" "5.52.0" - "@typescript-eslint/types" "5.52.0" - "@typescript-eslint/typescript-estree" "5.52.0" + "@typescript-eslint/scope-manager" "5.54.0" + "@typescript-eslint/types" "5.54.0" + "@typescript-eslint/typescript-estree" "5.54.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@5.52.0": - version "5.52.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.52.0.tgz#a993d89a0556ea16811db48eabd7c5b72dcb83d1" - integrity sha512-AR7sxxfBKiNV0FWBSARxM8DmNxrwgnYMPwmpkC1Pl1n+eT8/I2NAUPuwDy/FmDcC6F8pBfmOcaxcxRHspgOBMw== +"@typescript-eslint/scope-manager@5.54.0": + version "5.54.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.54.0.tgz#74b28ac9a3fc8166f04e806c957adb8c1fd00536" + integrity sha512-VTPYNZ7vaWtYna9M4oD42zENOBrb+ZYyCNdFs949GcN8Miwn37b8b7eMj+EZaq7VK9fx0Jd+JhmkhjFhvnovhg== dependencies: - "@typescript-eslint/types" "5.52.0" - "@typescript-eslint/visitor-keys" "5.52.0" + "@typescript-eslint/types" "5.54.0" + "@typescript-eslint/visitor-keys" "5.54.0" -"@typescript-eslint/type-utils@5.52.0": - version "5.52.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.52.0.tgz#9fd28cd02e6f21f5109e35496df41893f33167aa" - integrity sha512-tEKuUHfDOv852QGlpPtB3lHOoig5pyFQN/cUiZtpw99D93nEBjexRLre5sQZlkMoHry/lZr8qDAt2oAHLKA6Jw== +"@typescript-eslint/type-utils@5.54.0": + version "5.54.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.54.0.tgz#390717216eb61393a0cad2995da154b613ba7b26" + integrity sha512-WI+WMJ8+oS+LyflqsD4nlXMsVdzTMYTxl16myXPaCXnSgc7LWwMsjxQFZCK/rVmTZ3FN71Ct78ehO9bRC7erYQ== dependencies: - "@typescript-eslint/typescript-estree" "5.52.0" - "@typescript-eslint/utils" "5.52.0" + "@typescript-eslint/typescript-estree" "5.54.0" + "@typescript-eslint/utils" "5.54.0" debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/types@5.52.0": - version "5.52.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.52.0.tgz#19e9abc6afb5bd37a1a9bea877a1a836c0b3241b" - integrity sha512-oV7XU4CHYfBhk78fS7tkum+/Dpgsfi91IIDy7fjCyq2k6KB63M6gMC0YIvy+iABzmXThCRI6xpCEyVObBdWSDQ== +"@typescript-eslint/types@5.54.0": + version "5.54.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.54.0.tgz#7d519df01f50739254d89378e0dcac504cab2740" + integrity sha512-nExy+fDCBEgqblasfeE3aQ3NuafBUxZxgxXcYfzYRZFHdVvk5q60KhCSkG0noHgHRo/xQ/BOzURLZAafFpTkmQ== -"@typescript-eslint/typescript-estree@5.52.0": - version "5.52.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.52.0.tgz#6408cb3c2ccc01c03c278cb201cf07e73347dfca" - integrity sha512-WeWnjanyEwt6+fVrSR0MYgEpUAuROxuAH516WPjUblIrClzYJj0kBbjdnbQXLpgAN8qbEuGywiQsXUVDiAoEuQ== +"@typescript-eslint/typescript-estree@5.54.0": + version "5.54.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.54.0.tgz#f6f3440cabee8a43a0b25fa498213ebb61fdfe99" + integrity sha512-X2rJG97Wj/VRo5YxJ8Qx26Zqf0RRKsVHd4sav8NElhbZzhpBI8jU54i6hfo9eheumj4oO4dcRN1B/zIVEqR/MQ== dependencies: - "@typescript-eslint/types" "5.52.0" - "@typescript-eslint/visitor-keys" "5.52.0" + "@typescript-eslint/types" "5.54.0" + "@typescript-eslint/visitor-keys" "5.54.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.52.0", "@typescript-eslint/utils@^5.10.0": - version "5.52.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.52.0.tgz#b260bb5a8f6b00a0ed51db66bdba4ed5e4845a72" - integrity sha512-As3lChhrbwWQLNk2HC8Ree96hldKIqk98EYvypd3It8Q1f8d5zWyIoaZEp2va5667M4ZyE7X8UUR+azXrFl+NA== +"@typescript-eslint/utils@5.54.0", "@typescript-eslint/utils@^5.10.0": + version "5.54.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.54.0.tgz#3db758aae078be7b54b8ea8ea4537ff6cd3fbc21" + integrity sha512-cuwm8D/Z/7AuyAeJ+T0r4WZmlnlxQ8wt7C7fLpFlKMR+dY6QO79Cq1WpJhvZbMA4ZeZGHiRWnht7ZJ8qkdAunw== dependencies: "@types/json-schema" "^7.0.9" "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.52.0" - "@typescript-eslint/types" "5.52.0" - "@typescript-eslint/typescript-estree" "5.52.0" + "@typescript-eslint/scope-manager" "5.54.0" + "@typescript-eslint/types" "5.54.0" + "@typescript-eslint/typescript-estree" "5.54.0" eslint-scope "^5.1.1" eslint-utils "^3.0.0" semver "^7.3.7" -"@typescript-eslint/visitor-keys@5.52.0": - version "5.52.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.52.0.tgz#e38c971259f44f80cfe49d97dbffa38e3e75030f" - integrity sha512-qMwpw6SU5VHCPr99y274xhbm+PRViK/NATY6qzt+Et7+mThGuFSl/ompj2/hrBlRP/kq+BFdgagnOSgw9TB0eA== +"@typescript-eslint/visitor-keys@5.54.0": + version "5.54.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.54.0.tgz#846878afbf0cd67c19cfa8d75947383d4490db8f" + integrity sha512-xu4wT7aRCakGINTLGeyGqDn+78BwFlggwBjnHa1ar/KaGagnmwLYmlrXIrgAaQ3AE1Vd6nLfKASm7LrFHNbKGA== dependencies: - "@typescript-eslint/types" "5.52.0" + "@typescript-eslint/types" "5.54.0" eslint-visitor-keys "^3.3.0" "@webassemblyjs/ast@1.11.1": @@ -2888,10 +2918,10 @@ core-js-compat@^3.25.1: dependencies: browserslist "^4.21.4" -core-js@^3.28.0: - version "3.28.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.28.0.tgz#ed8b9e99c273879fdfff0edfc77ee709a5800e4a" - integrity sha512-GiZn9D4Z/rSYvTeg1ljAIsEqFm0LaN9gVtwDCrKL80zHtS31p9BAjmTxVqTQDMpwlMolJZOFntUG2uwyj7DAqw== +core-js@^3.29.0: + version "3.29.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.29.0.tgz#0273e142b67761058bcde5615c503c7406b572d6" + integrity sha512-VG23vuEisJNkGl6XQmFJd3rEG/so/CNatqeE+7uZAwTSwFeB/qaO0be8xZYUNWprJ/GIwL8aMt9cj1kvbpTZhg== cosmiconfig@^7.0.0, cosmiconfig@^7.1.0: version "7.1.0" @@ -3618,12 +3648,13 @@ eslint-visitor-keys@^3.3.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== -eslint@^8.34.0: - version "8.34.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.34.0.tgz#fe0ab0ef478104c1f9ebc5537e303d25a8fb22d6" - integrity sha512-1Z8iFsucw+7kSqXNZVslXS8Ioa4u2KM7GPwuKtkTFAqZ/cHMcEaR+1+Br0wLlot49cNxIiZk5wp8EAbPcYZxTg== +eslint@^8.35.0: + version "8.35.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.35.0.tgz#fffad7c7e326bae606f0e8f436a6158566d42323" + integrity sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw== dependencies: - "@eslint/eslintrc" "^1.4.1" + "@eslint/eslintrc" "^2.0.0" + "@eslint/js" "8.35.0" "@humanwhocodes/config-array" "^0.11.8" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" @@ -3637,7 +3668,7 @@ eslint@^8.34.0: eslint-utils "^3.0.0" eslint-visitor-keys "^3.3.0" espree "^9.4.0" - esquery "^1.4.0" + esquery "^1.4.2" esutils "^2.0.2" fast-deep-equal "^3.1.3" file-entry-cache "^6.0.1" @@ -3677,10 +3708,10 @@ esprima@^4.0.0, esprima@^4.0.1: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== +esquery@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.2.tgz#c6d3fee05dd665808e2ad870631f221f5617b1d1" + integrity sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng== dependencies: estraverse "^5.1.0"