Merge commit '38fe6ecd05e9349717b60452eff6e5ff4809b82b' into glitch-soc/merge-upstream

Conflicts:
- `.github/workflows/build-nightly.yml`:
  Upstream modified this file close to a line modified by glitch-soc to
  disable the ARMv64 builder (as glitch-soc doesn't have one).
  Ported upstream's changes.
- `.github/workflows/build-releases.yml`:
  Upstream modified this file close to lines changed by glitch-soc to
  change the Docker image repositories used (only ghcr, and based on the
  organization's name).
  Ported upstream's changes.
This commit is contained in:
Claire 2023-09-15 21:43:49 +02:00
commit c31020044b
16 changed files with 107 additions and 66 deletions

View file

@ -4,6 +4,9 @@ on:
platforms: platforms:
required: true required: true
type: string type: string
cache:
type: boolean
default: true
use_native_arm64_builder: use_native_arm64_builder:
type: boolean type: boolean
push_to_images: push_to_images:
@ -92,5 +95,5 @@ jobs:
push: ${{ inputs.push_to_images != '' }} push: ${{ inputs.push_to_images != '' }}
tags: ${{ steps.meta.outputs.tags }} tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }} labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha cache-from: ${{ inputs.cache && 'type=gha' || '' }}
cache-to: type=gha,mode=max cache-to: ${{ inputs.cache && 'type=gha,mode=max' || '' }}

View file

@ -26,6 +26,7 @@ jobs:
with: with:
platforms: linux/amd64,linux/arm64 platforms: linux/amd64,linux/arm64
use_native_arm64_builder: false use_native_arm64_builder: false
cache: false
push_to_images: | push_to_images: |
ghcr.io/${{ github.repository_owner }}/mastodon ghcr.io/${{ github.repository_owner }}/mastodon
version_prerelease: ${{ needs.compute-suffix.outputs.prerelease }} version_prerelease: ${{ needs.compute-suffix.outputs.prerelease }}

View file

@ -16,6 +16,8 @@ jobs:
use_native_arm64_builder: false use_native_arm64_builder: false
push_to_images: | push_to_images: |
ghcr.io/${{ github.repository_owner }}/mastodon ghcr.io/${{ github.repository_owner }}/mastodon
# Do not use cache when building releases, so apt update is always ran and the release always contain the latest packages
cache: false
# Only tag with latest when ran against the latest stable branch # Only tag with latest when ran against the latest stable branch
# This needs to be updated after each minor version release # This needs to be updated after each minor version release
flavor: | flavor: |

View file

@ -17,6 +17,7 @@ COPY Gemfile* package.json yarn.lock /opt/mastodon/
# hadolint ignore=DL3008 # hadolint ignore=DL3008
RUN apt-get update && \ RUN apt-get update && \
apt-get -yq dist-upgrade && \
apt-get install -y --no-install-recommends build-essential \ apt-get install -y --no-install-recommends build-essential \
git \ git \
libicu-dev \ libicu-dev \

View file

