diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 764455b4..7798415a 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -33,7 +33,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v3.1.0 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/retrospring.yml b/.github/workflows/retrospring.yml index ccae2081..d0147b68 100644 --- a/.github/workflows/retrospring.yml +++ b/.github/workflows/retrospring.yml @@ -41,7 +41,7 @@ jobs: BUNDLE_WITHOUT: 'production' steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3.1.0 - name: Install dependencies run: sudo apt update && sudo apt-get install -y libpq-dev libxml2-dev libxslt1-dev libmagickwand-dev imagemagick libidn11-dev - name: Set up Ruby @@ -61,7 +61,7 @@ jobs: npm i -g yarn yarn install --frozen-lockfile - name: Export i18n JS files - run: bundle exec rails i18n:js:export + run: bundle exec i18n export - name: Compile assets run: bundle exec rake assets:precompile @@ -82,7 +82,7 @@ jobs: lint: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3.1.0 - name: Install dependencies run: sudo apt update && sudo apt-get install -y libpq-dev libxml2-dev libxslt1-dev libmagickwand-dev imagemagick libidn11-dev - name: Set up Ruby diff --git a/.gitignore b/.gitignore index 46743497..499e744c 100644 --- a/.gitignore +++ b/.gitignore @@ -24,7 +24,7 @@ coverage/ *~ # dont push generated js translations to repository -/app/javascript/retrospring/i18n.ts +/app/javascript/retrospring/i18n.json # every fucking time, dolphin .directory diff --git a/Gemfile b/Gemfile index b597d654..880832ce 100644 --- a/Gemfile +++ b/Gemfile @@ -2,21 +2,21 @@ source "https://rubygems.org" -gem "i18n-js", "3.9.2" +gem "i18n-js", "4.0" gem "rails", "~> 6.1" gem "rails-i18n", "~> 6.0" gem "pg" gem "jbuilder", "~> 2.10" -gem "sass-rails", "~> 5.0" +gem "sassc-rails" gem "turbo-rails" gem "bcrypt", "~> 3.1.18" gem "active_model_otp" gem "bootsnap", require: false -gem "bootstrap_form" +gem "bootstrap_form", "~> 4.5" gem "carrierwave", "~> 2.0" gem "carrierwave_backgrounder", git: "https://github.com/mltnhm/carrierwave_backgrounder.git" gem "colorize" @@ -70,7 +70,7 @@ gem "jwt", "~> 2.5" group :development do gem "binding_of_caller" gem "byebug" - gem "spring", "~> 4.0" + gem "spring", "~> 4.1" gem "web-console", "~> 4.0" end @@ -96,7 +96,7 @@ group :development, :test do gem "rspec-sidekiq", "~> 3.0", require: false gem "rubocop", "~> 1.36" gem "rubocop-rails", "~> 2.16" - gem "shoulda-matchers", "~> 5.0" + gem "shoulda-matchers", "~> 5.2" gem "simplecov", require: false gem "simplecov-cobertura", require: false gem "simplecov-json", require: false diff --git a/Gemfile.lock b/Gemfile.lock index fe42e05a..d18ddfac 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -9,40 +9,40 @@ GIT GEM remote: https://rubygems.org/ specs: - actioncable (6.1.6.1) - actionpack (= 6.1.6.1) - activesupport (= 6.1.6.1) + actioncable (6.1.7) + actionpack (= 6.1.7) + activesupport (= 6.1.7) nio4r (~> 2.0) websocket-driver (>= 0.6.1) - actionmailbox (6.1.6.1) - actionpack (= 6.1.6.1) - activejob (= 6.1.6.1) - activerecord (= 6.1.6.1) - activestorage (= 6.1.6.1) - activesupport (= 6.1.6.1) + actionmailbox (6.1.7) + actionpack (= 6.1.7) + activejob (= 6.1.7) + activerecord (= 6.1.7) + activestorage (= 6.1.7) + activesupport (= 6.1.7) mail (>= 2.7.1) - actionmailer (6.1.6.1) - actionpack (= 6.1.6.1) - actionview (= 6.1.6.1) - activejob (= 6.1.6.1) - activesupport (= 6.1.6.1) + actionmailer (6.1.7) + actionpack (= 6.1.7) + actionview (= 6.1.7) + activejob (= 6.1.7) + activesupport (= 6.1.7) mail (~> 2.5, >= 2.5.4) rails-dom-testing (~> 2.0) - actionpack (6.1.6.1) - actionview (= 6.1.6.1) - activesupport (= 6.1.6.1) + actionpack (6.1.7) + actionview (= 6.1.7) + activesupport (= 6.1.7) rack (~> 2.0, >= 2.0.9) rack-test (>= 0.6.3) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.2.0) - actiontext (6.1.6.1) - actionpack (= 6.1.6.1) - activerecord (= 6.1.6.1) - activestorage (= 6.1.6.1) - activesupport (= 6.1.6.1) + actiontext (6.1.7) + actionpack (= 6.1.7) + activerecord (= 6.1.7) + activestorage (= 6.1.7) + activesupport (= 6.1.7) nokogiri (>= 1.8.5) - actionview (6.1.6.1) - activesupport (= 6.1.6.1) + actionview (6.1.7) + activesupport (= 6.1.7) builder (~> 3.1) erubi (~> 1.4) rails-dom-testing (~> 2.0) @@ -50,26 +50,26 @@ GEM active_model_otp (2.3.1) activemodel rotp (~> 6.2.0) - activejob (6.1.6.1) - activesupport (= 6.1.6.1) + activejob (6.1.7) + activesupport (= 6.1.7) globalid (>= 0.3.6) - activemodel (6.1.6.1) - activesupport (= 6.1.6.1) + activemodel (6.1.7) + activesupport (= 6.1.7) activemodel-serializers-xml (1.0.2) activemodel (> 5.x) activesupport (> 5.x) builder (~> 3.1) - activerecord (6.1.6.1) - activemodel (= 6.1.6.1) - activesupport (= 6.1.6.1) - activestorage (6.1.6.1) - actionpack (= 6.1.6.1) - activejob (= 6.1.6.1) - activerecord (= 6.1.6.1) - activesupport (= 6.1.6.1) + activerecord (6.1.7) + activemodel (= 6.1.7) + activesupport (= 6.1.7) + activestorage (6.1.7) + actionpack (= 6.1.7) + activejob (= 6.1.7) + activerecord (= 6.1.7) + activesupport (= 6.1.7) marcel (~> 1.0) mini_mime (>= 1.1.0) - activesupport (6.1.6.1) + activesupport (6.1.7) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 1.6, < 2) minitest (>= 5.1) @@ -88,7 +88,7 @@ GEM debug_inspector (>= 0.0.1) bootsnap (1.13.0) msgpack (~> 1.2) - bootstrap_form (5.1.0) + bootstrap_form (4.5.0) actionpack (>= 5.2) activemodel (>= 5.2) brakeman (5.3.1) @@ -140,7 +140,6 @@ GEM devise-i18n (1.10.2) devise (>= 4.8.0) diff-lcs (1.5.0) - digest (3.1.0) docile (1.4.0) domain_name (0.5.20190701) unf (>= 0.0.5, < 1.0.0) @@ -198,6 +197,7 @@ GEM fog-core nokogiri (>= 1.5.11, < 2.0.0) formatador (1.1.0) + glob (0.3.1) globalid (1.0.0) activesupport (>= 5.0) guard (2.18.0) @@ -217,8 +217,8 @@ GEM haml (5.2.2) temple (>= 0.8.0) tilt - haml_lint (0.40.1) - haml (>= 4.0, < 5.3) + haml_lint (0.42.0) + haml (>= 4.0, < 6.1) parallel (~> 1.10) rainbow rubocop (>= 0.50.0) @@ -242,8 +242,9 @@ GEM multi_xml (>= 0.5.2) i18n (1.12.0) concurrent-ruby (~> 1.0) - i18n-js (3.9.2) - i18n (>= 0.6.6) + i18n-js (4.0.0) + glob + i18n idn-ruby (0.1.4) image_processing (1.12.2) mini_magick (>= 4.9.5, < 5) @@ -277,7 +278,7 @@ GEM activesupport (>= 4) railties (>= 4) request_store (~> 1.0) - loofah (2.18.0) + loofah (2.19.0) crass (~> 1.0.2) nokogiri (>= 1.5.9) lumberjack (1.2.8) @@ -305,20 +306,14 @@ GEM naught (1.1.0) nenv (0.3.0) nested_form (0.3.2) - net-imap (0.2.3) - digest + net-imap (0.3.1) net-protocol - strscan - net-pop (0.1.1) - digest + net-pop (0.1.2) net-protocol - timeout net-protocol (0.1.3) timeout - net-smtp (0.3.1) - digest + net-smtp (0.3.2) net-protocol - timeout nio4r (2.5.8) nokogiri (1.13.8) mini_portile2 (~> 2.8.0) @@ -346,8 +341,8 @@ GEM parser (3.1.2.1) ast (~> 2.4.1) pg (1.4.3) - pghero (2.8.3) - activerecord (>= 5) + pghero (3.0.1) + activerecord (>= 6) poltergeist (1.18.1) capybara (>= 2.1, < 4) cliver (~> 0.3.1) @@ -367,20 +362,20 @@ GEM rack rack-test (2.0.2) rack (>= 1.3) - rails (6.1.6.1) - actioncable (= 6.1.6.1) - actionmailbox (= 6.1.6.1) - actionmailer (= 6.1.6.1) - actionpack (= 6.1.6.1) - actiontext (= 6.1.6.1) - actionview (= 6.1.6.1) - activejob (= 6.1.6.1) - activemodel (= 6.1.6.1) - activerecord (= 6.1.6.1) - activestorage (= 6.1.6.1) - activesupport (= 6.1.6.1) + rails (6.1.7) + actioncable (= 6.1.7) + actionmailbox (= 6.1.7) + actionmailer (= 6.1.7) + actionpack (= 6.1.7) + actiontext (= 6.1.7) + actionview (= 6.1.7) + activejob (= 6.1.7) + activemodel (= 6.1.7) + activerecord (= 6.1.7) + activestorage (= 6.1.7) + activesupport (= 6.1.7) bundler (>= 1.15.0) - railties (= 6.1.6.1) + railties (= 6.1.7) sprockets-rails (>= 2.0.0) rails-controller-testing (1.0.5) actionpack (>= 5.0.1.rc1) @@ -400,9 +395,9 @@ GEM nested_form (~> 0.3) rails (>= 6.0, < 8) turbo-rails (~> 1.0) - railties (6.1.6.1) - actionpack (= 6.1.6.1) - activesupport (= 6.1.6.1) + railties (6.1.7) + actionpack (= 6.1.7) + activesupport (= 6.1.7) method_source rake (>= 12.2) thor (~> 1.0) @@ -413,7 +408,7 @@ GEM ffi (~> 1.0) redcarpet (3.5.1) redis (4.5.1) - regexp_parser (2.5.0) + regexp_parser (2.6.0) request_store (1.5.1) rack (>= 1.4) responders (3.0.1) @@ -461,7 +456,7 @@ GEM unicode-display_width (>= 1.4.0, < 3.0) rubocop-ast (1.21.0) parser (>= 3.1.1.0) - rubocop-rails (2.16.0) + rubocop-rails (2.16.1) activesupport (>= 4.2.0) rack (>= 1.1) rubocop (>= 1.33.0, < 2.0) @@ -471,28 +466,25 @@ GEM sanitize (6.0.0) crass (~> 1.0.2) nokogiri (>= 1.12.0) - sass (3.7.4) - sass-listen (~> 4.0.0) - sass-listen (4.0.0) - rb-fsevent (~> 0.9, >= 0.9.4) - rb-inotify (~> 0.9, >= 0.9.7) - sass-rails (5.1.0) - railties (>= 5.2.0) - sass (~> 3.1) - sprockets (>= 2.8, < 4.0) - sprockets-rails (>= 2.0, < 4.0) - tilt (>= 1.1, < 3) + sassc (2.4.0) + ffi (~> 1.9) + sassc-rails (2.1.2) + railties (>= 4.0.0) + sassc (>= 2.0) + sprockets (> 3.0) + sprockets-rails + tilt semantic_range (3.0.0) - sentry-rails (5.4.2) + sentry-rails (5.5.0) railties (>= 5.0) - sentry-ruby (~> 5.4.2) - sentry-ruby (5.4.2) + sentry-ruby (~> 5.5.0) + sentry-ruby (5.5.0) concurrent-ruby (~> 1.0, >= 1.0.2) - sentry-sidekiq (5.4.2) - sentry-ruby (~> 5.4.2) + sentry-sidekiq (5.5.0) + sentry-ruby (~> 5.5.0) sidekiq (>= 3.0) shellany (0.0.1) - shoulda-matchers (5.1.0) + shoulda-matchers (5.2.0) activesupport (>= 5.2.0) sidekiq (5.2.10) connection_pool (~> 2.2, >= 2.2.2) @@ -512,7 +504,7 @@ GEM json simplecov simplecov_json_formatter (0.1.3) - spring (4.0.0) + spring (4.1.0) sprockets (3.7.2) concurrent-ruby (~> 1.0) rack (> 1, < 3) @@ -520,7 +512,6 @@ GEM actionpack (>= 5.2) activesupport (>= 5.2) sprockets (>= 3.0.0) - strscan (3.0.3) sysexits (1.2.0) temple (0.8.2) thor (1.2.1) @@ -550,7 +541,7 @@ GEM unf (0.1.4) unf_ext unf_ext (0.0.8) - unicode-display_width (2.2.0) + unicode-display_width (2.3.0) uniform_notifier (1.16.0) warden (1.2.9) rack (>= 2.0.9) @@ -569,7 +560,7 @@ GEM websocket-extensions (0.1.5) xpath (3.2.0) nokogiri (~> 1.8) - zeitwerk (2.6.0) + zeitwerk (2.6.1) PLATFORMS ruby @@ -580,7 +571,7 @@ DEPENDENCIES better_errors binding_of_caller bootsnap - bootstrap_form + bootstrap_form (~> 4.5) brakeman bullet byebug @@ -605,7 +596,7 @@ DEPENDENCIES haml_lint hcaptcha (~> 7.0) httparty - i18n-js (= 3.9.2) + i18n-js (= 4.0) jbuilder (~> 2.10) jwt (~> 2.5) letter_opener @@ -640,16 +631,16 @@ DEPENDENCIES rubocop-rails (~> 2.16) ruby-progressbar sanitize - sass-rails (~> 5.0) + sassc-rails sentry-rails sentry-ruby sentry-sidekiq - shoulda-matchers (~> 5.0) + shoulda-matchers (~> 5.2) sidekiq (< 6) simplecov simplecov-cobertura simplecov-json - spring (~> 4.0) + spring (~> 4.1) turbo-rails twitter twitter-text diff --git a/app/javascript/packs/application.ts b/app/javascript/packs/application.ts index 82068a43..b4f80ef9 100644 --- a/app/javascript/packs/application.ts +++ b/app/javascript/packs/application.ts @@ -23,7 +23,7 @@ document.addEventListener('DOMContentLoaded', initInbox); document.addEventListener('DOMContentLoaded', initUser); document.addEventListener('turbo:load', initSettings); document.addEventListener('DOMContentLoaded', initLists); -document.addEventListener('DOMContentLoaded', initQuestionbox); +document.addEventListener('turbo:load', initQuestionbox); document.addEventListener('DOMContentLoaded', initQuestion); document.addEventListener('DOMContentLoaded', initModeration); document.addEventListener('DOMContentLoaded', initMemes); diff --git a/app/javascript/retrospring/features/questionbox/all.ts b/app/javascript/retrospring/features/questionbox/all.ts index 6b621165..1e01aa81 100644 --- a/app/javascript/retrospring/features/questionbox/all.ts +++ b/app/javascript/retrospring/features/questionbox/all.ts @@ -12,7 +12,7 @@ export function questionboxAllHandler(event: Event): void { body: { rcpt: 'followers', question: document.querySelector('textarea[name=qb-all-question]').value, - anonymousQuestion: 'false' + anonymousQuestion: 'false' }, contentType: 'application/json' }) @@ -23,7 +23,7 @@ export function questionboxAllHandler(event: Event): void { document.querySelector('textarea[name=qb-all-question]').value = ''; window['$']('#modal-ask-followers').modal('hide'); } - + showNotification(data.message, data.success); }) .catch(err => { @@ -40,4 +40,8 @@ export function questionboxAllInputHandler(event: KeyboardEvent): void { if (event.keyCode == 13 && (event.ctrlKey || event.metaKey)) { document.querySelector(`button[name=qb-all-ask]`).click(); } -} \ No newline at end of file +} + +export function questionboxAllModalAutofocus(): void { + document.querySelector('textarea[name=qb-all-question]').focus(); +} diff --git a/app/javascript/retrospring/features/questionbox/index.ts b/app/javascript/retrospring/features/questionbox/index.ts index 86225f48..a2b7b3e9 100644 --- a/app/javascript/retrospring/features/questionbox/index.ts +++ b/app/javascript/retrospring/features/questionbox/index.ts @@ -1,13 +1,17 @@ import registerEvents from 'utilities/registerEvents'; -import { questionboxAllHandler, questionboxAllInputHandler } from './all'; +import { questionboxAllHandler, questionboxAllInputHandler, questionboxAllModalAutofocus } from './all'; import { questionboxPromoteHandler, questionboxUserHandler, questionboxUserInputHandler } from './user'; export default (): void => { registerEvents([ - { type: 'click', target: '[name=qb-ask]', handler: questionboxUserHandler, global: true }, - { type: 'click', target: '#new-question', handler: questionboxPromoteHandler, global: true }, - { type: 'click', target: '[name=qb-all-ask]', handler: questionboxAllHandler, global: true }, - { type: 'keydown', target: '[name=qb-question]', handler: questionboxUserInputHandler, global: true }, - { type: 'keydown', target: '[name=qb-all-question]', handler: questionboxAllInputHandler, global: true } + { type: 'click', target: document.querySelectorAll('[name=qb-ask]'), handler: questionboxUserHandler }, + { type: 'click', target: document.querySelector('#new-question'), handler: questionboxPromoteHandler }, + { type: 'click', target: document.querySelectorAll('[name=qb-all-ask]'), handler: questionboxAllHandler }, + { type: 'keydown', target: document.querySelectorAll('[name=qb-question]'), handler: questionboxUserInputHandler }, + { type: 'keydown', target: document.querySelectorAll('[name=qb-all-question]'), handler: questionboxAllInputHandler } ]); -} \ No newline at end of file + + // unfortunately Bootstrap 4 relies on jQuery's event model, so I can't use registerEvents here :( + // TODO: when upgrading to Bootstrap 5 replace this with a normal DOM event + $('#modal-ask-followers').on('shown.bs.modal', questionboxAllModalAutofocus); +} diff --git a/app/javascript/retrospring/i18n.ts b/app/javascript/retrospring/i18n.ts new file mode 100644 index 00000000..0af48928 --- /dev/null +++ b/app/javascript/retrospring/i18n.ts @@ -0,0 +1,12 @@ + +import Cookies from 'js-cookie' +import { I18n } from "i18n-js" +import translations from "./i18n.json"; + +const i18n = new I18n(); +i18n.store(translations); +i18n.defaultLocale = "en"; +i18n.enableFallback = true; +i18n.locale = Cookies.get('hl') || 'en'; + +export default i18n; diff --git a/app/validators/typoed_email_validator.rb b/app/validators/typoed_email_validator.rb index 4a4d7620..279c4950 100644 --- a/app/validators/typoed_email_validator.rb +++ b/app/validators/typoed_email_validator.rb @@ -4,6 +4,7 @@ class TypoedEmailValidator < ActiveModel::EachValidator # this array contains "forbidden" email address endings INVALID_ENDINGS = [ # without @: + ".carrd", ".con", ".coom", ".cmo", @@ -18,6 +19,7 @@ class TypoedEmailValidator < ActiveModel::EachValidator gmaik.com gmail.cm gmail.co + gmail.co.uk gmaile.com gmaill.com gmali.com @@ -28,6 +30,7 @@ class TypoedEmailValidator < ActiveModel::EachValidator iclooud.com iclould.com icluod.com + protonail.com xn--gmail-xk1c.com yahooo.com ☺gmail.com diff --git a/app/views/answerbox/_comments.haml b/app/views/answerbox/_comments.haml index f509f418..08f9bc44 100644 --- a/app/views/answerbox/_comments.haml +++ b/app/views/answerbox/_comments.haml @@ -8,7 +8,7 @@ .media .pull-left %a{ href: user_path(comment.user) } - %img.comment__user-avatar.avatar-sm{ src: comment.user.profile_picture.url(:medium) } + %img.comment__user-avatar.avatar-sm{ src: comment.user.profile_picture.url(:small), loading: :lazy } .media-body %h6.media-heading.comment__user = user_screen_name comment.user diff --git a/app/views/answerbox/_header.haml b/app/views/answerbox/_header.haml index f1198128..588bc821 100644 --- a/app/views/answerbox/_header.haml +++ b/app/views/answerbox/_header.haml @@ -2,7 +2,7 @@ .media - unless a.question.author_is_anonymous %a.pull-left{ href: user_path(a.question.user) } - %img.answerbox__question-user-avatar.avatar-md{ src: a.question.user.profile_picture.url(:medium) } + %img.answerbox__question-user-avatar.avatar-md{ src: a.question.user.profile_picture.url(:small), loading: :lazy } .media-body - if user_signed_in? .pull-right diff --git a/app/views/answerbox/_smiles.haml b/app/views/answerbox/_smiles.haml index 8abf967d..371fe111 100644 --- a/app/views/answerbox/_smiles.haml +++ b/app/views/answerbox/_smiles.haml @@ -9,4 +9,4 @@ %a{ href: user_path(smile.user), title: user_screen_name(smile.user, url: false), data: { toggle: :tooltip, placement: :top, smile_id: smile.id } } - %img.avatar-xs{ src: smile.user.profile_picture.url(:medium) } + %img.avatar-xs{ src: smile.user.profile_picture.url(:small), loading: :lazy } diff --git a/app/views/application/_answerbox.haml b/app/views/application/_answerbox.haml index 51f1fa41..4be146ed 100644 --- a/app/views/application/_answerbox.haml +++ b/app/views/application/_answerbox.haml @@ -19,7 +19,7 @@ .media .pull-left %a{ href: user_path(a.user) } - %img.answerbox__answer-user-avatar.avatar-sm{ src: a.user.profile_picture.url(:medium) } + %img.answerbox__answer-user-avatar.avatar-sm{ src: a.user.profile_picture.url(:small), loading: :lazy } .media-body %h6.media-heading.answerbox__answer-user = raw t(".answered", hide: hidespan(t(".hide"), "d-none d-sm-inline"), user: user_screen_name(a.user)) diff --git a/app/views/inbox/_entry.haml b/app/views/inbox/_entry.haml index 421f3532..2a1b6e0b 100644 --- a/app/views/inbox/_entry.haml +++ b/app/views/inbox/_entry.haml @@ -3,7 +3,7 @@ .media - unless i.question.author_is_anonymous %a.pull-left{ href: user_path(i.question.user) } - %img.answerbox__question-user-avatar.avatar-md{ src: i.question.user.profile_picture.url(:medium) } + %img.answerbox__question-user-avatar.avatar-md{ src: i.question.user.profile_picture.url(:small), loading: :lazy } .media-body %h6.text-muted.media-heading.answerbox__question-user - if i.question.author_is_anonymous diff --git a/app/views/moderation/_moderationbox.haml b/app/views/moderation/_moderationbox.haml index 583d8c9a..5c8546cc 100644 --- a/app/views/moderation/_moderationbox.haml +++ b/app/views/moderation/_moderationbox.haml @@ -1,6 +1,6 @@ .card.moderationbox{ data: { id: report.id } } .card-header - %img.avatar-sm{ src: report.user.profile_picture.url(:medium) } + %img.avatar-sm{ src: report.user.profile_picture.url(:small), loading: :lazy } = t(".reported_html", user: user_screen_name(report.user), content: report.type.sub("Reports::", ""), diff --git a/app/views/navigation/dropdown/_profile.haml b/app/views/navigation/dropdown/_profile.haml index 716decda..e9ad76ff 100644 --- a/app/views/navigation/dropdown/_profile.haml +++ b/app/views/navigation/dropdown/_profile.haml @@ -1,4 +1,4 @@ -.dropdown-menu.profile-dropdown{ id: "rs-#{size}-nav-profile" } +.dropdown-menu.dropdown-menu-right.profile-dropdown{ id: "rs-#{size}-nav-profile" } %h6.dropdown-header.d-none.d-sm-block= current_user.screen_name %a.dropdown-item{ href: user_path(current_user) } %i.fa.fa-fw.fa-user diff --git a/app/views/notifications/type/_answer.haml b/app/views/notifications/type/_answer.haml index d20de6d5..c17f0480 100644 --- a/app/views/notifications/type/_answer.haml +++ b/app/views/notifications/type/_answer.haml @@ -3,9 +3,9 @@ %i.fa.fa-2x.fa-fw.fa-exclamation .media-body .notification__heading - %img.avatar-xs{ src: notification.target.user.profile_picture.url(:small) } - = t(".heading_html", - user: user_screen_name(notification.target.user), + %img.avatar-xs{ src: notification.target.user.profile_picture.url(:small), loading: :lazy } + = t(".heading_html", + user: user_screen_name(notification.target.user), question: link_to(t(".link_text"), answer_path(username: notification.target.user.screen_name, id: notification.target.id)), time: time_tooltip(notification.target)) .list-group diff --git a/app/views/notifications/type/_comment.haml b/app/views/notifications/type/_comment.haml index 42a01375..f7fb4a25 100644 --- a/app/views/notifications/type/_comment.haml +++ b/app/views/notifications/type/_comment.haml @@ -3,7 +3,7 @@ %i.fa.fa-2x.fa-fw.fa-comments .media-body .notification__heading - %img.avatar-xs{ src: notification.target.user.profile_picture.url(:small) } + %img.avatar-xs{ src: notification.target.user.profile_picture.url(:small), loading: :lazy } - if notification.target.answer.user == current_user = t(".heading_html", user: user_screen_name(notification.target.user), diff --git a/app/views/notifications/type/_follow.haml b/app/views/notifications/type/_follow.haml index c71a9819..85355be7 100644 --- a/app/views/notifications/type/_follow.haml +++ b/app/views/notifications/type/_follow.haml @@ -1,6 +1,6 @@ .media.notification .notification__icon - %img.avatar-sm{ src: notification.target.source.profile_picture.url(:small) } + %img.avatar-sm{ src: notification.target.source.profile_picture.url(:small), loading: :lazy } .media-body %h6.media-heading.notification__user = user_screen_name notification.target.source diff --git a/app/views/notifications/type/_reaction.haml b/app/views/notifications/type/_reaction.haml index 156d867d..a97b5c27 100644 --- a/app/views/notifications/type/_reaction.haml +++ b/app/views/notifications/type/_reaction.haml @@ -3,7 +3,7 @@ %i.fa.fa-2x.fa-fw.fa-smile-o .media-body .notification__heading - %img.avatar-xs{ src: notification.target.user.profile_picture.url(:small) } + %img.avatar-xs{ src: notification.target.user.profile_picture.url(:small), loading: :lazy } - if notification.target.parent_type == 'Answer' = t(".heading_html", user: user_screen_name(notification.target.user), diff --git a/app/views/question/_question.haml b/app/views/question/_question.haml index 7892d881..e3fef94d 100644 --- a/app/views/question/_question.haml +++ b/app/views/question/_question.haml @@ -4,7 +4,7 @@ .media - unless question.author_is_anonymous %a.pull-left{ href: unless hidden then user_path(question.user) end } - %img.answerbox__question-user-avatar.avatar-md{ src: question.user.profile_picture.url(:medium) } + %img.answerbox__question-user-avatar.avatar-md{ src: question.user.profile_picture.url(:small) } .media-body - if user_signed_in? .pull-right diff --git a/app/views/settings/_services.haml b/app/views/settings/_services.haml index 1252e936..d92b6a72 100644 --- a/app/views/settings/_services.haml +++ b/app/views/settings/_services.haml @@ -4,7 +4,8 @@ - APP_CONFIG["sharing"].each do |service, service_options| - if service_options["enabled"] && services.none? { |x| x.provider == service.to_s } - %p= button_to t(".connect", service: service.capitalize), "/auth/#{service}", method: :post, class: "btn btn-info" + %p= button_to t(".connect", service: service.capitalize), "/auth/#{service}", method: :post, class: "btn btn-info", + form: { data: { turbo: false } } - if services.count.positive? %ul.list-group @@ -18,9 +19,9 @@ data: { confirm: t(".confirm", service: service.provider.capitalize) }, method: :delete, class: "btn btn-link text-danger", - form: { class: "d-inline" } + form: { class: "d-inline", data: { turbo: false } } .col-md-6.mt-2 - = bootstrap_form_for(service, as: "service", url: update_service_path(service)) do |f| + = bootstrap_form_for(service, as: "service", url: update_service_path(service), data: { turbo: false }) do |f| = f.text_field :post_tag, label_as_placeholder: true, append: f.submit(t("voc.update"), class: "btn btn-primary"), maxlength: 20, pattern: "^[^@]*$" diff --git a/app/views/shared/_question.haml b/app/views/shared/_question.haml index dbf6b9a3..a3c8478c 100644 --- a/app/views/shared/_question.haml +++ b/app/views/shared/_question.haml @@ -5,7 +5,7 @@ - if type == 'discover' .pull-left %a{ href: user_screen_name(q.user, link_only: true) } - %img.avatar-md.mr-2{ src: q.user&.profile_picture&.url(:medium) } + %img.avatar-md.mr-2{ src: q.user&.profile_picture&.url(:small), loading: :lazy } .media-body - if user_signed_in? .pull-right diff --git a/app/views/shared/_userbox.haml b/app/views/shared/_userbox.haml index 43e882ea..e3ce5116 100644 --- a/app/views/shared/_userbox.haml +++ b/app/views/shared/_userbox.haml @@ -2,7 +2,7 @@ .card.h-100.userbox %img.userbox__header{ src: user.profile_header.url(:mobile) } .card-body - %img.userbox__avatar{ src: user.profile_picture.url(:small) } + %img.userbox__avatar{ src: user.profile_picture.url(:small), loading: :lazy } %a.profile__name{ href: user_path(user) } - unless user.profile.display_name.blank? .profile__display-name diff --git a/babel.config.js b/babel.config.js index 99520f36..79d788a8 100644 --- a/babel.config.js +++ b/babel.config.js @@ -48,6 +48,18 @@ module.exports = function(api) { loose: true } ], + [ + '@babel/plugin-proposal-private-methods', + { + loose: true + } + ], + [ + '@babel/plugin-proposal-private-property-in-object', + { + loose: true + } + ], [ '@babel/plugin-proposal-object-rest-spread', { diff --git a/config/i18n-js.yml b/config/i18n.yml similarity index 68% rename from config/i18n-js.yml rename to config/i18n.yml index 0a5cdfa3..c4b7c90d 100644 --- a/config/i18n-js.yml +++ b/config/i18n.yml @@ -21,12 +21,9 @@ # If you're running an old version, you can use something # like this: # -fallbacks: :default_locale - -export_i18n_js: false - translations: - - file: 'app/javascript/retrospring/i18n.ts' - only: ['*.voc.*', '*.frontend.*', '*.views.actions.*'] - prefix: "import I18n from 'i18n-js'\nimport Cookies from 'js-cookie'\n" - suffix: "I18n.defaultLocale = 'en';\nI18n.locale = Cookies.get('hl') || 'en';\nexport default I18n" + - file: 'app/javascript/retrospring/i18n.json' + patterns: + - '*.voc.*' + - '*.frontend.*' + - '*.views.actions.*' diff --git a/lib/version.rb b/lib/version.rb index 9f53fe51..c50766e9 100644 --- a/lib/version.rb +++ b/lib/version.rb @@ -15,11 +15,11 @@ module Retrospring def year = 2022 - def month = 8 + def month = 10 - def day = 31 + def day = 12 - def patch = 2 + def patch = 0 def suffix = "" diff --git a/package.json b/package.json index da0a9b9f..3713410d 100644 --- a/package.json +++ b/package.json @@ -8,14 +8,14 @@ "@hotwired/stimulus": "^3.1.0", "@hotwired/stimulus-webpack-helpers": "^1.0.1", "@hotwired/turbo-rails": "^7.1.3", - "@melloware/coloris": "^0.16.0", + "@melloware/coloris": "^0.16.1", "@rails/request.js": "^0.0.6", "bootstrap": "^4.6.2", "cheet.js": "^0.3.3", - "core-js": "^3.25.1", + "core-js": "^3.25.5", "croppr": "^2.3.1", "font-awesome": "4.7.0", - "i18n-js": "^3.9.2", + "i18n-js": "^4.0", "jquery": "^3.6.1", "js-cookie": "2.2.1", "lato-font": "^3.0.0", @@ -24,11 +24,11 @@ "regenerator-runtime": "^0.13.7", "sweetalert": "1.1.3", "toastify-js": "^1.12.0", - "typescript": "^4.8.3" + "typescript": "^4.8.4" }, "devDependencies": { - "@babel/core": "^7.19.0", - "@babel/preset-env": "^7.19.0", + "@babel/core": "^7.19.3", + "@babel/preset-env": "^7.19.3", "@rails/webpacker": "5.4.3", "@typescript-eslint/eslint-plugin": "^4.11.0", "@typescript-eslint/parser": "^4.11.0", @@ -37,6 +37,6 @@ "eslint": "^7.16.0", "eslint-plugin-import": "^2.26.0", "webpack": "^4", - "webpack-dev-server": "^4.11.0" + "webpack-dev-server": "^4.11.1" } } diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 642f844d..5d12058f 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -68,10 +68,12 @@ RSpec.describe User, type: :model do # examples from the real world: - # .con is not a valid TLD + # .carrd is not a valid TLD + include_examples "invalid email", "fritz.fantom@gmail.carrd" + # neither is .con include_examples "invalid email", "fritz.fantom@gmail.con" include_examples "invalid email", "fritz.fantom@protonmail.con" - # neither is .coom + # nor .coom include_examples "invalid email", "fritz.fantom@gmail.coom" # nor .cmo include_examples "invalid email", "gustav.geldsack@gmail.cmo" @@ -84,6 +86,7 @@ RSpec.describe User, type: :model do include_examples "invalid email", "fritz.fantom@gmaik.com" include_examples "invalid email", "fritz.fantom@gmail.cm" include_examples "invalid email", "fritz.fantom@gmail.co" + include_examples "invalid email", "fritz.fantom@gmail.co.uk" include_examples "invalid email", "fritz.fantom@gmailcom" include_examples "invalid email", "fritz.fantom@gmaile.com" include_examples "invalid email", "fritz.fantom@gmaill.com" @@ -96,6 +99,7 @@ RSpec.describe User, type: :model do include_examples "invalid email", "fritz.fantom@iclooud.com" include_examples "invalid email", "fritz.fantom@iclould.com" include_examples "invalid email", "fritz.fantom@icluod.com" + include_examples "invalid email", "fritz.fantom@protonail.com" include_examples "invalid email", "fritz.fantom@xn--gmail-xk1c.com" include_examples "invalid email", "fritz.fantom@yahooo.com" include_examples "invalid email", "fritz.fantom@☺gmail.com" diff --git a/tsconfig.json b/tsconfig.json index 6ec41c38..1b43475d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,6 +7,7 @@ "lib": ["es6", "dom"], "module": "es6", "moduleResolution": "node", + "resolveJsonModule": true, "baseUrl": ".", "paths": { "*": ["node_modules/*", "app/javascript/*"], diff --git a/yarn.lock b/yarn.lock index 2cefe77d..8f6be1c6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -24,38 +24,38 @@ dependencies: "@babel/highlight" "^7.18.6" -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8", "@babel/compat-data@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.0.tgz#2a592fd89bacb1fcde68de31bee4f2f2dacb0e86" - integrity sha512-y5rqgTTPTmaF5e2nVhOxw+Ur9HDJLsWb6U/KpgUzRZEdPfE6VOubXBKLdbcUTijzRptednSBDQbYZBOSqJxpJw== +"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8", "@babel/compat-data@^7.19.3": + version "7.19.3" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.3.tgz#707b939793f867f5a73b2666e6d9a3396eb03151" + integrity sha512-prBHMK4JYYK+wDjJF1q99KK4JLL+egWS4nmNqdlMUgCExMZ+iZW0hGhyC3VEbsPjvaN0TBhW//VIFwBrk8sEiw== -"@babel/core@^7.15.0", "@babel/core@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.0.tgz#d2f5f4f2033c00de8096be3c9f45772563e150c3" - integrity sha512-reM4+U7B9ss148rh2n1Qs9ASS+w94irYXga7c2jaQv9RVzpS7Mv1a9rnYYwuDa45G+DkORt9g6An2k/V4d9LbQ== +"@babel/core@^7.15.0", "@babel/core@^7.19.3": + version "7.19.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.3.tgz#2519f62a51458f43b682d61583c3810e7dcee64c" + integrity sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.19.0" - "@babel/helper-compilation-targets" "^7.19.0" + "@babel/generator" "^7.19.3" + "@babel/helper-compilation-targets" "^7.19.3" "@babel/helper-module-transforms" "^7.19.0" "@babel/helpers" "^7.19.0" - "@babel/parser" "^7.19.0" + "@babel/parser" "^7.19.3" "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.0" - "@babel/types" "^7.19.0" + "@babel/traverse" "^7.19.3" + "@babel/types" "^7.19.3" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.1" semver "^6.3.0" -"@babel/generator@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.19.0.tgz#785596c06425e59334df2ccee63ab166b738419a" - integrity sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg== +"@babel/generator@^7.19.3": + version "7.19.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.19.3.tgz#d7f4d1300485b4547cb6f94b27d10d237b42bf59" + integrity sha512-fqVZnmp1ncvZU757UzDheKZpfPgatqY59XtW2/j/18H7u76akb8xqvjw82f+i2UKd/ksYsSick/BCLQUUtJ/qQ== dependencies: - "@babel/types" "^7.19.0" + "@babel/types" "^7.19.3" "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" @@ -74,14 +74,14 @@ "@babel/helper-explode-assignable-expression" "^7.18.6" "@babel/types" "^7.18.6" -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.0.tgz#537ec8339d53e806ed422f1e06c8f17d55b96bb0" - integrity sha512-Ai5bNWXIvwDvWM7njqsG3feMlL9hCVQsPYXodsZyLwshYkZVJt59Gftau4VrE8S9IT9asd2uSP1hG6wCNw+sXA== +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.19.0", "@babel/helper-compilation-targets@^7.19.3": + version "7.19.3" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz#a10a04588125675d7c7ae299af86fa1b2ee038ca" + integrity sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg== dependencies: - "@babel/compat-data" "^7.19.0" + "@babel/compat-data" "^7.19.3" "@babel/helper-validator-option" "^7.18.6" - browserslist "^4.20.2" + browserslist "^4.21.3" semver "^6.3.0" "@babel/helper-create-class-features-plugin@^7.18.6": @@ -139,6 +139,18 @@ resolve "^1.14.2" semver "^6.1.2" +"@babel/helper-define-polyfill-provider@^0.3.3": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a" + integrity sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww== + dependencies: + "@babel/helper-compilation-targets" "^7.17.7" + "@babel/helper-plugin-utils" "^7.16.7" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" + "@babel/helper-environment-visitor@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz#b7eee2b5b9d70602e59d1a6cad7dd24de7ca6cd7" @@ -319,6 +331,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== +"@babel/helper-validator-identifier@^7.19.1": + version "7.19.1" + 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" @@ -371,10 +388,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.18.10", "@babel/parser@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.0.tgz#497fcafb1d5b61376959c1c338745ef0577aa02c" - integrity sha512-74bEXKX2h+8rrfQUfsBfuZZHzsEs6Eql4pqy/T4Nn6Y9wNPggQOqD6z6pn5Bl8ZfysKouFZT/UXEH94ummEeQw== +"@babel/parser@^7.18.10", "@babel/parser@^7.19.3": + version "7.19.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.3.tgz#8dd36d17c53ff347f9e55c328710321b49479a9a" + integrity sha512-pJ9xOlNWHiy9+FuFP09DEAFbAn4JskgRsVcc169w2xRBC3FRGuQEwjeIMMND9L2zc0iEhO/tGv4Zq+km+hxNpQ== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" @@ -392,10 +409,10 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" "@babel/plugin-proposal-optional-chaining" "^7.18.9" -"@babel/plugin-proposal-async-generator-functions@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.0.tgz#cf5740194f170467df20581712400487efc79ff1" - integrity sha512-nhEByMUTx3uZueJ/QkJuSlCfN4FGg+xy+vRsfGQGzSauq5ks2Deid2+05Q3KhfaUjvec1IGhw/Zm3cFm8JigTQ== +"@babel/plugin-proposal-async-generator-functions@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz#34f6f5174b688529342288cd264f80c9ea9fb4a7" + integrity sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q== dependencies: "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-plugin-utils" "^7.19.0" @@ -783,10 +800,10 @@ "@babel/helper-module-transforms" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-named-capturing-groups-regex@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.0.tgz#58c52422e4f91a381727faed7d513c89d7f41ada" - integrity sha512-HDSuqOQzkU//kfGdiHBt71/hkDTApw4U/cMVgKgX7PqfB3LOaK+2GtCEsBu1dL9CkswDm0Gwehht1dCr421ULQ== +"@babel/plugin-transform-named-capturing-groups-regex@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz#ec7455bab6cd8fb05c525a94876f435a48128888" + integrity sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.19.0" "@babel/helper-plugin-utils" "^7.19.0" @@ -907,18 +924,18 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/preset-env@^7.15.0", "@babel/preset-env@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.19.0.tgz#fd18caf499a67d6411b9ded68dc70d01ed1e5da7" - integrity sha512-1YUju1TAFuzjIQqNM9WsF4U6VbD/8t3wEAlw3LFYuuEr+ywqLRcSXxFKz4DCEj+sN94l/XTDiUXYRrsvMpz9WQ== +"@babel/preset-env@^7.15.0", "@babel/preset-env@^7.19.3": + version "7.19.3" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.19.3.tgz#52cd19abaecb3f176a4ff9cc5e15b7bf06bec754" + integrity sha512-ziye1OTc9dGFOAXSWKUqQblYHNlBOaDl8wzqf2iKXJAltYiR3hKHUKmkt+S9PppW7RQpq4fFCrwwpIDj/f5P4w== dependencies: - "@babel/compat-data" "^7.19.0" - "@babel/helper-compilation-targets" "^7.19.0" + "@babel/compat-data" "^7.19.3" + "@babel/helper-compilation-targets" "^7.19.3" "@babel/helper-plugin-utils" "^7.19.0" "@babel/helper-validator-option" "^7.18.6" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-async-generator-functions" "^7.19.0" + "@babel/plugin-proposal-async-generator-functions" "^7.19.1" "@babel/plugin-proposal-class-properties" "^7.18.6" "@babel/plugin-proposal-class-static-block" "^7.18.6" "@babel/plugin-proposal-dynamic-import" "^7.18.6" @@ -966,7 +983,7 @@ "@babel/plugin-transform-modules-commonjs" "^7.18.6" "@babel/plugin-transform-modules-systemjs" "^7.19.0" "@babel/plugin-transform-modules-umd" "^7.18.6" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.19.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.19.1" "@babel/plugin-transform-new-target" "^7.18.6" "@babel/plugin-transform-object-super" "^7.18.6" "@babel/plugin-transform-parameters" "^7.18.8" @@ -981,11 +998,11 @@ "@babel/plugin-transform-unicode-escapes" "^7.18.10" "@babel/plugin-transform-unicode-regex" "^7.18.6" "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.19.0" - babel-plugin-polyfill-corejs2 "^0.3.2" - babel-plugin-polyfill-corejs3 "^0.5.3" - babel-plugin-polyfill-regenerator "^0.4.0" - core-js-compat "^3.22.1" + "@babel/types" "^7.19.3" + babel-plugin-polyfill-corejs2 "^0.3.3" + babel-plugin-polyfill-corejs3 "^0.6.0" + babel-plugin-polyfill-regenerator "^0.4.1" + core-js-compat "^3.25.1" semver "^6.3.0" "@babel/preset-modules@^0.1.5": @@ -1031,29 +1048,29 @@ "@babel/parser" "^7.18.10" "@babel/types" "^7.18.10" -"@babel/traverse@^7.13.0", "@babel/traverse@^7.18.11", "@babel/traverse@^7.18.6", "@babel/traverse@^7.18.9", "@babel/traverse@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.19.0.tgz#eb9c561c7360005c592cc645abafe0c3c4548eed" - integrity sha512-4pKpFRDh+utd2mbRC8JLnlsMUii3PMHjpL6a0SZ4NMZy7YFP9aXORxEhdMVOc9CpWtDF09IkciQLEhK7Ml7gRA== +"@babel/traverse@^7.13.0", "@babel/traverse@^7.18.11", "@babel/traverse@^7.18.6", "@babel/traverse@^7.18.9", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.3": + version "7.19.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.19.3.tgz#3a3c5348d4988ba60884e8494b0592b2f15a04b4" + integrity sha512-qh5yf6149zhq2sgIXmwjnsvmnNQC2iw70UFjp4olxucKrWd/dvlUsBI88VSLUsnMNF7/vnOiA+nk1+yLoCqROQ== dependencies: "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.19.0" + "@babel/generator" "^7.19.3" "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-function-name" "^7.19.0" "@babel/helper-hoist-variables" "^7.18.6" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.19.0" - "@babel/types" "^7.19.0" + "@babel/parser" "^7.19.3" + "@babel/types" "^7.19.3" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.16.7", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.4.4": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.19.0.tgz#75f21d73d73dc0351f3368d28db73465f4814600" - integrity sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA== +"@babel/types@^7.16.7", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.19.3", "@babel/types@^7.4.4": + version "7.19.3" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.19.3.tgz#fc420e6bbe54880bce6779ffaf315f5e43ec9624" + integrity sha512-hGCaQzIY22DJlDh9CH7NOxgKkFjBk0Cw9xDO1Xmh2151ti7wiGfQ3LauXzL4HP1fmFlTX6XjpRETTpUcv7wQLw== dependencies: "@babel/helper-string-parser" "^7.18.10" - "@babel/helper-validator-identifier" "^7.18.6" + "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" "@csstools/convert-colors@^1.4.0": @@ -1168,10 +1185,10 @@ resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== -"@melloware/coloris@^0.16.0": - version "0.16.0" - resolved "https://registry.yarnpkg.com/@melloware/coloris/-/coloris-0.16.0.tgz#be1cfa84705db444c6abf942ab57e21f88adfa11" - integrity sha512-/aGlfbR3GvRUOvYnhrhE0qi55EIwJLa+DqnHPhefPfSljibNZrrcWrlW5cRvhvUD+jR/TYR41YWfOrQX9E3VwA== +"@melloware/coloris@^0.16.1": + version "0.16.1" + resolved "https://registry.yarnpkg.com/@melloware/coloris/-/coloris-0.16.1.tgz#bc94257dbfa31e60591dd2fcc422647cd6e7c1e7" + integrity sha512-33Cmes6+ySsTXL6P2/Swu8uuDgNyIZTKlxYxUAh+qyfmd0V8hMHxlRS5ofOXLEl4713YScOKKMOTuAYcyyUfAQ== "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -1911,16 +1928,16 @@ babel-plugin-macros@^2.8.0: cosmiconfig "^6.0.0" resolve "^1.12.0" -babel-plugin-polyfill-corejs2@^0.3.0, babel-plugin-polyfill-corejs2@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz#e4c31d4c89b56f3cf85b92558954c66b54bd972d" - integrity sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q== +babel-plugin-polyfill-corejs2@^0.3.0, babel-plugin-polyfill-corejs2@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122" + integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q== dependencies: "@babel/compat-data" "^7.17.7" - "@babel/helper-define-polyfill-provider" "^0.3.2" + "@babel/helper-define-polyfill-provider" "^0.3.3" semver "^6.1.1" -babel-plugin-polyfill-corejs3@^0.5.0, babel-plugin-polyfill-corejs3@^0.5.3: +babel-plugin-polyfill-corejs3@^0.5.0: version "0.5.3" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz#d7e09c9a899079d71a8b670c6181af56ec19c5c7" integrity sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw== @@ -1928,6 +1945,14 @@ babel-plugin-polyfill-corejs3@^0.5.0, babel-plugin-polyfill-corejs3@^0.5.3: "@babel/helper-define-polyfill-provider" "^0.3.2" core-js-compat "^3.21.0" +babel-plugin-polyfill-corejs3@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz#56ad88237137eade485a71b52f72dbed57c6230a" + integrity sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.3" + core-js-compat "^3.25.1" + babel-plugin-polyfill-regenerator@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" @@ -1935,12 +1960,12 @@ babel-plugin-polyfill-regenerator@^0.3.0: dependencies: "@babel/helper-define-polyfill-provider" "^0.3.1" -babel-plugin-polyfill-regenerator@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.0.tgz#8f51809b6d5883e07e71548d75966ff7635527fe" - integrity sha512-RW1cnryiADFeHmfLS+WW/G431p1PsW5qdRdz0SDRi7TKcUgc7Oh/uXkT7MZ/+tGsT1BkczEAmD5XjUyJ5SWDTw== +babel-plugin-polyfill-regenerator@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz#390f91c38d90473592ed43351e801a9d3e0fd747" + integrity sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw== dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.2" + "@babel/helper-define-polyfill-provider" "^0.3.3" balanced-match@^1.0.0: version "1.0.2" @@ -1975,6 +2000,11 @@ big.js@^5.2.2: resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== +bignumber.js@*: + version "9.1.0" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.0.tgz#8d340146107fe3a6cb8d40699643c302e8773b62" + integrity sha512-4LwHK4nfDOraBCtst+wOWIHbu1vhvAPJK8g8nROd4iuc3PSEjWif/qwbkh8jwCJz6yDBvtU4KPynETgrfh7y3A== + binary-extensions@^1.0.0: version "1.13.1" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" @@ -2158,15 +2188,15 @@ browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.6.4: node-releases "^2.0.1" picocolors "^1.0.0" -browserslist@^4.20.2, browserslist@^4.21.0: - version "4.21.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.1.tgz#c9b9b0a54c7607e8dc3e01a0d311727188011a00" - integrity sha512-Nq8MFCSrnJXSc88yliwlzQe3qNe3VntIjhsArW9IJOEPSHNx23FalwApUVbzAWABLhYJJ7y8AynWI/XM8OdfjQ== +browserslist@^4.21.3, browserslist@^4.21.4: + version "4.21.4" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" + integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== dependencies: - caniuse-lite "^1.0.30001359" - electron-to-chromium "^1.4.172" - node-releases "^2.0.5" - update-browserslist-db "^1.0.4" + caniuse-lite "^1.0.30001400" + electron-to-chromium "^1.4.251" + node-releases "^2.0.6" + update-browserslist-db "^1.0.9" buffer-from@^1.0.0: version "1.1.2" @@ -2314,10 +2344,10 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, can resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001298.tgz#0e690039f62e91c3ea581673d716890512e7ec52" integrity sha512-AcKqikjMLlvghZL/vfTHorlQsLDhGRalYf1+GmWCf5SCMziSGjRYQW/JEksj14NaYHIR6KIhrFAy0HV5C25UzQ== -caniuse-lite@^1.0.30001359: - version "1.0.30001363" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001363.tgz#26bec2d606924ba318235944e1193304ea7c4f15" - integrity sha512-HpQhpzTGGPVMnCjIomjt+jvyUu8vNFo3TaDiZ/RcoTrlOq/5+tC8zHdsbgFB6MxmaY+jCpsH09aD80Bb4Ow3Sg== +caniuse-lite@^1.0.30001400: + version "1.0.30001406" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001406.tgz#d0146e7919635479f873b4507517b627f66ab269" + integrity sha512-bWTlaXUy/rq0BBtYShc/jArYfBPjEV95euvZ8JVtO43oQExEN/WquoqpufFjNu4kSpi5cy5kMbNvzztWDfv1Jg== case-sensitive-paths-webpack-plugin@^2.4.0: version "2.4.0" @@ -2624,18 +2654,17 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-js-compat@^3.21.0, core-js-compat@^3.22.1: - version "3.23.3" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.23.3.tgz#7d8503185be76bb6d8d592c291a4457a8e440aa9" - integrity sha512-WSzUs2h2vvmKsacLHNTdpyOC9k43AEhcGoFlVgCY4L7aw98oSBKtPL6vD0/TqZjRWRQYdDSLkzZIni4Crbbiqw== +core-js-compat@^3.21.0, core-js-compat@^3.25.1: + version "3.25.2" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.25.2.tgz#7875573586809909c69e03ef310810c1969ee138" + integrity sha512-TxfyECD4smdn3/CjWxczVtJqVLEEC2up7/82t7vC0AzNogr+4nQ8vyF7abxAuTXWvjTClSbvGhU0RgqA4ToQaQ== dependencies: - browserslist "^4.21.0" - semver "7.0.0" + browserslist "^4.21.4" -core-js@^3.16.2, core-js@^3.25.1: - version "3.25.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.25.1.tgz#5818e09de0db8956e16bf10e2a7141e931b7c69c" - integrity sha512-sr0FY4lnO1hkQ4gLDr24K0DGnweGO1QwSj5BpfQjpSJPdqWalja4cTps29Y/PJVG/P7FYlPDkH3hO+Tr0CvDgQ== +core-js@^3.16.2, core-js@^3.25.5: + version "3.25.5" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.25.5.tgz#e86f651a2ca8a0237a5f064c2fe56cef89646e27" + integrity sha512-nbm6eZSjm+ZuBQxCUPQKQCoUEfFOXjUZ8dTTyikyKaWrTYmAVbykQfwsKE5dBK88u3QCkCrzsx/PPlKfhsvgpw== core-util-is@~1.0.0: version "1.0.3" @@ -3131,10 +3160,10 @@ electron-to-chromium@^1.4.17: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.41.tgz#0b2e126796e7fafb9fd71e29304468b9d0af5d65" integrity sha512-VQEXEJc+8rJIva85H8EPtB5Ux9g8TzkNGBanqphM9ZWMZ34elueKJ+5g+BPhz3Lk8gkujfQRcIZ+fpA0btUIuw== -electron-to-chromium@^1.4.172: - version "1.4.185" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.185.tgz#3432d7944f1c5fe20664bb45d9cced2151405ce2" - integrity sha512-9kV/isoOGpKkBt04yYNaSWIBn3187Q5VZRtoReq8oz5NY/A4XmU6cAoqgQlDp7kKJCZMRjWZ8nsQyxfpFHvfyw== +electron-to-chromium@^1.4.251: + version "1.4.254" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.254.tgz#c6203583890abf88dfc0be046cd72d3b48f8beb6" + integrity sha512-Sh/7YsHqQYkA6ZHuHMy24e6TE4eX6KZVsZb9E/DvU1nQRIrH4BflO/4k+83tfdYvDl+MObvlqHPRICzEdC9c6Q== elliptic@^6.5.3: version "6.5.4" @@ -4143,10 +4172,13 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -i18n-js@^3.9.2: - version "3.9.2" - resolved "https://registry.yarnpkg.com/i18n-js/-/i18n-js-3.9.2.tgz#4a015dcfabd4c9fc73115fc2d02d2627e4c15ca5" - integrity sha512-+Gm8h5HL0emzKhRx2avMKX+nKiVPXeaOZm7Euf2/pbbFcLQoJ3zZYiUykAzoRasijCoWos2Kl1tslmScTgAQKw== +i18n-js@^4.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/i18n-js/-/i18n-js-4.1.1.tgz#05ebd03c4d92f6dc26a00d7c5cfb90f9c326b67c" + integrity sha512-Uph8ghmfShexVhDcNtg5s40zprJZPrhW5iOEKsUwPiiBpIGN/0EJ9W7DTqhLFlWfAlpkFiaLxVxHsk8f+3KjIQ== + dependencies: + bignumber.js "*" + lodash "*" iconv-lite@0.4.24: version "0.4.24" @@ -4825,7 +4857,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@^4.17.5: +lodash@*, lodash@^4.17.5: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -5232,7 +5264,7 @@ node-releases@^2.0.1: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== -node-releases@^2.0.5: +node-releases@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== @@ -6818,18 +6850,13 @@ select-hose@^2.0.0: resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= -selfsigned@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.0.1.tgz#8b2df7fa56bf014d19b6007655fff209c0ef0a56" - integrity sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ== +selfsigned@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.1.1.tgz#18a7613d714c0cd3385c48af0075abf3f266af61" + integrity sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ== dependencies: node-forge "^1" -semver@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - semver@^5.5.0, semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" @@ -7563,10 +7590,10 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@^4.8.3: - version "4.8.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.3.tgz#d59344522c4bc464a65a730ac695007fdb66dd88" - integrity sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig== +typescript@^4.8.4: + version "4.8.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6" + integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ== unbox-primitive@^1.0.1: version "1.0.1" @@ -7658,10 +7685,10 @@ upath@^1.1.1: resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== -update-browserslist-db@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz#dbfc5a789caa26b1db8990796c2c8ebbce304824" - integrity sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA== +update-browserslist-db@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz#2924d3927367a38d5c555413a7ce138fc95fcb18" + integrity sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg== dependencies: escalade "^3.1.1" picocolors "^1.0.0" @@ -7816,10 +7843,10 @@ webpack-dev-middleware@^5.3.1: range-parser "^1.2.1" schema-utils "^4.0.0" -webpack-dev-server@^4.11.0: - version "4.11.0" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.11.0.tgz#290ee594765cd8260adfe83b2d18115ea04484e7" - integrity sha512-L5S4Q2zT57SK7tazgzjMiSMBdsw+rGYIX27MgPgx7LDhWO0lViPrHKoLS7jo5In06PWYAhlYu3PbyoC6yAThbw== +webpack-dev-server@^4.11.1: + version "4.11.1" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz#ae07f0d71ca0438cf88446f09029b92ce81380b5" + integrity sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw== dependencies: "@types/bonjour" "^3.5.9" "@types/connect-history-api-fallback" "^1.3.5" @@ -7844,7 +7871,7 @@ webpack-dev-server@^4.11.0: p-retry "^4.5.0" rimraf "^3.0.2" schema-utils "^4.0.0" - selfsigned "^2.0.1" + selfsigned "^2.1.1" serve-index "^1.9.1" sockjs "^0.3.24" spdy "^4.0.2"