@ -33,8 +33,6 @@ export const DismissableBanner: React.FC<PropsWithChildren<Props>> = ({
return ( return (
<div className='dismissable-banner'> <div className='dismissable-banner'>
<div className='dismissable-banner__message'>{children}</div>
<div className='dismissable-banner__action'> <div className='dismissable-banner__action'>
<IconButton <IconButton
icon='times' icon='times'
@ -42,6 +40,8 @@ export const DismissableBanner: React.FC<PropsWithChildren<Props>> = ({
onClick={handleDismiss} onClick={handleDismiss}
/> />
</div> </div>
<div className='dismissable-banner__message'>{children}</div>
</div> </div>
); );
}; };

View file

@ -8941,9 +8941,7 @@ noscript {
} }
&__action { &__action {
position: absolute; float: right;
inset-inline-end: 0;
top: 0;
padding: 15px 10px; padding: 15px 10px;
.icon-button { .icon-button {

View file

@ -58,4 +58,11 @@ body.rtl {
.fa-chevron-right::before { .fa-chevron-right::before {
content: '\F053'; content: '\F053';
} }
.dismissable-banner,
.warning-banner {
&__action {
float: left;
}
}
} }

View file

@ -30,6 +30,6 @@ class ActivityPub::Activity::Update < ActivityPub::Activity
return if @status.nil? return if @status.nil?
ActivityPub::ProcessStatusUpdateService.new.call(@status, @object, request_id: @options[:request_id]) ActivityPub::ProcessStatusUpdateService.new.call(@status, @json, @object, request_id: @options[:request_id])
end end
end end

View file

@ -407,6 +407,6 @@ class MediaAttachment < ApplicationRecord
end end
def reset_parent_cache def reset_parent_cache
Rails.cache.delete("statuses/#{status_id}") if status_id.present? Rails.cache.delete("v3:statuses/#{status_id}") if status_id.present?
end end
end end

View file

@ -108,7 +108,7 @@ class Poll < ApplicationRecord
def reset_parent_cache def reset_parent_cache
return if status_id.nil? return if status_id.nil?
Rails.cache.delete("statuses/#{status_id}") Rails.cache.delete("v3:statuses/#{status_id}")
end end
def last_fetched_before_expiration? def last_fetched_before_expiration?

View file

@ -16,8 +16,6 @@
class StatusStat < ApplicationRecord class StatusStat < ApplicationRecord
belongs_to :status, inverse_of: :status_stat belongs_to :status, inverse_of: :status_stat
after_commit :reset_parent_cache
def replies_count def replies_count
[attributes['replies_count'], 0].max [attributes['replies_count'], 0].max
end end
@ -29,10 +27,4 @@ class StatusStat < ApplicationRecord
def favourites_count def favourites_count
[attributes['favourites_count'], 0].max [attributes['favourites_count'], 0].max
end end
private
def reset_parent_cache
Rails.cache.delete("statuses/#{status_id}")
end
end end

View file

@ -8,6 +8,6 @@ class ActivityPub::FetchRemotePollService < BaseService
return unless supported_context?(json) return unless supported_context?(json)
ActivityPub::ProcessStatusUpdateService.new.call(poll.status, json) ActivityPub::ProcessStatusUpdateService.new.call(poll.status, json, json)
end end
end end

View file

@ -5,10 +5,11 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
include Redisable include Redisable
include Lockable include Lockable
def call(status, json, request_id: nil) def call(status, activity_json, object_json, request_id: nil)
raise ArgumentError, 'Status has unsaved changes' if status.changed? raise ArgumentError, 'Status has unsaved changes' if status.changed?
@json = json @activity_json = activity_json
@json = object_json
@status_parser = ActivityPub::Parser::StatusParser.new(@json) @status_parser = ActivityPub::Parser::StatusParser.new(@json)
@uri = @status_parser.uri @uri = @status_parser.uri
@status = status @status = status
@ -306,6 +307,6 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
end end
def forwarder def forwarder
@forwarder ||= ActivityPub::Forwarder.new(@account, @json, @status) @forwarder ||= ActivityPub::Forwarder.new(@account, @activity_json, @status)
end end
end end

View file

@ -39,12 +39,12 @@ class StatusesSearchService < BaseService
end end
if @options[:min_id] if @options[:min_id]
timestamp = Mastodon::Snowflake.to_time(@options[:min_id]) timestamp = Mastodon::Snowflake.to_time(@options[:min_id].to_i)
syntax_options << "after:\"#{timestamp.iso8601}\"" syntax_options << "after:\"#{timestamp.iso8601}\""
end end
if @options[:max_id] if @options[:max_id]
timestamp = Mastodon::Snowflake.to_time(@options[:max_id]) timestamp = Mastodon::Snowflake.to_time(@options[:max_id].to_i)
syntax_options << "before:\"#{timestamp.iso8601}\"" syntax_options << "before:\"#{timestamp.iso8601}\""
end end

View file

@ -41,12 +41,12 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService, type: :service do
describe '#call' do describe '#call' do
it 'updates text' do it 'updates text' do
subject.call(status, json) subject.call(status, json, json)
expect(status.reload.text).to eq 'Hello universe' expect(status.reload.text).to eq 'Hello universe'
end end
it 'updates content warning' do it 'updates content warning' do
subject.call(status, json) subject.call(status, json, json)
expect(status.reload.spoiler_text).to eq 'Show more' expect(status.reload.spoiler_text).to eq 'Show more'
end end
@ -64,7 +64,7 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService, type: :service do
end end
before do before do
subject.call(status, json) subject.call(status, json, json)
end end
it 'does not create any edits' do it 'does not create any edits' do
@ -87,7 +87,7 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService, type: :service do
end end
before do before do
subject.call(status, json) subject.call(status, json, json)
end end
it 'does not create any edits' do it 'does not create any edits' do
@ -134,7 +134,7 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService, type: :service do
end end
before do before do
subject.call(status, json) subject.call(status, json, json)
end end
it 'does not create any edits' do it 'does not create any edits' do
@ -186,7 +186,7 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService, type: :service do
end end
before do before do
subject.call(status, json) subject.call(status, json, json)
end end
it 'does not create any edits' do it 'does not create any edits' do
@ -214,11 +214,11 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService, type: :service do
end end
it 'does not create any edits' do it 'does not create any edits' do
expect { subject.call(status, json) }.to_not(change { status.reload.edits.pluck(&:id) }) expect { subject.call(status, json, json) }.to_not(change { status.reload.edits.pluck(&:id) })
end end
it 'does not update the text, spoiler_text or edited_at' do it 'does not update the text, spoiler_text or edited_at' do
expect { subject.call(status, json) }.to_not(change { s = status.reload; [s.text, s.spoiler_text, s.edited_at] }) expect { subject.call(status, json, json) }.to_not(change { s = status.reload; [s.text, s.spoiler_text, s.edited_at] })
end end
end end
@ -233,7 +233,7 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService, type: :service do
end end
before do before do
subject.call(status, json) subject.call(status, json, json)
end end
it 'does not create any edits' do it 'does not create any edits' do
@ -257,7 +257,7 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService, type: :service do
before do before do
status.update(ordered_media_attachment_ids: nil) status.update(ordered_media_attachment_ids: nil)
subject.call(status, json) subject.call(status, json, json)
end end
it 'does not create any edits' do it 'does not create any edits' do
@ -271,7 +271,7 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService, type: :service do
context 'when originally without tags' do context 'when originally without tags' do
before do before do
subject.call(status, json) subject.call(status, json, json)
end end
it 'updates tags' do it 'updates tags' do
@ -297,7 +297,7 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService, type: :service do
end end
before do before do
subject.call(status, json) subject.call(status, json, json)
end end
it 'updates tags' do it 'updates tags' do
@ -307,7 +307,7 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService, type: :service do
context 'when originally without mentions' do context 'when originally without mentions' do
before do before do
subject.call(status, json) subject.call(status, json, json)
end end
it 'updates mentions' do it 'updates mentions' do
@ -319,7 +319,7 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService, type: :service do
let(:mentions) { [alice, bob] } let(:mentions) { [alice, bob] }
before do before do
subject.call(status, json) subject.call(status, json, json)
end end
it 'updates mentions' do it 'updates mentions' do
@ -330,7 +330,7 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService, type: :service do
context 'when originally without media attachments' do context 'when originally without media attachments' do
before do before do
stub_request(:get, 'https://example.com/foo.png').to_return(body: attachment_fixture('emojo.png')) stub_request(:get, 'https://example.com/foo.png').to_return(body: attachment_fixture('emojo.png'))
subject.call(status, json) subject.call(status, json, json)
end end
let(:payload) do let(:payload) do
@ -380,7 +380,7 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService, type: :service do
before do before do
allow(RedownloadMediaWorker).to receive(:perform_async) allow(RedownloadMediaWorker).to receive(:perform_async)
subject.call(status, json) subject.call(status, json, json)
end end
it 'updates the existing media attachment in-place' do it 'updates the existing media attachment in-place' do
@ -408,7 +408,7 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService, type: :service do
before do before do
poll = Fabricate(:poll, status: status) poll = Fabricate(:poll, status: status)
status.update(preloadable_poll: poll) status.update(preloadable_poll: poll)
subject.call(status, json) subject.call(status, json, json)
end end
it 'removes poll' do it 'removes poll' do
@ -438,7 +438,7 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService, type: :service do
end end
before do before do
subject.call(status, json) subject.call(status, json, json)
end end
it 'creates a poll' do it 'creates a poll' do
@ -454,12 +454,12 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService, type: :service do
end end
it 'creates edit history' do it 'creates edit history' do
subject.call(status, json) subject.call(status, json, json)
expect(status.edits.reload.map(&:text)).to eq ['Hello world', 'Hello universe'] expect(status.edits.reload.map(&:text)).to eq ['Hello world', 'Hello universe']
end end
it 'sets edited timestamp' do it 'sets edited timestamp' do
subject.call(status, json) subject.call(status, json, json)
expect(status.reload.edited_at.to_s).to eq '2021-09-08 22:39:25 UTC' expect(status.reload.edited_at.to_s).to eq '2021-09-08 22:39:25 UTC'
end end
end end

View file

@ -58,20 +58,20 @@
integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ== integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==
"@babel/core@^7.10.4", "@babel/core@^7.11.1", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.22.1": "@babel/core@^7.10.4", "@babel/core@^7.11.1", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.22.1":
version "7.22.17" version "7.22.19"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.17.tgz#2f9b0b395985967203514b24ee50f9fd0639c866" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.19.tgz#b38162460a6f3baf2a424bda720b24a8aafea241"
integrity sha512-2EENLmhpwplDux5PSsZnSbnSkB3tZ6QTksgO25xwEL7pIDcNOMhF5v/s6RzwjMZzZzw9Ofc30gHv5ChCC8pifQ== integrity sha512-Q8Yj5X4LHVYTbLCKVz0//2D2aDmHF4xzCdEttYvKOnWvErGsa6geHXD6w46x64n5tP69VfeH+IfSrdyH3MLhwA==
dependencies: dependencies:
"@ampproject/remapping" "^2.2.0" "@ampproject/remapping" "^2.2.0"
"@babel/code-frame" "^7.22.13" "@babel/code-frame" "^7.22.13"
"@babel/generator" "^7.22.15" "@babel/generator" "^7.22.15"
"@babel/helper-compilation-targets" "^7.22.15" "@babel/helper-compilation-targets" "^7.22.15"
"@babel/helper-module-transforms" "^7.22.17" "@babel/helper-module-transforms" "^7.22.19"
"@babel/helpers" "^7.22.15" "@babel/helpers" "^7.22.15"
"@babel/parser" "^7.22.16" "@babel/parser" "^7.22.16"
"@babel/template" "^7.22.15" "@babel/template" "^7.22.15"
"@babel/traverse" "^7.22.17" "@babel/traverse" "^7.22.19"
"@babel/types" "^7.22.17" "@babel/types" "^7.22.19"
convert-source-map "^1.7.0" convert-source-map "^1.7.0"
debug "^4.1.0" debug "^4.1.0"
gensync "^1.0.0-beta.2" gensync "^1.0.0-beta.2"
@ -207,7 +207,7 @@
dependencies: dependencies:
"@babel/types" "^7.22.15" "@babel/types" "^7.22.15"
"@babel/helper-module-transforms@^7.22.15", "@babel/helper-module-transforms@^7.22.17": "@babel/helper-module-transforms@^7.22.15":
version "7.22.17" version "7.22.17"
resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.17.tgz#7edf129097a51ccc12443adbc6320e90eab76693" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.17.tgz#7edf129097a51ccc12443adbc6320e90eab76693"
integrity sha512-XouDDhQESrLHTpnBtCKExJdyY4gJCdrvH2Pyv8r8kovX2U8G0dRUOT45T9XlbLtuu9CLXP15eusnkprhoPV5iQ== integrity sha512-XouDDhQESrLHTpnBtCKExJdyY4gJCdrvH2Pyv8r8kovX2U8G0dRUOT45T9XlbLtuu9CLXP15eusnkprhoPV5iQ==
@ -218,6 +218,17 @@
"@babel/helper-split-export-declaration" "^7.22.6" "@babel/helper-split-export-declaration" "^7.22.6"
"@babel/helper-validator-identifier" "^7.22.15" "@babel/helper-validator-identifier" "^7.22.15"
"@babel/helper-module-transforms@^7.22.19":
version "7.22.19"
resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.19.tgz#94b1f281caa6518f02ec0f5ea2b5348e298ce266"
integrity sha512-m6h1cJvn+OJ+R3jOHp30faq5xKJ7VbjwDj5RGgHuRlU9hrMeKsGC+JpihkR5w1g7IfseCPPtZ0r7/hB4UKaYlA==
dependencies:
"@babel/helper-environment-visitor" "^7.22.5"
"@babel/helper-module-imports" "^7.22.15"
"@babel/helper-simple-access" "^7.22.5"
"@babel/helper-split-export-declaration" "^7.22.6"
"@babel/helper-validator-identifier" "^7.22.19"
"@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.22.9": "@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.22.9":
version "7.22.15" version "7.22.15"
resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.15.tgz#40ad2f6950f143900e9c1c72363c0b431a606082" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.15.tgz#40ad2f6950f143900e9c1c72363c0b431a606082"
@ -285,10 +296,10 @@
resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f"
integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==
"@babel/helper-validator-identifier@^7.22.15", "@babel/helper-validator-identifier@^7.22.5": "@babel/helper-validator-identifier@^7.22.15", "@babel/helper-validator-identifier@^7.22.19", "@babel/helper-validator-identifier@^7.22.5":
version "7.22.15" version "7.22.19"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.15.tgz#601fa28e4cc06786c18912dca138cec73b882044" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.19.tgz#2f34ab1e445f5b95e2e6edfe50ea2449e610583a"
integrity sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ== integrity sha512-Tinq7ybnEPFFXhlYOYFiSjespWQk0dq2dRNAiMdRTOYQzEGqnnNyrTxPYHP5r6wGjlF1rFgABdDV0g8EwD6Qbg==
"@babel/helper-validator-option@^7.22.15": "@babel/helper-validator-option@^7.22.15":
version "7.22.15" version "7.22.15"
@ -1123,7 +1134,7 @@
"@babel/parser" "^7.22.5" "@babel/parser" "^7.22.5"
"@babel/types" "^7.22.5" "@babel/types" "^7.22.5"
"@babel/traverse@7", "@babel/traverse@^7.22.15", "@babel/traverse@^7.22.17": "@babel/traverse@7":
version "7.22.17" version "7.22.17"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.17.tgz#b23c203ab3707e3be816043081b4a994fcacec44" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.17.tgz#b23c203ab3707e3be816043081b4a994fcacec44"
integrity sha512-xK4Uwm0JnAMvxYZxOVecss85WxTEIbTa7bnGyf/+EgCL5Zt3U7htUpEOWv9detPlamGKuRzCqw74xVglDWpPdg== integrity sha512-xK4Uwm0JnAMvxYZxOVecss85WxTEIbTa7bnGyf/+EgCL5Zt3U7htUpEOWv9detPlamGKuRzCqw74xVglDWpPdg==
@ -1139,7 +1150,23 @@
debug "^4.1.0" debug "^4.1.0"
globals "^11.1.0" globals "^11.1.0"
"@babel/types@^7.0.0", "@babel/types@^7.12.11", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.17", "@babel/types@^7.22.5": "@babel/traverse@^7.22.15", "@babel/traverse@^7.22.19":
version "7.22.19"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.19.tgz#bb2b12b7de9d7fec9e812ed89eea097b941954f8"
integrity sha512-ZCcpVPK64krfdScRbpxF6xA5fz7IOsfMwx1tcACvCzt6JY+0aHkBk7eIU8FRDSZRU5Zei6Z4JfgAxN1bqXGECg==
dependencies:
"@babel/code-frame" "^7.22.13"
"@babel/generator" "^7.22.15"
"@babel/helper-environment-visitor" "^7.22.5"
"@babel/helper-function-name" "^7.22.5"
"@babel/helper-hoist-variables" "^7.22.5"
"@babel/helper-split-export-declaration" "^7.22.6"
"@babel/parser" "^7.22.16"
"@babel/types" "^7.22.19"
debug "^4.1.0"
globals "^11.1.0"
"@babel/types@^7.0.0", "@babel/types@^7.12.11", "@babel/types@^7.20.7":
version "7.22.17" version "7.22.17"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.17.tgz#f753352c4610ffddf9c8bc6823f9ff03e2303eee" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.17.tgz#f753352c4610ffddf9c8bc6823f9ff03e2303eee"
integrity sha512-YSQPHLFtQNE5xN9tHuZnzu8vPr61wVTBZdfv1meex1NBosa4iT05k/Jw06ddJugi4bk7The/oSwQGFcksmEJQg== integrity sha512-YSQPHLFtQNE5xN9tHuZnzu8vPr61wVTBZdfv1meex1NBosa4iT05k/Jw06ddJugi4bk7The/oSwQGFcksmEJQg==
@ -1166,6 +1193,15 @@
"@babel/helper-validator-identifier" "^7.22.15" "@babel/helper-validator-identifier" "^7.22.15"
to-fast-properties "^2.0.0" to-fast-properties "^2.0.0"
"@babel/types@^7.22.15", "@babel/types@^7.22.17", "@babel/types@^7.22.19", "@babel/types@^7.22.5":
version "7.22.19"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.19.tgz#7425343253556916e440e662bb221a93ddb75684"
integrity sha512-P7LAw/LbojPzkgp5oznjE6tQEIWbp4PkkfrZDINTro9zgBRtI324/EYsiSI7lhPbpIQ+DCeR2NNmMWANGGfZsg==
dependencies:
"@babel/helper-string-parser" "^7.22.5"
"@babel/helper-validator-identifier" "^7.22.19"
to-fast-properties "^2.0.0"
"@babel/types@^7.3.3": "@babel/types@^7.3.3":
version "7.22.10" version "7.22.10"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.10.tgz#4a9e76446048f2c66982d1a989dd12b8a2d2dc03" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.10.tgz#4a9e76446048f2c66982d1a989dd12b8a2d2dc03"
@ -3937,9 +3973,9 @@ caniuse-lite@^1.0.30001502:
integrity sha512-eEFDwUOZbE24sb+Ecsx3+OvNETqjWIdabMy52oOkIgcUtAsQifjUG9q4U9dgTHJM2mfk4uEPxc0+xuFdJ629QA== integrity sha512-eEFDwUOZbE24sb+Ecsx3+OvNETqjWIdabMy52oOkIgcUtAsQifjUG9q4U9dgTHJM2mfk4uEPxc0+xuFdJ629QA==
caniuse-lite@^1.0.30001517: caniuse-lite@^1.0.30001517:
version "1.0.30001532" version "1.0.30001534"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001532.tgz#c6a4d5d2da6d2b967f0ee5e12e7f680db6ad2fca" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001534.tgz#f24a9b2a6d39630bac5c132b5dff89b39a12e7dd"
integrity sha512-FbDFnNat3nMnrROzqrsg314zhqN5LGQ1kyyMk2opcrwGbVGpHRhgCWtAgD5YJUqNAiQ+dklreil/c3Qf1dfCTw== integrity sha512-vlPVrhsCS7XaSh2VvWluIQEzVhefrUQcEsQWSS5A5V+dM07uv1qHeQzAOTGIMy9i3e9bH15+muvI/UHojVgS/Q==
caniuse-lite@^1.0.30001520: caniuse-lite@^1.0.30001520:
version "1.0.30001520" version "1.0.30001520"
@ -5084,9 +5120,9 @@ electron-to-chromium@^1.4.428:
integrity sha512-/g3UyNDmDd6ebeWapmAoiyy+Sy2HyJ+/X8KyvNeHfKRFfHaA2W8oF5fxD5F3tjBDcjpwo0iek6YNgxNXDBoEtA== integrity sha512-/g3UyNDmDd6ebeWapmAoiyy+Sy2HyJ+/X8KyvNeHfKRFfHaA2W8oF5fxD5F3tjBDcjpwo0iek6YNgxNXDBoEtA==
electron-to-chromium@^1.4.477: electron-to-chromium@^1.4.477:
version "1.4.513" version "1.4.520"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.513.tgz#41a50bf749aa7d8058ffbf7a131fc3327a7b1675" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.520.tgz#c19c25a10d87bd88a9aae2b76cae9235a50c2994"
integrity sha512-cOB0xcInjm+E5qIssHeXJ29BaUyWpMyFKT5RB3bsLENDheCja0wMkHJyiPl0NBE/VzDI7JDuNEQWhe6RitEUcw== integrity sha512-Frfus2VpYADsrh1lB3v/ft/WVFlVzOIm+Q0p7U7VqHI6qr7NWHYKe+Wif3W50n7JAFoBsWVsoU0+qDks6WQ60g==
elliptic@^6.5.3: elliptic@^6.5.3:
version "6.5.4" version "6.5.4"
@ -10717,9 +10753,9 @@ sass-loader@^10.2.0:
semver "^7.3.2" semver "^7.3.2"
sass@^1.62.1: sass@^1.62.1:
version "1.66.1" version "1.67.0"
resolved "https://registry.yarnpkg.com/sass/-/sass-1.66.1.tgz#04b51c4671e4650aa393740e66a4e58b44d055b1" resolved "https://registry.yarnpkg.com/sass/-/sass-1.67.0.tgz#fed84d74b9cd708db603b1380d6dc1f71bb24f6f"
integrity sha512-50c+zTsZOJVgFfTgwwEzkjA3/QACgdNsKueWPyAR0mRINIvLAStVQBbPg14iuqEQ74NPDbXzJARJ/O4SI1zftA== integrity sha512-SVrO9ZeX/QQyEGtuZYCVxoeAL5vGlYjJ9p4i4HFuekWl8y/LtJ7tJc10Z+ck1c8xOuoBm2MYzcLfTAffD0pl/A==
dependencies: dependencies:
chokidar ">=3.0.0 <4.0.0" chokidar ">=3.0.0 <4.0.0"
immutable "^4.0.0" immutable "^4.0.0"