+
+
diff --git a/spec/lib/activitypub/activity/create_spec.rb b/spec/lib/activitypub/activity/create_spec.rb
index d9cd0494f0..03951d6999 100644
--- a/spec/lib/activitypub/activity/create_spec.rb
+++ b/spec/lib/activitypub/activity/create_spec.rb
@@ -1046,7 +1046,7 @@ RSpec.describe ActivityPub::Activity::Create do
expect(status.mentions.map(&:account_id)).to contain_exactly(recipient.id, ancestor_account.id, mentioned_account.id, local_mentioned_account.id)
end
- it 'forwards to observers', :sidekiq_inline do
+ it 'forwards to observers', :inline_jobs do
expect(a_request(:post, 'http://or.example.com/actor/inbox')).to have_been_made.once
expect(a_request(:post, 'http://example.com/bob/inbox')).to have_been_made.once
end
@@ -1089,7 +1089,7 @@ RSpec.describe ActivityPub::Activity::Create do
expect(status.mentions.map(&:account_id)).to contain_exactly(recipient.id, ancestor_account.id, mentioned_account.id, local_mentioned_account.id, new_mentioned_account.id, new_local_mentioned_account.id)
end
- it 'forwards to observers', :sidekiq_inline do
+ it 'forwards to observers', :inline_jobs do
expect(a_request(:post, 'http://or.example.com/actor/inbox')).to have_been_made.once
expect(a_request(:post, 'http://example.com/bob/inbox')).to have_been_made.once
expect(a_request(:post, 'http://example.com/alice/inbox')).to have_been_made.once
@@ -1142,7 +1142,7 @@ RSpec.describe ActivityPub::Activity::Create do
expect(status.mentioned_accounts.map(&:uri)).to include 'https://foo.test'
end
- it 'forwards to observers', :sidekiq_inline do
+ it 'forwards to observers', :inline_jobs do
expect(a_request(:post, 'https://foo.test/inbox')).to have_been_made.once
end
end
@@ -1159,7 +1159,7 @@ RSpec.describe ActivityPub::Activity::Create do
expect(status.mentions.map(&:account_id)).to contain_exactly(recipient.id)
end
- it 'do not forward to observers', :sidekiq_inline do
+ it 'do not forward to observers', :inline_jobs do
expect(a_request(:post, 'http://or.example.com/actor/inbox')).to_not have_been_made
expect(a_request(:post, 'http://example.com/bob/inbox')).to_not have_been_made
end
diff --git a/spec/lib/activitypub/activity/delete_spec.rb b/spec/lib/activitypub/activity/delete_spec.rb
index f1631f73da..9e31533a97 100644
--- a/spec/lib/activitypub/activity/delete_spec.rb
+++ b/spec/lib/activitypub/activity/delete_spec.rb
@@ -47,7 +47,7 @@ RSpec.describe ActivityPub::Activity::Delete do
expect(Status.find_by(id: status.id)).to be_nil
end
- it 'sends delete activity to followers of rebloggers', :sidekiq_inline do
+ it 'sends delete activity to followers of rebloggers', :inline_jobs do
expect(a_request(:post, 'http://example.com/inbox')).to have_been_made.once
end
@@ -91,7 +91,7 @@ RSpec.describe ActivityPub::Activity::Delete do
subject.perform
end
- it 'forwards to parent status holder', :sidekiq_inline do
+ it 'forwards to parent status holder', :inline_jobs do
expect(a_request(:post, 'https://example.com/inbox').with(body: hash_including({
type: 'Delete',
signature: 'foo',
diff --git a/spec/lib/activitypub/activity/follow_spec.rb b/spec/lib/activitypub/activity/follow_spec.rb
index ef8ff24321..ec0e5e4eef 100644
--- a/spec/lib/activitypub/activity/follow_spec.rb
+++ b/spec/lib/activitypub/activity/follow_spec.rb
@@ -455,7 +455,7 @@ RSpec.describe ActivityPub::Activity::Follow do
stub_request(:post, 'https://example.com/inbox')
end
- it 'marks me as idle and the friend as accepted', :sidekiq_inline do
+ it 'marks me as idle and the friend as accepted', :inline_jobs do
subject.perform
expect(friend.reload.they_are_accepted?).to be true
expect(friend.i_am_idle?).to be true
@@ -503,7 +503,7 @@ RSpec.describe ActivityPub::Activity::Follow do
stub_request(:post, 'https://example.com/inbox')
end
- it 'marks the friend as accepted', :sidekiq_inline do
+ it 'marks the friend as accepted', :inline_jobs do
subject.perform
friend = FriendDomain.find_by(domain: 'abc.com')
@@ -523,7 +523,7 @@ RSpec.describe ActivityPub::Activity::Follow do
stub_request(:post, 'https://example.com/inbox')
end
- it 'marks the friend as accepted', :sidekiq_inline do
+ it 'marks the friend as accepted', :inline_jobs do
subject.perform
friend = FriendDomain.find_by(domain: 'abc.com')
diff --git a/spec/lib/activitypub/activity/move_spec.rb b/spec/lib/activitypub/activity/move_spec.rb
index 4dda014a06..d69ef21516 100644
--- a/spec/lib/activitypub/activity/move_spec.rb
+++ b/spec/lib/activitypub/activity/move_spec.rb
@@ -38,7 +38,7 @@ RSpec.describe ActivityPub::Activity::Move do
subject.perform
end
- context 'when all conditions are met', :sidekiq_inline do
+ context 'when all conditions are met', :inline_jobs do
it 'sets moved account on old account' do
expect(old_account.reload.moved_to_account_id).to eq new_account.id
end
diff --git a/spec/lib/activitypub/activity/update_spec.rb b/spec/lib/activitypub/activity/update_spec.rb
index 7f312e044b..d2c4c1ce28 100644
--- a/spec/lib/activitypub/activity/update_spec.rb
+++ b/spec/lib/activitypub/activity/update_spec.rb
@@ -138,7 +138,7 @@ RSpec.describe ActivityPub::Activity::Update do
subject.perform
end
- it 'does not create a new status', :sidekiq_inline do
+ it 'does not create a new status', :inline_jobs do
status = Status.find_by(uri: 'https://example.com/note')
expect(status).to be_nil
end
@@ -170,7 +170,7 @@ RSpec.describe ActivityPub::Activity::Update do
subject.perform
end
- it 'forwards to parent status holder', :sidekiq_inline do
+ it 'forwards to parent status holder', :inline_jobs do
expect(a_request(:post, 'https://example.com/inbox').with(body: hash_including({
type: 'Update',
signature: 'foo',
diff --git a/spec/lib/link_details_extractor_spec.rb b/spec/lib/link_details_extractor_spec.rb
index 26d9d4e265..2a4df70a8b 100644
--- a/spec/lib/link_details_extractor_spec.rb
+++ b/spec/lib/link_details_extractor_spec.rb
@@ -192,6 +192,35 @@ RSpec.describe LinkDetailsExtractor do
include_examples 'structured data'
end
+
+ context 'with author names as array' do
+ let(:ld_json) do
+ {
+ '@context' => 'https://schema.org',
+ '@type' => 'NewsArticle',
+ 'headline' => 'A lot of authors',
+ 'description' => 'But we decided to cram them into one',
+ 'author' => {
+ '@type' => 'Person',
+ 'name' => ['Author 1', 'Author 2'],
+ },
+ }.to_json
+ end
+ let(:html) { <<~HTML }
+
+
+
+
+
+
+ HTML
+
+ it 'joins author names' do
+ expect(subject.author_name).to eq 'Author 1, Author 2'
+ end
+ end
end
context 'when Open Graph protocol data is present' do
diff --git a/spec/lib/vacuum/media_attachments_vacuum_spec.rb b/spec/lib/vacuum/media_attachments_vacuum_spec.rb
index 3c17ecb000..1039c36cea 100644
--- a/spec/lib/vacuum/media_attachments_vacuum_spec.rb
+++ b/spec/lib/vacuum/media_attachments_vacuum_spec.rb
@@ -17,32 +17,21 @@ RSpec.describe Vacuum::MediaAttachmentsVacuum do
let!(:old_unattached_media) { Fabricate(:media_attachment, account_id: nil, created_at: 10.days.ago) }
let!(:new_unattached_media) { Fabricate(:media_attachment, account_id: nil, created_at: 1.hour.ago) }
- before do
- subject.perform
- end
+ before { subject.perform }
- it 'deletes cache of remote media attachments past the retention period' do
- expect(old_remote_media.reload.file).to be_blank
- end
-
- it 'does not touch local media attachments past the retention period' do
- expect(old_local_media.reload.file).to_not be_blank
- end
-
- it 'does not delete cache of remote media attachments within the retention period' do
- expect(new_remote_media.reload.file).to_not be_blank
- end
-
- it 'does not touch local media attachments within the retention period' do
- expect(new_local_media.reload.file).to_not be_blank
- end
-
- it 'deletes unattached media attachments past TTL' do
- expect { old_unattached_media.reload }.to raise_error(ActiveRecord::RecordNotFound)
- end
-
- it 'does not delete unattached media attachments within TTL' do
- expect(new_unattached_media.reload).to be_persisted
+ it 'handles attachments based on metadata details' do
+ expect(old_remote_media.reload.file) # Remote and past retention period
+ .to be_blank
+ expect(old_local_media.reload.file) # Local and past retention
+ .to_not be_blank
+ expect(new_remote_media.reload.file) # Remote and within retention
+ .to_not be_blank
+ expect(new_local_media.reload.file) # Local and within retention
+ .to_not be_blank
+ expect { old_unattached_media.reload } # Unattached and past TTL
+ .to raise_error(ActiveRecord::RecordNotFound)
+ expect(new_unattached_media.reload) # Unattached and within TTL
+ .to be_persisted
end
end
end
diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb
index 2851bbe83c..c4e5b15bac 100644
--- a/spec/models/account_spec.rb
+++ b/spec/models/account_spec.rb
@@ -1238,21 +1238,26 @@ RSpec.describe Account do
context 'when is local' do
it 'generates keys' do
- account = described_class.create!(domain: nil, username: Faker::Internet.user_name(separators: ['_']))
- expect(account.keypair).to be_private
- expect(account.keypair).to be_public
+ account = described_class.create!(domain: nil, username: 'user_without_keys')
+
+ expect(account)
+ .to be_private_key
+ .and be_public_key
+ expect(account.keypair)
+ .to be_private
+ .and be_public
end
end
context 'when is remote' do
it 'does not generate keys' do
key = OpenSSL::PKey::RSA.new(1024).public_key
- account = described_class.create!(domain: 'remote', uri: 'https://remote/actor', username: Faker::Internet.user_name(separators: ['_']), public_key: key.to_pem)
+ account = described_class.create!(domain: 'remote', uri: 'https://remote/actor', username: 'remote_user_with_public', public_key: key.to_pem)
expect(account.keypair.params).to eq key.params
end
it 'normalizes domain' do
- account = described_class.create!(domain: 'にゃん', uri: 'https://xn--r9j5b5b/actor', username: Faker::Internet.user_name(separators: ['_']))
+ account = described_class.create!(domain: 'にゃん', uri: 'https://xn--r9j5b5b/actor', username: 'remote_user_with_idn_domain')
expect(account.domain).to eq 'xn--r9j5b5b'
end
end
diff --git a/spec/models/admin/account_action_spec.rb b/spec/models/admin/account_action_spec.rb
index e55db2f814..49bc2b4a91 100644
--- a/spec/models/admin/account_action_spec.rb
+++ b/spec/models/admin/account_action_spec.rb
@@ -69,7 +69,7 @@ RSpec.describe Admin::AccountAction do
end
end
- it 'sends email to target account user', :sidekiq_inline do
+ it 'sends email to target account user', :inline_jobs do
emails = capture_emails { subject }
expect(emails).to contain_exactly(
diff --git a/spec/models/custom_emoji_spec.rb b/spec/models/custom_emoji_spec.rb
index d4fa823d8c..329bab170d 100644
--- a/spec/models/custom_emoji_spec.rb
+++ b/spec/models/custom_emoji_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-RSpec.describe CustomEmoji, :paperclip_processing do
+RSpec.describe CustomEmoji, :attachment_processing do
describe '#search' do
subject { described_class.search(search_term) }
diff --git a/spec/models/friend_domain_spec.rb b/spec/models/friend_domain_spec.rb
index b92dbe7550..98dcb9cd90 100644
--- a/spec/models/friend_domain_spec.rb
+++ b/spec/models/friend_domain_spec.rb
@@ -10,7 +10,7 @@ describe FriendDomain do
end
describe '#follow!' do
- it 'call inbox', :sidekiq_inline do
+ it 'call inbox', :inline_jobs do
friend.update(active_state: :accepted, passive_state: :accepted)
friend.follow!
expect(friend.active_follow_activity_id).to_not be_nil
@@ -27,7 +27,7 @@ describe FriendDomain do
end
describe '#unfollow!' do
- it 'call inbox', :sidekiq_inline do
+ it 'call inbox', :inline_jobs do
friend.update(active_follow_activity_id: 'ohagi', active_state: :accepted, passive_state: :accepted)
friend.unfollow!
expect(friend.active_follow_activity_id).to be_nil
@@ -46,7 +46,7 @@ describe FriendDomain do
end
describe '#accept!' do
- it 'call inbox', :sidekiq_inline do
+ it 'call inbox', :inline_jobs do
friend.update(passive_follow_activity_id: 'ohagi', active_state: :accepted, passive_state: :pending)
friend.accept!
expect(friend.they_are_accepted?).to be true
@@ -61,7 +61,7 @@ describe FriendDomain do
end
describe '#reject!' do
- it 'call inbox', :sidekiq_inline do
+ it 'call inbox', :inline_jobs do
friend.update(passive_follow_activity_id: 'ohagi', active_state: :accepted, passive_state: :pending)
friend.reject!
expect(friend.they_are_rejected?).to be true
@@ -76,7 +76,7 @@ describe FriendDomain do
end
describe '#delete!' do
- it 'call inbox', :sidekiq_inline do
+ it 'call inbox', :inline_jobs do
friend.update(active_state: :pending)
friend.destroy
expect(a_request(:post, 'https://foo.bar/inbox').with(body: hash_including({
diff --git a/spec/models/media_attachment_spec.rb b/spec/models/media_attachment_spec.rb
index a8f1ce7745..24e8ca39c1 100644
--- a/spec/models/media_attachment_spec.rb
+++ b/spec/models/media_attachment_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-RSpec.describe MediaAttachment, :paperclip_processing do
+RSpec.describe MediaAttachment, :attachment_processing do
describe 'local?' do
subject { media_attachment.local? }
diff --git a/spec/models/notification_request_spec.rb b/spec/models/notification_request_spec.rb
index 07bbc3e0a8..4adddc194f 100644
--- a/spec/models/notification_request_spec.rb
+++ b/spec/models/notification_request_spec.rb
@@ -4,9 +4,7 @@ require 'rails_helper'
RSpec.describe NotificationRequest do
describe '#reconsider_existence!' do
- subject { Fabricate(:notification_request, dismissed: dismissed) }
-
- let(:dismissed) { false }
+ subject { Fabricate(:notification_request) }
context 'when there are remaining notifications' do
before do
@@ -28,14 +26,6 @@ RSpec.describe NotificationRequest do
subject.reconsider_existence!
end
- context 'when dismissed' do
- let(:dismissed) { true }
-
- it 'leaves request intact' do
- expect(subject.destroyed?).to be false
- end
- end
-
it 'removes the request' do
expect(subject.destroyed?).to be true
end
diff --git a/spec/models/status_spec.rb b/spec/models/status_spec.rb
index 18a62e451c..7e757f0759 100644
--- a/spec/models/status_spec.rb
+++ b/spec/models/status_spec.rb
@@ -422,6 +422,41 @@ RSpec.describe Status do
end
end
+ describe '#ordered_media_attachments' do
+ let(:status) { Fabricate(:status) }
+
+ let(:first_attachment) { Fabricate(:media_attachment) }
+ let(:second_attachment) { Fabricate(:media_attachment) }
+ let(:last_attachment) { Fabricate(:media_attachment) }
+ let(:extra_attachment) { Fabricate(:media_attachment) }
+
+ before do
+ stub_const('Status::MEDIA_ATTACHMENTS_LIMIT', 3)
+
+ # Add attachments out of order
+ status.media_attachments << second_attachment
+ status.media_attachments << last_attachment
+ status.media_attachments << extra_attachment
+ status.media_attachments << first_attachment
+ end
+
+ context 'when ordered_media_attachment_ids is not set' do
+ it 'returns up to MEDIA_ATTACHMENTS_LIMIT attachments' do
+ expect(status.ordered_media_attachments.size).to eq Status::MEDIA_ATTACHMENTS_LIMIT
+ end
+ end
+
+ context 'when ordered_media_attachment_ids is set' do
+ before do
+ status.update!(ordered_media_attachment_ids: [first_attachment.id, second_attachment.id, last_attachment.id, extra_attachment.id])
+ end
+
+ it 'returns up to MEDIA_ATTACHMENTS_LIMIT attachments in the expected order' do
+ expect(status.ordered_media_attachments).to eq [first_attachment, second_attachment, last_attachment]
+ end
+ end
+ end
+
describe '.mutes_map' do
subject { described_class.mutes_map([status.conversation.id], account) }
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index 287b73e770..f6f4a2104c 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -101,7 +101,7 @@ RSpec.describe User do
end
end
- describe 'scopes', :sidekiq_inline do
+ describe 'scopes', :inline_jobs do
describe 'recent' do
it 'returns an array of recent users ordered by id' do
first_user = Fabricate(:user)
@@ -539,7 +539,7 @@ RSpec.describe User do
context 'when user is new' do
let(:confirmed_at) { nil }
- it 'confirms user and delivers welcome email', :sidekiq_inline do
+ it 'confirms user and delivers welcome email', :inline_jobs do
emails = capture_emails { subject }
expect(user.confirmed_at).to be_present
diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb
index 38aa711089..79031f1a94 100644
--- a/spec/rails_helper.rb
+++ b/spec/rails_helper.rb
@@ -120,7 +120,7 @@ RSpec.configure do |config|
end
config.around do |example|
- if example.metadata[:sidekiq_inline] == true
+ if example.metadata[:inline_jobs] == true
Sidekiq::Testing.inline!
else
Sidekiq::Testing.fake!
@@ -137,7 +137,7 @@ RSpec.configure do |config|
end
config.before do |example|
- unless example.metadata[:paperclip_processing]
+ unless example.metadata[:attachment_processing]
allow_any_instance_of(Paperclip::Attachment).to receive(:post_process).and_return(true) # rubocop:disable RSpec/AnyInstance
end
end
diff --git a/spec/requests/api/v1/accounts/statuses_spec.rb b/spec/requests/api/v1/accounts/statuses_spec.rb
index 371867b215..97cdbe0156 100644
--- a/spec/requests/api/v1/accounts/statuses_spec.rb
+++ b/spec/requests/api/v1/accounts/statuses_spec.rb
@@ -10,12 +10,15 @@ describe 'API V1 Accounts Statuses' do
describe 'GET /api/v1/accounts/:account_id/statuses' do
it 'returns expected headers', :aggregate_failures do
- Fabricate(:status, account: user.account)
+ status = Fabricate(:status, account: user.account)
get "/api/v1/accounts/#{user.account.id}/statuses", params: { limit: 1 }, headers: headers
- expect(response).to have_http_status(200)
- expect(links_from_header.size)
- .to eq(2)
+ expect(response)
+ .to have_http_status(200)
+ .and include_pagination_headers(
+ prev: api_v1_account_statuses_url(limit: 1, min_id: status.id),
+ next: api_v1_account_statuses_url(limit: 1, max_id: status.id)
+ )
end
context 'with only media' do
@@ -55,16 +58,9 @@ describe 'API V1 Accounts Statuses' do
it 'returns http success and includes a header link' do
get "/api/v1/accounts/#{user.account.id}/statuses", params: { pinned: true }, headers: headers
- expect(response).to have_http_status(200)
- expect(links_from_header.size)
- .to eq(1)
- expect(links_from_header)
- .to contain_exactly(
- have_attributes(
- href: /pinned=true/,
- attr_pairs: contain_exactly(['rel', 'prev'])
- )
- )
+ expect(response)
+ .to have_http_status(200)
+ .and include_pagination_headers(prev: api_v1_account_statuses_url(pinned: true, min_id: Status.first.id))
end
end
@@ -77,19 +73,11 @@ describe 'API V1 Accounts Statuses' do
it 'returns http success and header pagination links to prev and next' do
get "/api/v1/accounts/#{user.account.id}/statuses", params: { pinned: true }, headers: headers
- expect(response).to have_http_status(200)
- expect(links_from_header.size)
- .to eq(2)
- expect(links_from_header)
- .to contain_exactly(
- have_attributes(
- href: /pinned=true/,
- attr_pairs: contain_exactly(['rel', 'next'])
- ),
- have_attributes(
- href: /pinned=true/,
- attr_pairs: contain_exactly(['rel', 'prev'])
- )
+ expect(response)
+ .to have_http_status(200)
+ .and include_pagination_headers(
+ prev: api_v1_account_statuses_url(pinned: true, min_id: Status.first.id),
+ next: api_v1_account_statuses_url(pinned: true, max_id: Status.first.id)
)
end
end
@@ -138,12 +126,4 @@ describe 'API V1 Accounts Statuses' do
end
end
end
-
- private
-
- def links_from_header
- response
- .headers['Link']
- .links
- end
end
diff --git a/spec/requests/api/v1/admin/account_actions_spec.rb b/spec/requests/api/v1/admin/account_actions_spec.rb
index 778658508e..5bcf809401 100644
--- a/spec/requests/api/v1/admin/account_actions_spec.rb
+++ b/spec/requests/api/v1/admin/account_actions_spec.rb
@@ -10,7 +10,7 @@ RSpec.describe 'Account actions' do
let(:headers) { { 'Authorization' => "Bearer #{token.token}" } }
shared_examples 'a successful notification delivery' do
- it 'notifies the user about the action taken', :sidekiq_inline do
+ it 'notifies the user about the action taken', :inline_jobs do
emails = capture_emails { subject }
expect(emails.size)
diff --git a/spec/requests/api/v1/conversations_spec.rb b/spec/requests/api/v1/conversations_spec.rb
index caa0f5c52c..f136e1f4e8 100644
--- a/spec/requests/api/v1/conversations_spec.rb
+++ b/spec/requests/api/v1/conversations_spec.rb
@@ -10,7 +10,7 @@ RSpec.describe 'API V1 Conversations' do
let(:other) { Fabricate(:user) }
- describe 'GET /api/v1/conversations', :sidekiq_inline do
+ describe 'GET /api/v1/conversations', :inline_jobs do
before do
user.account.follow!(other.account)
PostStatusService.new.call(other.account, text: 'Hey @alice', visibility: 'direct')
@@ -20,8 +20,12 @@ RSpec.describe 'API V1 Conversations' do
it 'returns pagination headers', :aggregate_failures do
get '/api/v1/conversations', params: { limit: 1 }, headers: headers
- expect(response).to have_http_status(200)
- expect(response.headers['Link'].links.size).to eq(2)
+ expect(response)
+ .to have_http_status(200)
+ .and include_pagination_headers(
+ prev: api_v1_conversations_url(limit: 1, min_id: Status.first.id),
+ next: api_v1_conversations_url(limit: 1, max_id: Status.first.id)
+ )
end
it 'returns conversations', :aggregate_failures do
diff --git a/spec/requests/api/v1/featured_tags_spec.rb b/spec/requests/api/v1/featured_tags_spec.rb
index f499dd1d09..4b96988704 100644
--- a/spec/requests/api/v1/featured_tags_spec.rb
+++ b/spec/requests/api/v1/featured_tags_spec.rb
@@ -147,7 +147,7 @@ RSpec.describe 'FeaturedTags' do
expect(body).to be_empty
end
- it 'deletes the featured tag', :sidekiq_inline do
+ it 'deletes the featured tag', :inline_jobs do
delete "/api/v1/featured_tags/#{id}", headers: headers
featured_tag = FeaturedTag.find_by(id: id)
diff --git a/spec/requests/api/v1/media_spec.rb b/spec/requests/api/v1/media_spec.rb
index 26c76b9c5b..c89c49afdf 100644
--- a/spec/requests/api/v1/media_spec.rb
+++ b/spec/requests/api/v1/media_spec.rb
@@ -121,19 +121,19 @@ RSpec.describe 'Media' do
end
end
- context 'with image/jpeg', :paperclip_processing do
+ context 'with image/jpeg', :attachment_processing do
let(:params) { { file: fixture_file_upload('attachment.jpg', 'image/jpeg'), description: 'jpeg image' } }
it_behaves_like 'a successful media upload', 'image'
end
- context 'with image/gif', :paperclip_processing do
+ context 'with image/gif', :attachment_processing do
let(:params) { { file: fixture_file_upload('attachment.gif', 'image/gif') } }
it_behaves_like 'a successful media upload', 'image'
end
- context 'with video/webm', :paperclip_processing do
+ context 'with video/webm', :attachment_processing do
let(:params) { { file: fixture_file_upload('attachment.webm', 'video/webm') } }
it_behaves_like 'a successful media upload', 'gifv'
diff --git a/spec/requests/api/v1/notifications/policies_spec.rb b/spec/requests/api/v1/notifications/policies_spec.rb
index d02d2ed0d7..cbd4499772 100644
--- a/spec/requests/api/v1/notifications/policies_spec.rb
+++ b/spec/requests/api/v1/notifications/policies_spec.rb
@@ -8,7 +8,7 @@ RSpec.describe 'Policies' do
let(:scopes) { 'read:notifications write:notifications' }
let(:headers) { { 'Authorization' => "Bearer #{token.token}" } }
- describe 'GET /api/v1/notifications/policy', :sidekiq_inline do
+ describe 'GET /api/v1/notifications/policy', :inline_jobs do
subject do
get '/api/v1/notifications/policy', headers: headers, params: params
end
diff --git a/spec/requests/api/v1/notifications/requests_spec.rb b/spec/requests/api/v1/notifications/requests_spec.rb
index 772402a6b5..d3a9753246 100644
--- a/spec/requests/api/v1/notifications/requests_spec.rb
+++ b/spec/requests/api/v1/notifications/requests_spec.rb
@@ -8,7 +8,7 @@ RSpec.describe 'Requests' do
let(:scopes) { 'read:notifications write:notifications' }
let(:headers) { { 'Authorization' => "Bearer #{token.token}" } }
- describe 'GET /api/v1/notifications/requests', :sidekiq_inline do
+ describe 'GET /api/v1/notifications/requests', :inline_jobs do
subject do
get '/api/v1/notifications/requests', headers: headers, params: params
end
@@ -17,7 +17,6 @@ RSpec.describe 'Requests' do
before do
Fabricate(:notification_request, account: user.account)
- Fabricate(:notification_request, account: user.account, dismissed: true)
end
it_behaves_like 'forbidden for wrong scope', 'write write:notifications'
@@ -29,16 +28,6 @@ RSpec.describe 'Requests' do
expect(response).to have_http_status(200)
end
end
-
- context 'with dismissed' do
- let(:params) { { dismissed: '1' } }
-
- it 'returns http success', :aggregate_failures do
- subject
-
- expect(response).to have_http_status(200)
- end
- end
end
describe 'POST /api/v1/notifications/requests/:id/accept' do
@@ -78,15 +67,14 @@ RSpec.describe 'Requests' do
post "/api/v1/notifications/requests/#{notification_request.id}/dismiss", headers: headers
end
- let(:notification_request) { Fabricate(:notification_request, account: user.account) }
+ let!(:notification_request) { Fabricate(:notification_request, account: user.account) }
it_behaves_like 'forbidden for wrong scope', 'read read:notifications'
- it 'returns http success and dismisses the notification request', :aggregate_failures do
- subject
+ it 'returns http success and destroys the notification request', :aggregate_failures do
+ expect { subject }.to change(NotificationRequest, :count).by(-1)
expect(response).to have_http_status(200)
- expect(notification_request.reload.dismissed?).to be true
end
context 'when notification request belongs to someone else' do
diff --git a/spec/requests/api/v1/notifications_spec.rb b/spec/requests/api/v1/notifications_spec.rb
index 55d3cdac94..c9034c17dc 100644
--- a/spec/requests/api/v1/notifications_spec.rb
+++ b/spec/requests/api/v1/notifications_spec.rb
@@ -8,7 +8,7 @@ RSpec.describe 'Notifications' do
let(:scopes) { 'read:notifications write:notifications' }
let(:headers) { { 'Authorization' => "Bearer #{token.token}" } }
- describe 'GET /api/v1/notifications', :sidekiq_inline do
+ describe 'GET /api/v1/notifications', :inline_jobs do
subject do
get '/api/v1/notifications', headers: headers, params: params
end
@@ -20,8 +20,8 @@ RSpec.describe 'Notifications' do
before do
first_status = PostStatusService.new.call(user.account, text: 'Test')
ReblogService.new.call(bob.account, first_status)
- mentioning_status = PostStatusService.new.call(bob.account, text: 'Hello @alice')
- mentioning_status.mentions.first
+ PostStatusService.new.call(bob.account, text: 'Hello @alice')
+ PostStatusService.new.call(tom.account, text: 'Hello @alice', visibility: :direct) # Filtered by default
FavouriteService.new.call(bob.account, first_status)
FavouriteService.new.call(tom.account, first_status)
FollowService.new.call(bob.account, user.account)
@@ -34,10 +34,22 @@ RSpec.describe 'Notifications' do
subject
expect(response).to have_http_status(200)
- expect(body_json_types).to include 'reblog'
- expect(body_json_types).to include 'mention'
- expect(body_json_types).to include 'favourite'
- expect(body_json_types).to include 'follow'
+ expect(body_as_json.size).to eq 5
+ expect(body_json_types).to include('reblog', 'mention', 'favourite', 'follow')
+ expect(body_as_json.any? { |x| x[:filtered] }).to be false
+ end
+ end
+
+ context 'with include_filtered' do
+ let(:params) { { include_filtered: true } }
+
+ it 'returns expected notification types, including filtered notifications' do
+ subject
+
+ expect(response).to have_http_status(200)
+ expect(body_as_json.size).to eq 6
+ expect(body_json_types).to include('reblog', 'mention', 'favourite', 'follow')
+ expect(body_as_json.any? { |x| x[:filtered] }).to be true
end
end
@@ -96,7 +108,7 @@ RSpec.describe 'Notifications' do
it 'returns the requested number of notifications paginated', :aggregate_failures do
subject
- notifications = user.account.notifications
+ notifications = user.account.notifications.browserable
expect(body_as_json.size)
.to eq(params[:limit])
diff --git a/spec/requests/api/v1/polls/votes_spec.rb b/spec/requests/api/v1/polls/votes_spec.rb
index e2b22708be..669f64b6e4 100644
--- a/spec/requests/api/v1/polls/votes_spec.rb
+++ b/spec/requests/api/v1/polls/votes_spec.rb
@@ -10,9 +10,10 @@ RSpec.describe 'API V1 Polls Votes' do
describe 'POST /api/v1/polls/:poll_id/votes' do
let(:poll) { Fabricate(:poll) }
+ let(:params) { { choices: %w(1) } }
before do
- post "/api/v1/polls/#{poll.id}/votes", params: { choices: %w(1) }, headers: headers
+ post "/api/v1/polls/#{poll.id}/votes", params: params, headers: headers
end
it 'creates a vote', :aggregate_failures do
@@ -24,6 +25,14 @@ RSpec.describe 'API V1 Polls Votes' do
expect(poll.reload.cached_tallies).to eq [0, 1]
end
+ context 'when the required choices param is not provided' do
+ let(:params) { {} }
+
+ it 'returns http bad request' do
+ expect(response).to have_http_status(400)
+ end
+ end
+
private
def vote
diff --git a/spec/requests/api/v1/reports_spec.rb b/spec/requests/api/v1/reports_spec.rb
index 9e8954a4c6..491c6263d3 100644
--- a/spec/requests/api/v1/reports_spec.rb
+++ b/spec/requests/api/v1/reports_spec.rb
@@ -33,7 +33,7 @@ RSpec.describe 'Reports' do
it_behaves_like 'forbidden for wrong scope', 'read read:reports'
- it 'creates a report', :aggregate_failures, :sidekiq_inline do
+ it 'creates a report', :aggregate_failures, :inline_jobs do
emails = capture_emails { subject }
expect(response).to have_http_status(200)
diff --git a/spec/requests/api/v1/statuses/favourited_by_accounts_spec.rb b/spec/requests/api/v1/statuses/favourited_by_accounts_spec.rb
index 44296f4c37..2fd79f424b 100644
--- a/spec/requests/api/v1/statuses/favourited_by_accounts_spec.rb
+++ b/spec/requests/api/v1/statuses/favourited_by_accounts_spec.rb
@@ -29,8 +29,10 @@ RSpec.describe 'API V1 Statuses Favourited by Accounts' do
expect(response)
.to have_http_status(200)
- expect(response.headers['Link'].links.size)
- .to eq(2)
+ .and include_pagination_headers(
+ prev: api_v1_status_favourited_by_index_url(limit: 2, since_id: Favourite.last.id),
+ next: api_v1_status_favourited_by_index_url(limit: 2, max_id: Favourite.first.id)
+ )
expect(body_as_json.size)
.to eq(2)
diff --git a/spec/requests/api/v1/statuses/favourites_spec.rb b/spec/requests/api/v1/statuses/favourites_spec.rb
index 033aed7e28..22d0e4831f 100644
--- a/spec/requests/api/v1/statuses/favourites_spec.rb
+++ b/spec/requests/api/v1/statuses/favourites_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-RSpec.describe 'Favourites', :sidekiq_inline do
+RSpec.describe 'Favourites', :inline_jobs do
let(:user) { Fabricate(:user) }
let(:scopes) { 'write:favourites' }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
diff --git a/spec/requests/api/v1/statuses/reblogged_by_accounts_spec.rb b/spec/requests/api/v1/statuses/reblogged_by_accounts_spec.rb
index 6f99ce9464..5fc54042f9 100644
--- a/spec/requests/api/v1/statuses/reblogged_by_accounts_spec.rb
+++ b/spec/requests/api/v1/statuses/reblogged_by_accounts_spec.rb
@@ -28,8 +28,10 @@ RSpec.describe 'API V1 Statuses Reblogged by Accounts' do
expect(response)
.to have_http_status(200)
- expect(response.headers['Link'].links.size)
- .to eq(2)
+ .and include_pagination_headers(
+ prev: api_v1_status_reblogged_by_index_url(limit: 2, since_id: bob.statuses.first.id),
+ next: api_v1_status_reblogged_by_index_url(limit: 2, max_id: alice.statuses.first.id)
+ )
expect(body_as_json.size)
.to eq(2)
diff --git a/spec/requests/api/v1/statuses/reblogs_spec.rb b/spec/requests/api/v1/statuses/reblogs_spec.rb
index cf0a1f861d..503d804ed0 100644
--- a/spec/requests/api/v1/statuses/reblogs_spec.rb
+++ b/spec/requests/api/v1/statuses/reblogs_spec.rb
@@ -41,7 +41,7 @@ describe 'API V1 Statuses Reblogs' do
end
end
- describe 'POST /api/v1/statuses/:status_id/unreblog', :sidekiq_inline do
+ describe 'POST /api/v1/statuses/:status_id/unreblog', :inline_jobs do
context 'with public status' do
let(:status) { Fabricate(:status, account: user.account) }
diff --git a/spec/requests/api/v1/timelines/home_spec.rb b/spec/requests/api/v1/timelines/home_spec.rb
index 2bebe8cf45..96bd153aff 100644
--- a/spec/requests/api/v1/timelines/home_spec.rb
+++ b/spec/requests/api/v1/timelines/home_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe 'Home', :sidekiq_inline do
+describe 'Home', :inline_jobs do
let(:user) { Fabricate(:user) }
let(:scopes) { 'read:statuses' }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
diff --git a/spec/requests/api/v2/admin/accounts_spec.rb b/spec/requests/api/v2/admin/accounts_spec.rb
index f5db93233c..8f52c6a613 100644
--- a/spec/requests/api/v2/admin/accounts_spec.rb
+++ b/spec/requests/api/v2/admin/accounts_spec.rb
@@ -83,7 +83,8 @@ RSpec.describe 'API V2 Admin Accounts' do
let(:params) { { limit: 1 } }
it 'sets the correct pagination headers' do
- expect(response.headers['Link'].find_link(%w(rel next)).href).to eq api_v2_admin_accounts_url(limit: 1, max_id: admin_account.id)
+ expect(response)
+ .to include_pagination_headers(next: api_v2_admin_accounts_url(limit: 1, max_id: admin_account.id))
end
end
end
diff --git a/spec/requests/api/v2/media_spec.rb b/spec/requests/api/v2/media_spec.rb
index 990fa5d0ba..97540413f1 100644
--- a/spec/requests/api/v2/media_spec.rb
+++ b/spec/requests/api/v2/media_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-RSpec.describe 'Media API', :paperclip_processing do
+RSpec.describe 'Media API', :attachment_processing do
let(:user) { Fabricate(:user) }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
let(:scopes) { 'write' }
diff --git a/spec/requests/api/v2_alpha/notifications_spec.rb b/spec/requests/api/v2_alpha/notifications_spec.rb
index ac44605ac5..104651ebe3 100644
--- a/spec/requests/api/v2_alpha/notifications_spec.rb
+++ b/spec/requests/api/v2_alpha/notifications_spec.rb
@@ -8,7 +8,7 @@ RSpec.describe 'Notifications' do
let(:scopes) { 'read:notifications write:notifications' }
let(:headers) { { 'Authorization' => "Bearer #{token.token}" } }
- describe 'GET /api/v2_alpha/notifications', :sidekiq_inline do
+ describe 'GET /api/v2_alpha/notifications', :inline_jobs do
subject do
get '/api/v2_alpha/notifications', headers: headers, params: params
end
diff --git a/spec/search/models/concerns/account/statuses_search_spec.rb b/spec/search/models/concerns/account/statuses_search_spec.rb
index a1b0bf405c..b1bf4968ca 100644
--- a/spec/search/models/concerns/account/statuses_search_spec.rb
+++ b/spec/search/models/concerns/account/statuses_search_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Account::StatusesSearch, :sidekiq_inline do
+describe Account::StatusesSearch, :inline_jobs do
describe 'a non-indexable account becoming indexable' do
let(:account) { Account.find_by(username: 'search_test_account_1') }
diff --git a/spec/services/activate_remote_statuses_service_spec.rb b/spec/services/activate_remote_statuses_service_spec.rb
index 73b23159ed..e42e1a7346 100644
--- a/spec/services/activate_remote_statuses_service_spec.rb
+++ b/spec/services/activate_remote_statuses_service_spec.rb
@@ -36,7 +36,7 @@ RSpec.describe ActivateRemoteStatusesService, type: :service do
subject
end
- it 'original status is fetched', :sidekiq_inline do
+ it 'original status is fetched', :inline_jobs do
status = sender.statuses.first
expect(status).to_not be_nil
@@ -54,7 +54,7 @@ RSpec.describe ActivateRemoteStatusesService, type: :service do
subject
end
- it 'original status is not fetched', :sidekiq_inline do
+ it 'original status is not fetched', :inline_jobs do
status = sender.statuses.first
expect(status).to be_nil
diff --git a/spec/services/activitypub/fetch_remote_status_service_spec.rb b/spec/services/activitypub/fetch_remote_status_service_spec.rb
index a86f141fe0..c3adb9c470 100644
--- a/spec/services/activitypub/fetch_remote_status_service_spec.rb
+++ b/spec/services/activitypub/fetch_remote_status_service_spec.rb
@@ -225,7 +225,7 @@ RSpec.describe ActivityPub::FetchRemoteStatusService do
end
end
- context 'with statuses referencing other statuses', :sidekiq_inline do
+ context 'with statuses referencing other statuses', :inline_jobs do
before do
stub_const 'ActivityPub::FetchRemoteStatusService::DISCOVERIES_PER_REQUEST', 5
end
diff --git a/spec/services/activitypub/process_account_service_spec.rb b/spec/services/activitypub/process_account_service_spec.rb
index f801227f57..5f6822185c 100644
--- a/spec/services/activitypub/process_account_service_spec.rb
+++ b/spec/services/activitypub/process_account_service_spec.rb
@@ -611,7 +611,7 @@ RSpec.describe ActivityPub::ProcessAccountService do
end
end
- it 'creates accounts without exceeding rate limit', :sidekiq_inline do
+ it 'creates accounts without exceeding rate limit', :inline_jobs do
expect { subject.call('user1', 'foo.test', payload) }
.to create_some_remote_accounts
.and create_fewer_than_rate_limit_accounts
diff --git a/spec/services/appeal_service_spec.rb b/spec/services/appeal_service_spec.rb
index 3fad74db9d..6a47bb2cea 100644
--- a/spec/services/appeal_service_spec.rb
+++ b/spec/services/appeal_service_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-RSpec.describe AppealService, :sidekiq_inline do
+RSpec.describe AppealService, :inline_jobs do
describe '#call' do
let!(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
diff --git a/spec/services/authorize_follow_service_spec.rb b/spec/services/authorize_follow_service_spec.rb
index be2a864185..533b791fb7 100644
--- a/spec/services/authorize_follow_service_spec.rb
+++ b/spec/services/authorize_follow_service_spec.rb
@@ -41,7 +41,7 @@ RSpec.describe AuthorizeFollowService do
expect(bob.following?(sender)).to be true
end
- it 'sends an accept activity', :sidekiq_inline do
+ it 'sends an accept activity', :inline_jobs do
expect(a_request(:post, bob.inbox_url)).to have_been_made.once
end
end
diff --git a/spec/services/batched_remove_status_service_spec.rb b/spec/services/batched_remove_status_service_spec.rb
index e501b9ba84..628bb198ef 100644
--- a/spec/services/batched_remove_status_service_spec.rb
+++ b/spec/services/batched_remove_status_service_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-RSpec.describe BatchedRemoveStatusService, :sidekiq_inline do
+RSpec.describe BatchedRemoveStatusService, :inline_jobs do
subject { described_class.new }
let!(:alice) { Fabricate(:account) }
diff --git a/spec/services/block_domain_service_spec.rb b/spec/services/block_domain_service_spec.rb
index 379c8b0911..1e0d55147c 100644
--- a/spec/services/block_domain_service_spec.rb
+++ b/spec/services/block_domain_service_spec.rb
@@ -70,7 +70,7 @@ RSpec.describe BlockDomainService do
end
describe 'for a silence with reject media' do
- it 'does not mark the domain as blocked, but silences accounts with an appropriate silencing date, clears media', :aggregate_failures, :sidekiq_inline do
+ it 'does not mark the domain as blocked, but silences accounts with an appropriate silencing date, clears media', :aggregate_failures, :inline_jobs do
subject.call(DomainBlock.create!(domain: 'evil.org', severity: :silence, reject_media: true))
expect(DomainBlock.blocked?('evil.org')).to be false
diff --git a/spec/services/block_service_spec.rb b/spec/services/block_service_spec.rb
index d096aa1ea3..46dd691986 100644
--- a/spec/services/block_service_spec.rb
+++ b/spec/services/block_service_spec.rb
@@ -33,7 +33,7 @@ RSpec.describe BlockService do
expect(sender.blocking?(bob)).to be true
end
- it 'sends a block activity', :sidekiq_inline do
+ it 'sends a block activity', :inline_jobs do
expect(a_request(:post, 'http://example.com/inbox')).to have_been_made.once
end
end
diff --git a/spec/services/delete_account_service_spec.rb b/spec/services/delete_account_service_spec.rb
index e9226f3e04..9055dc8819 100644
--- a/spec/services/delete_account_service_spec.rb
+++ b/spec/services/delete_account_service_spec.rb
@@ -119,7 +119,7 @@ RSpec.describe DeleteAccountService do
end
end
- describe '#call on local account', :sidekiq_inline do
+ describe '#call on local account', :inline_jobs do
before do
stub_request(:post, remote_alice.inbox_url).to_return(status: 201)
stub_request(:post, remote_bob.inbox_url).to_return(status: 201)
@@ -140,7 +140,7 @@ RSpec.describe DeleteAccountService do
end
end
- describe '#call on remote account', :sidekiq_inline do
+ describe '#call on remote account', :inline_jobs do
before do
stub_request(:post, account.inbox_url).to_return(status: 201)
end
diff --git a/spec/services/delivery_antenna_service_spec.rb b/spec/services/delivery_antenna_service_spec.rb
index 83546ccbfe..17cc832d43 100644
--- a/spec/services/delivery_antenna_service_spec.rb
+++ b/spec/services/delivery_antenna_service_spec.rb
@@ -88,11 +88,11 @@ RSpec.describe DeliveryAntennaService, type: :service do
let!(:antenna) { antenna_with_account(bob, alice) }
let!(:empty_antenna) { antenna_with_account(tom, bob) }
- it 'detecting antenna', :sidekiq_inline do
+ it 'detecting antenna', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
end
- it 'not detecting antenna', :sidekiq_inline do
+ it 'not detecting antenna', :inline_jobs do
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
end
@@ -100,7 +100,7 @@ RSpec.describe DeliveryAntennaService, type: :service do
context 'when blocked' do
let!(:empty_antenna) { antenna_with_account(ohagi, alice) }
- it 'not detecting antenna', :sidekiq_inline do
+ it 'not detecting antenna', :inline_jobs do
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
end
@@ -109,7 +109,7 @@ RSpec.describe DeliveryAntennaService, type: :service do
let(:last_active_at_tom) { Time.now.utc.ago(1.year) }
let!(:empty_antenna) { antenna_with_account(tom, alice) }
- it 'not detecting antenna', :sidekiq_inline do
+ it 'not detecting antenna', :inline_jobs do
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
end
@@ -119,11 +119,11 @@ RSpec.describe DeliveryAntennaService, type: :service do
let!(:antenna) { antenna_with_domain(bob, 'fast.example.com') }
let!(:empty_antenna) { antenna_with_domain(tom, 'ohagi.example.com') }
- it 'detecting antenna', :sidekiq_inline do
+ it 'detecting antenna', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
end
- it 'not detecting antenna', :sidekiq_inline do
+ it 'not detecting antenna', :inline_jobs do
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
end
@@ -133,18 +133,18 @@ RSpec.describe DeliveryAntennaService, type: :service do
let!(:antenna) { antenna_with_domain(bob, 'cb6e6126.ngrok.io') }
let!(:empty_antenna) { antenna_with_domain(tom, 'ohagi.example.com') }
- it 'detecting antenna', :sidekiq_inline do
+ it 'detecting antenna', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
end
- it 'not detecting antenna', :sidekiq_inline do
+ it 'not detecting antenna', :inline_jobs do
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
context 'when local timeline is disabled' do
let(:ltl_enabled) { false }
- it 'not detecting antenna', :sidekiq_inline do
+ it 'not detecting antenna', :inline_jobs do
expect(antenna_feed_of(antenna)).to_not include status.id
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
@@ -155,11 +155,11 @@ RSpec.describe DeliveryAntennaService, type: :service do
let!(:antenna) { antenna_with_tag(bob, 'hoge') }
let!(:empty_antenna) { antenna_with_tag(tom, 'hog') }
- it 'detecting antenna', :sidekiq_inline do
+ it 'detecting antenna', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
end
- it 'not detecting antenna', :sidekiq_inline do
+ it 'not detecting antenna', :inline_jobs do
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
end
@@ -168,11 +168,11 @@ RSpec.describe DeliveryAntennaService, type: :service do
let!(:antenna) { antenna_with_keyword(bob, 'body') }
let!(:empty_antenna) { antenna_with_keyword(tom, 'anime') }
- it 'detecting antenna', :sidekiq_inline do
+ it 'detecting antenna', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
end
- it 'not detecting antenna', :sidekiq_inline do
+ it 'not detecting antenna', :inline_jobs do
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
end
@@ -182,11 +182,11 @@ RSpec.describe DeliveryAntennaService, type: :service do
let!(:antenna) { antenna_with_keyword(bob, 'some') }
let!(:empty_antenna) { antenna_with_keyword(tom, 'anime') }
- it 'detecting antenna', :sidekiq_inline do
+ it 'detecting antenna', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
end
- it 'not detecting antenna', :sidekiq_inline do
+ it 'not detecting antenna', :inline_jobs do
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
end
@@ -196,11 +196,11 @@ RSpec.describe DeliveryAntennaService, type: :service do
let!(:antenna) { antenna_with_keyword(bob, 'body') }
let!(:empty_antenna) { antenna_with_keyword(tom, 'anime') }
- it 'detecting antenna', :sidekiq_inline do
+ it 'detecting antenna', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
end
- it 'not detecting antenna', :sidekiq_inline do
+ it 'not detecting antenna', :inline_jobs do
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
end
@@ -210,11 +210,11 @@ RSpec.describe DeliveryAntennaService, type: :service do
let!(:antenna) { antenna_with_domain(bob, 'fast.example.com', exclude_accounts: [tom.id]) }
let!(:empty_antenna) { antenna_with_domain(tom, 'fast.example.com', exclude_accounts: [alice.id]) }
- it 'detecting antenna', :sidekiq_inline do
+ it 'detecting antenna', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
end
- it 'not detecting antenna', :sidekiq_inline do
+ it 'not detecting antenna', :inline_jobs do
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
end
@@ -224,11 +224,11 @@ RSpec.describe DeliveryAntennaService, type: :service do
let!(:antenna) { antenna_with_domain(bob, 'fast.example.com', exclude_keywords: ['aaa']) }
let!(:empty_antenna) { antenna_with_domain(tom, 'fast.example.com', exclude_keywords: ['body']) }
- it 'detecting antenna', :sidekiq_inline do
+ it 'detecting antenna', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
end
- it 'not detecting antenna', :sidekiq_inline do
+ it 'not detecting antenna', :inline_jobs do
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
end
@@ -238,11 +238,11 @@ RSpec.describe DeliveryAntennaService, type: :service do
let!(:antenna) { antenna_with_domain(bob, 'fast.example.com') }
let!(:empty_antenna) { antenna_with_domain(tom, 'fast.example.com', exclude_tags: [Tag.find_or_create_by_names(['hoge']).first.id]) }
- it 'detecting antenna', :sidekiq_inline do
+ it 'detecting antenna', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
end
- it 'not detecting antenna', :sidekiq_inline do
+ it 'not detecting antenna', :inline_jobs do
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
end
@@ -252,11 +252,11 @@ RSpec.describe DeliveryAntennaService, type: :service do
let!(:antenna) { antenna_with_keyword(bob, 'body', exclude_domains: ['ohagi.example.com']) }
let!(:empty_antenna) { antenna_with_keyword(tom, 'body', exclude_domains: ['fast.example.com']) }
- it 'detecting antenna', :sidekiq_inline do
+ it 'detecting antenna', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
end
- it 'not detecting antenna', :sidekiq_inline do
+ it 'not detecting antenna', :inline_jobs do
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
end
@@ -265,7 +265,7 @@ RSpec.describe DeliveryAntennaService, type: :service do
let!(:antenna) { antenna_with_keyword(bob, 'body') }
let!(:empty_antenna) { antenna_with_keyword(tom, 'body') }
- it 'detecting antenna', :sidekiq_inline do
+ it 'detecting antenna', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
expect(antenna_feed_of(empty_antenna)).to include status.id
end
@@ -276,7 +276,7 @@ RSpec.describe DeliveryAntennaService, type: :service do
let!(:empty_antenna) { antenna_with_keyword(tom, 'body') }
[1, 2, 3, 4, 5].each do |_|
- it 'detecting antenna', :sidekiq_inline do
+ it 'detecting antenna', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
expect(antenna_feed_of(empty_antenna)).to include status.id
end
@@ -287,7 +287,7 @@ RSpec.describe DeliveryAntennaService, type: :service do
let!(:antenna) { antenna_with_keyword(bob, 'body', insert_feeds: true) }
let!(:empty_antenna) { antenna_with_keyword(tom, 'body', insert_feeds: true) }
- it 'detecting antenna', :sidekiq_inline do
+ it 'detecting antenna', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
expect(home_feed_of(bob)).to include status.id
expect(antenna_feed_of(empty_antenna)).to include status.id
@@ -299,7 +299,7 @@ RSpec.describe DeliveryAntennaService, type: :service do
let!(:antenna) { antenna_with_keyword(bob, 'body', insert_feeds: true, list: list(bob)) }
let!(:empty_antenna) { antenna_with_keyword(tom, 'body', insert_feeds: true, list: list(tom)) }
- it 'detecting antenna', :sidekiq_inline do
+ it 'detecting antenna', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
expect(list_feed_of(antenna.list)).to include status.id
expect(antenna_feed_of(empty_antenna)).to include status.id
@@ -313,11 +313,11 @@ RSpec.describe DeliveryAntennaService, type: :service do
let(:visibility) { :unlisted }
context 'when public searchability' do
- it 'detecting antenna', :sidekiq_inline do
+ it 'detecting antenna', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
end
- it 'not detecting antenna', :sidekiq_inline do
+ it 'not detecting antenna', :inline_jobs do
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
end
@@ -325,11 +325,11 @@ RSpec.describe DeliveryAntennaService, type: :service do
context 'when public_unlisted searchability' do
let(:searchability) { :public_unlisted }
- it 'detecting antenna', :sidekiq_inline do
+ it 'detecting antenna', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
end
- it 'not detecting antenna', :sidekiq_inline do
+ it 'not detecting antenna', :inline_jobs do
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
end
@@ -337,7 +337,7 @@ RSpec.describe DeliveryAntennaService, type: :service do
context 'when private searchability' do
let(:searchability) { :private }
- it 'not detecting antenna', :sidekiq_inline do
+ it 'not detecting antenna', :inline_jobs do
expect(antenna_feed_of(antenna)).to_not include status.id
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
@@ -350,7 +350,7 @@ RSpec.describe DeliveryAntennaService, type: :service do
let(:visibility) { :unlisted }
context 'when public searchability' do
- it 'detecting antenna', :sidekiq_inline do
+ it 'detecting antenna', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
expect(antenna_feed_of(empty_antenna)).to include status.id
end
@@ -359,7 +359,7 @@ RSpec.describe DeliveryAntennaService, type: :service do
context 'when public_unlisted searchability' do
let(:searchability) { :public_unlisted }
- it 'detecting antenna', :sidekiq_inline do
+ it 'detecting antenna', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
expect(antenna_feed_of(empty_antenna)).to include status.id
end
@@ -368,7 +368,7 @@ RSpec.describe DeliveryAntennaService, type: :service do
context 'when private searchability' do
let(:searchability) { :private }
- it 'detecting antenna', :sidekiq_inline do
+ it 'detecting antenna', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
expect(antenna_feed_of(empty_antenna)).to include status.id
end
@@ -379,7 +379,7 @@ RSpec.describe DeliveryAntennaService, type: :service do
let(:mode) { :stl }
let!(:antenna) { antenna_with_keyword(bob, 'anime', stl: true) }
- it 'detecting antenna', :sidekiq_inline do
+ it 'detecting antenna', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
end
end
@@ -388,7 +388,7 @@ RSpec.describe DeliveryAntennaService, type: :service do
let(:mode) { :ltl }
let!(:antenna) { antenna_with_keyword(bob, 'anime', ltl: true) }
- it 'detecting antenna', :sidekiq_inline do
+ it 'detecting antenna', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
end
end
@@ -397,7 +397,7 @@ RSpec.describe DeliveryAntennaService, type: :service do
let(:mode) { :stl }
let!(:antenna) { antenna_with_keyword(bob, 'anime', exclude_keywords: ['body'], stl: true) }
- it 'detecting antenna', :sidekiq_inline do
+ it 'detecting antenna', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
end
end
@@ -406,7 +406,7 @@ RSpec.describe DeliveryAntennaService, type: :service do
let(:mode) { :ltl }
let!(:antenna) { antenna_with_keyword(bob, 'anime', exclude_keywords: ['body'], ltl: true) }
- it 'detecting antenna', :sidekiq_inline do
+ it 'detecting antenna', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
end
end
diff --git a/spec/services/emoji_react_service_spec.rb b/spec/services/emoji_react_service_spec.rb
index cf0f6f5957..5ff4d80c3f 100644
--- a/spec/services/emoji_react_service_spec.rb
+++ b/spec/services/emoji_react_service_spec.rb
@@ -218,7 +218,7 @@ RSpec.describe EmojiReactService, type: :service do
stub_request(:post, 'https://author.foo.bar/inbox')
end
- it 'react with emoji', :sidekiq_inline do
+ it 'react with emoji', :inline_jobs do
expect(subject.count).to eq 1
expect(a_request(:post, 'https://author.foo.bar/inbox').with(body: hash_including({
type: 'Like',
@@ -235,7 +235,7 @@ RSpec.describe EmojiReactService, type: :service do
stub_request(:post, 'https://foo.bar/inbox')
end
- it 'react with emoji', :sidekiq_inline do
+ it 'react with emoji', :inline_jobs do
expect(subject.count).to eq 1
expect(a_request(:post, 'https://foo.bar/inbox').with(body: hash_including({
type: 'Like',
@@ -254,7 +254,7 @@ RSpec.describe EmojiReactService, type: :service do
stub_request(:post, 'https://foo.bar/inbox')
end
- it 'react with emoji', :sidekiq_inline do
+ it 'react with emoji', :inline_jobs do
expect(subject.count).to eq 1
expect(a_request(:post, 'https://foo.bar/inbox').with(body: hash_including({
type: 'Like',
@@ -270,7 +270,7 @@ RSpec.describe EmojiReactService, type: :service do
stub_request(:post, 'https://foo.bar/inbox')
end
- it 'react with emoji', :sidekiq_inline do
+ it 'react with emoji', :inline_jobs do
expect(subject.count).to eq 1
expect(a_request(:post, 'https://foo.bar/inbox').with(body: hash_including({
type: 'Like',
@@ -286,7 +286,7 @@ RSpec.describe EmojiReactService, type: :service do
stub_request(:post, 'https://foo.bar/inbox')
end
- it 'react with emoji', :sidekiq_inline do
+ it 'react with emoji', :inline_jobs do
expect(subject.count).to eq 1
expect(a_request(:post, 'https://foo.bar/inbox').with(body: hash_including({
type: 'Like',
diff --git a/spec/services/fan_out_on_write_service_spec.rb b/spec/services/fan_out_on_write_service_spec.rb
index 39f318aac1..de20af9317 100644
--- a/spec/services/fan_out_on_write_service_spec.rb
+++ b/spec/services/fan_out_on_write_service_spec.rb
@@ -85,43 +85,43 @@ RSpec.describe FanOutOnWriteService do
context 'when status is public' do
let(:visibility) { 'public' }
- it 'is added to the home feed of its author', :sidekiq_inline do
+ it 'is added to the home feed of its author', :inline_jobs do
expect(home_feed_of(alice)).to include status.id
end
- it 'is added to the home feed of the mentioned follower', :sidekiq_inline do
+ it 'is added to the home feed of the mentioned follower', :inline_jobs do
expect(home_feed_of(bob)).to include status.id
end
- it 'is added to the home feed of a follower', :sidekiq_inline do
+ it 'is added to the home feed of a follower', :inline_jobs do
expect(home_feed_of(bob)).to include status.id
expect(home_feed_of(tom)).to include status.id
end
- it 'is added to the tag follower', :sidekiq_inline do
+ it 'is added to the tag follower', :inline_jobs do
expect(home_feed_of(tagf)).to include status.id
end
- it 'is broadcast to the hashtag stream', :sidekiq_inline do
+ it 'is broadcast to the hashtag stream', :inline_jobs do
expect(redis).to have_received(:publish).with('timeline:hashtag:hoge', anything)
expect(redis).to have_received(:publish).with('timeline:hashtag:hoge:local', anything)
end
- it 'is broadcast to the public stream', :sidekiq_inline do
+ it 'is broadcast to the public stream', :inline_jobs do
expect(redis).to have_received(:publish).with('timeline:public', anything)
expect(redis).to have_received(:publish).with('timeline:public:local', anything)
expect(redis).to have_received(:publish).with('timeline:public:media', anything)
end
- context 'when local timeline is disabled', :sidekiq_inline do
+ context 'when local timeline is disabled', :inline_jobs do
let(:ltl_enabled) { false }
- it 'is broadcast to the hashtag stream', :sidekiq_inline do
+ it 'is broadcast to the hashtag stream', :inline_jobs do
expect(redis).to have_received(:publish).with('timeline:hashtag:hoge', anything)
expect(redis).to_not have_received(:publish).with('timeline:hashtag:hoge:local', anything)
end
- it 'is broadcast to the public stream', :sidekiq_inline do
+ it 'is broadcast to the public stream', :inline_jobs do
expect(redis).to have_received(:publish).with('timeline:public', anything)
expect(redis).to_not have_received(:publish).with('timeline:public:local', anything)
end
@@ -131,7 +131,7 @@ RSpec.describe FanOutOnWriteService do
let!(:list) { list_with_account(bob, alice) }
let!(:empty_list) { Fabricate(:list, account: tom) }
- it 'is added to the list feed of list follower', :sidekiq_inline do
+ it 'is added to the list feed of list follower', :inline_jobs do
expect(list_feed_of(list)).to include status.id
expect(list_feed_of(empty_list)).to_not include status.id
end
@@ -141,7 +141,7 @@ RSpec.describe FanOutOnWriteService do
let!(:antenna) { antenna_with_account(bob, alice) }
let!(:empty_antenna) { antenna_with_account(tom, bob) }
- it 'is added to the antenna feed of antenna follower', :sidekiq_inline do
+ it 'is added to the antenna feed of antenna follower', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
@@ -149,7 +149,7 @@ RSpec.describe FanOutOnWriteService do
context 'when subscription is blocked' do
let(:subscription_policy) { :block }
- it 'is not added to the antenna feed', :sidekiq_inline do
+ it 'is not added to the antenna feed', :inline_jobs do
expect(antenna_feed_of(antenna)).to_not include status.id
end
end
@@ -158,14 +158,14 @@ RSpec.describe FanOutOnWriteService do
let(:subscription_policy) { :followers_only }
let!(:antenna) { antenna_with_account(ohagi, alice) }
- it 'is not added to the antenna feed', :sidekiq_inline do
+ it 'is not added to the antenna feed', :inline_jobs do
expect(antenna_feed_of(antenna)).to_not include status.id
end
context 'with following' do
let!(:antenna) { antenna_with_account(bob, alice) }
- it 'is added to the antenna feed', :sidekiq_inline do
+ it 'is added to the antenna feed', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
end
end
@@ -181,7 +181,7 @@ RSpec.describe FanOutOnWriteService do
end
context 'with listening tag' do
- it 'is added to the antenna feed', :sidekiq_inline do
+ it 'is added to the antenna feed', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
end
end
@@ -189,7 +189,7 @@ RSpec.describe FanOutOnWriteService do
context 'with listening tag but sender is limiting subscription' do
let(:subscription_policy) { :block }
- it 'does not add to the antenna feed', :sidekiq_inline do
+ it 'does not add to the antenna feed', :inline_jobs do
expect(antenna_feed_of(antenna)).to_not include status.id
end
end
@@ -204,7 +204,7 @@ RSpec.describe FanOutOnWriteService do
subject.call(status)
end
- it 'is added to the antenna feed', :sidekiq_inline do
+ it 'is added to the antenna feed', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
end
end
@@ -215,7 +215,7 @@ RSpec.describe FanOutOnWriteService do
let!(:antenna) { antenna_with_options(bob, stl: true) }
let!(:empty_antenna) { antenna_with_options(tom) }
- it 'is added to the antenna feed of antenna follower', :sidekiq_inline do
+ it 'is added to the antenna feed of antenna follower', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
@@ -223,7 +223,7 @@ RSpec.describe FanOutOnWriteService do
context 'when subscription is blocked' do
let(:subscription_policy) { :block }
- it 'is added to the antenna feed', :sidekiq_inline do
+ it 'is added to the antenna feed', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
end
end
@@ -242,7 +242,7 @@ RSpec.describe FanOutOnWriteService do
let!(:antenna) { antenna_with_options(bob, ltl: true) }
let!(:empty_antenna) { antenna_with_options(tom) }
- it 'is added to the antenna feed of antenna follower', :sidekiq_inline do
+ it 'is added to the antenna feed of antenna follower', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
@@ -250,7 +250,7 @@ RSpec.describe FanOutOnWriteService do
context 'when subscription is blocked' do
let(:subscription_policy) { :block }
- it 'is added to the antenna feed', :sidekiq_inline do
+ it 'is added to the antenna feed', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
end
end
@@ -258,7 +258,7 @@ RSpec.describe FanOutOnWriteService do
context 'when local timeline is disabled' do
let(:ltl_enabled) { false }
- it 'is not added to the antenna feed of antenna follower', :sidekiq_inline do
+ it 'is not added to the antenna feed of antenna follower', :inline_jobs do
expect(antenna_feed_of(antenna)).to_not include status.id
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
@@ -286,23 +286,23 @@ RSpec.describe FanOutOnWriteService do
context 'when status is limited' do
let(:visibility) { 'limited' }
- it 'is added to the home feed of its author', :sidekiq_inline do
+ it 'is added to the home feed of its author', :inline_jobs do
expect(home_feed_of(alice)).to include status.id
end
- it 'is added to the home feed of the mentioned follower', :sidekiq_inline do
+ it 'is added to the home feed of the mentioned follower', :inline_jobs do
expect(home_feed_of(bob)).to include status.id
end
- it 'is not added to the home feed of the other follower', :sidekiq_inline do
+ it 'is not added to the home feed of the other follower', :inline_jobs do
expect(home_feed_of(tom)).to_not include status.id
end
- it 'is not added to the tag follower', :sidekiq_inline do
+ it 'is not added to the tag follower', :inline_jobs do
expect(home_feed_of(tagf)).to_not include status.id
end
- it 'is not broadcast publicly', :sidekiq_inline do
+ it 'is not broadcast publicly', :inline_jobs do
expect(redis).to_not have_received(:publish).with('timeline:hashtag:hoge', anything)
expect(redis).to_not have_received(:publish).with('timeline:public', anything)
end
@@ -311,7 +311,7 @@ RSpec.describe FanOutOnWriteService do
let!(:list) { list_with_account(bob, alice) }
let!(:empty_list) { list_with_account(tom, alice) }
- it 'is added to the list feed of list follower', :sidekiq_inline do
+ it 'is added to the list feed of list follower', :inline_jobs do
expect(list_feed_of(list)).to include status.id
expect(list_feed_of(empty_list)).to_not include status.id
end
@@ -321,7 +321,7 @@ RSpec.describe FanOutOnWriteService do
let!(:antenna) { antenna_with_account(bob, alice) }
let!(:empty_antenna) { antenna_with_account(tom, alice) }
- it 'is added to the antenna feed of antenna follower', :sidekiq_inline do
+ it 'is added to the antenna feed of antenna follower', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
@@ -331,7 +331,7 @@ RSpec.describe FanOutOnWriteService do
let!(:antenna) { antenna_with_options(bob, stl: true) }
let!(:empty_antenna) { antenna_with_options(tom, stl: true) }
- it 'is added to the antenna feed of antenna follower', :sidekiq_inline do
+ it 'is added to the antenna feed of antenna follower', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
@@ -340,7 +340,7 @@ RSpec.describe FanOutOnWriteService do
context 'with LTL antenna' do
let!(:empty_antenna) { antenna_with_options(bob, ltl: true) }
- it 'is added to the antenna feed of antenna follower', :sidekiq_inline do
+ it 'is added to the antenna feed of antenna follower', :inline_jobs do
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
end
@@ -349,25 +349,25 @@ RSpec.describe FanOutOnWriteService do
context 'when status is private' do
let(:visibility) { 'private' }
- it 'is added to the home feed of its author', :sidekiq_inline do
+ it 'is added to the home feed of its author', :inline_jobs do
expect(home_feed_of(alice)).to include status.id
end
- it 'is added to the home feed of a follower', :sidekiq_inline do
+ it 'is added to the home feed of a follower', :inline_jobs do
expect(home_feed_of(bob)).to include status.id
expect(home_feed_of(tom)).to include status.id
end
- it 'is not added to the tag follower', :sidekiq_inline do
+ it 'is not added to the tag follower', :inline_jobs do
expect(home_feed_of(tagf)).to_not include status.id
end
- it 'is not broadcast publicly', :sidekiq_inline do
+ it 'is not broadcast publicly', :inline_jobs do
expect(redis).to_not have_received(:publish).with('timeline:hashtag:hoge', anything)
expect(redis).to_not have_received(:publish).with('timeline:public', anything)
end
- it 'is added to the home feed of the mentioned follower', :sidekiq_inline do
+ it 'is added to the home feed of the mentioned follower', :inline_jobs do
expect(home_feed_of(bob)).to include status.id
end
@@ -375,7 +375,7 @@ RSpec.describe FanOutOnWriteService do
let!(:list) { list_with_account(bob, alice) }
let!(:empty_list) { list_with_account(ohagi, bob) }
- it 'is added to the list feed of list follower', :sidekiq_inline do
+ it 'is added to the list feed of list follower', :inline_jobs do
expect(list_feed_of(list)).to include status.id
expect(list_feed_of(empty_list)).to_not include status.id
end
@@ -385,7 +385,7 @@ RSpec.describe FanOutOnWriteService do
let!(:antenna) { antenna_with_account(bob, alice) }
let!(:empty_antenna) { antenna_with_account(ohagi, alice) }
- it 'is added to the list feed of list follower', :sidekiq_inline do
+ it 'is added to the list feed of list follower', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
@@ -395,7 +395,7 @@ RSpec.describe FanOutOnWriteService do
let!(:antenna) { antenna_with_options(bob, stl: true) }
let!(:empty_antenna) { antenna_with_options(ohagi, stl: true) }
- it 'is added to the antenna feed of antenna follower', :sidekiq_inline do
+ it 'is added to the antenna feed of antenna follower', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
@@ -403,7 +403,7 @@ RSpec.describe FanOutOnWriteService do
context 'when local timeline is disabled' do
let(:ltl_enabled) { false }
- it 'is not added to the antenna feed of antenna follower', :sidekiq_inline do
+ it 'is not added to the antenna feed of antenna follower', :inline_jobs do
expect(antenna_feed_of(antenna)).to_not include status.id
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
@@ -413,14 +413,14 @@ RSpec.describe FanOutOnWriteService do
context 'with LTL antenna' do
let!(:empty_antenna) { antenna_with_options(bob, ltl: true) }
- it 'is added to the antenna feed of antenna follower', :sidekiq_inline do
+ it 'is added to the antenna feed of antenna follower', :inline_jobs do
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
context 'when local timeline is disabled' do
let(:ltl_enabled) { false }
- it 'is not added to the antenna feed of antenna follower', :sidekiq_inline do
+ it 'is not added to the antenna feed of antenna follower', :inline_jobs do
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
end
@@ -430,20 +430,20 @@ RSpec.describe FanOutOnWriteService do
context 'when status is public_unlisted' do
let(:visibility) { 'public_unlisted' }
- it 'is added to the home feed of its author', :sidekiq_inline do
+ it 'is added to the home feed of its author', :inline_jobs do
expect(home_feed_of(alice)).to include status.id
end
- it 'is added to the home feed of a follower', :sidekiq_inline do
+ it 'is added to the home feed of a follower', :inline_jobs do
expect(home_feed_of(bob)).to include status.id
expect(home_feed_of(tom)).to include status.id
end
- it 'is added to the tag follower', :sidekiq_inline do
+ it 'is added to the tag follower', :inline_jobs do
expect(home_feed_of(tagf)).to include status.id
end
- it 'is broadcast publicly', :sidekiq_inline do
+ it 'is broadcast publicly', :inline_jobs do
expect(redis).to have_received(:publish).with('timeline:hashtag:hoge', anything)
expect(redis).to have_received(:publish).with('timeline:public:local', anything)
expect(redis).to have_received(:publish).with('timeline:public', anything)
@@ -452,12 +452,12 @@ RSpec.describe FanOutOnWriteService do
context 'when local timeline is disabled' do
let(:ltl_enabled) { false }
- it 'is broadcast to the hashtag stream', :sidekiq_inline do
+ it 'is broadcast to the hashtag stream', :inline_jobs do
expect(redis).to have_received(:publish).with('timeline:hashtag:hoge', anything)
expect(redis).to_not have_received(:publish).with('timeline:hashtag:hoge:local', anything)
end
- it 'is broadcast to the public stream', :sidekiq_inline do
+ it 'is broadcast to the public stream', :inline_jobs do
expect(redis).to have_received(:publish).with('timeline:public', anything)
expect(redis).to_not have_received(:publish).with('timeline:public:local', anything)
end
@@ -467,7 +467,7 @@ RSpec.describe FanOutOnWriteService do
let!(:list) { list_with_account(bob, alice) }
let!(:empty_list) { list_with_account(ohagi, bob) }
- it 'is added to the list feed of list follower', :sidekiq_inline do
+ it 'is added to the list feed of list follower', :inline_jobs do
expect(list_feed_of(list)).to include status.id
expect(list_feed_of(empty_list)).to_not include status.id
end
@@ -477,7 +477,7 @@ RSpec.describe FanOutOnWriteService do
let!(:antenna) { antenna_with_account(bob, alice) }
let!(:empty_antenna) { antenna_with_account(tom, bob) }
- it 'is added to the antenna feed of antenna follower', :sidekiq_inline do
+ it 'is added to the antenna feed of antenna follower', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
@@ -485,7 +485,7 @@ RSpec.describe FanOutOnWriteService do
context 'when subscription is blocked' do
let(:subscription_policy) { :block }
- it 'is not added to the antenna feed', :sidekiq_inline do
+ it 'is not added to the antenna feed', :inline_jobs do
expect(antenna_feed_of(antenna)).to_not include status.id
end
end
@@ -495,7 +495,7 @@ RSpec.describe FanOutOnWriteService do
let!(:antenna) { antenna_with_options(bob, stl: true) }
let!(:empty_antenna) { antenna_with_options(tom) }
- it 'is added to the antenna feed of antenna follower', :sidekiq_inline do
+ it 'is added to the antenna feed of antenna follower', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
@@ -503,7 +503,7 @@ RSpec.describe FanOutOnWriteService do
context 'when subscription is blocked' do
let(:subscription_policy) { :block }
- it 'is added to the antenna feed', :sidekiq_inline do
+ it 'is added to the antenna feed', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
end
end
@@ -511,7 +511,7 @@ RSpec.describe FanOutOnWriteService do
context 'when local timeline is disabled' do
let(:ltl_enabled) { false }
- it 'is not added to the antenna feed of antenna follower', :sidekiq_inline do
+ it 'is not added to the antenna feed of antenna follower', :inline_jobs do
expect(antenna_feed_of(antenna)).to_not include status.id
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
@@ -522,7 +522,7 @@ RSpec.describe FanOutOnWriteService do
let!(:antenna) { antenna_with_options(bob, ltl: true) }
let!(:empty_antenna) { antenna_with_options(tom) }
- it 'is added to the antenna feed of antenna follower', :sidekiq_inline do
+ it 'is added to the antenna feed of antenna follower', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
@@ -530,7 +530,7 @@ RSpec.describe FanOutOnWriteService do
context 'when subscription is blocked' do
let(:subscription_policy) { :block }
- it 'is added to the antenna feed', :sidekiq_inline do
+ it 'is added to the antenna feed', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
end
end
@@ -538,7 +538,7 @@ RSpec.describe FanOutOnWriteService do
context 'when local timeline is disabled' do
let(:ltl_enabled) { false }
- it 'is not added to the antenna feed of antenna follower', :sidekiq_inline do
+ it 'is not added to the antenna feed of antenna follower', :inline_jobs do
expect(antenna_feed_of(antenna)).to_not include status.id
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
@@ -549,20 +549,20 @@ RSpec.describe FanOutOnWriteService do
context 'when status is unlisted' do
let(:visibility) { 'unlisted' }
- it 'is added to the home feed of its author', :sidekiq_inline do
+ it 'is added to the home feed of its author', :inline_jobs do
expect(home_feed_of(alice)).to include status.id
end
- it 'is added to the home feed of a follower', :sidekiq_inline do
+ it 'is added to the home feed of a follower', :inline_jobs do
expect(home_feed_of(bob)).to include status.id
expect(home_feed_of(tom)).to include status.id
end
- it 'is added to the tag follower', :sidekiq_inline do
+ it 'is added to the tag follower', :inline_jobs do
expect(home_feed_of(tagf)).to include status.id
end
- it 'is not broadcast publicly', :sidekiq_inline do
+ it 'is not broadcast publicly', :inline_jobs do
expect(redis).to have_received(:publish).with('timeline:hashtag:hoge', anything)
expect(redis).to_not have_received(:publish).with('timeline:public', anything)
end
@@ -570,12 +570,12 @@ RSpec.describe FanOutOnWriteService do
context 'with searchability public_unlisted' do
let(:searchability) { 'public_unlisted' }
- it 'is broadcast to the hashtag stream', :sidekiq_inline do
+ it 'is broadcast to the hashtag stream', :inline_jobs do
expect(redis).to have_received(:publish).with('timeline:hashtag:hoge', anything)
expect(redis).to have_received(:publish).with('timeline:hashtag:hoge:local', anything)
end
- it 'is added to the tag follower', :sidekiq_inline do
+ it 'is added to the tag follower', :inline_jobs do
expect(home_feed_of(tagf)).to include status.id
end
end
@@ -583,12 +583,12 @@ RSpec.describe FanOutOnWriteService do
context 'with searchability private' do
let(:searchability) { 'private' }
- it 'is not broadcast to the hashtag stream', :sidekiq_inline do
+ it 'is not broadcast to the hashtag stream', :inline_jobs do
expect(redis).to_not have_received(:publish).with('timeline:hashtag:hoge', anything)
expect(redis).to_not have_received(:publish).with('timeline:hashtag:hoge:local', anything)
end
- it 'is not added to the tag follower', :sidekiq_inline do
+ it 'is not added to the tag follower', :inline_jobs do
expect(home_feed_of(tagf)).to_not include status.id
end
end
@@ -596,7 +596,7 @@ RSpec.describe FanOutOnWriteService do
context 'when local timeline is disabled' do
let(:ltl_enabled) { false }
- it 'is broadcast to the hashtag stream', :sidekiq_inline do
+ it 'is broadcast to the hashtag stream', :inline_jobs do
expect(redis).to have_received(:publish).with('timeline:hashtag:hoge', anything)
expect(redis).to_not have_received(:publish).with('timeline:hashtag:hoge:local', anything)
end
@@ -606,7 +606,7 @@ RSpec.describe FanOutOnWriteService do
let!(:list) { list_with_account(bob, alice) }
let!(:empty_list) { list_with_account(ohagi, bob) }
- it 'is added to the list feed of list follower', :sidekiq_inline do
+ it 'is added to the list feed of list follower', :inline_jobs do
expect(list_feed_of(list)).to include status.id
expect(list_feed_of(empty_list)).to_not include status.id
end
@@ -616,7 +616,7 @@ RSpec.describe FanOutOnWriteService do
let!(:antenna) { antenna_with_account(bob, alice) }
let!(:empty_antenna) { antenna_with_account(ohagi, alice) }
- it 'is added to the list feed of list follower', :sidekiq_inline do
+ it 'is added to the list feed of list follower', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
@@ -626,7 +626,7 @@ RSpec.describe FanOutOnWriteService do
let!(:antenna) { antenna_with_options(bob, stl: true) }
let!(:empty_antenna) { antenna_with_options(ohagi, stl: true) }
- it 'is added to the antenna feed of antenna follower', :sidekiq_inline do
+ it 'is added to the antenna feed of antenna follower', :inline_jobs do
expect(antenna_feed_of(antenna)).to include status.id
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
@@ -634,7 +634,7 @@ RSpec.describe FanOutOnWriteService do
context 'when local timeline is disabled' do
let(:ltl_enabled) { false }
- it 'is not added to the antenna feed of antenna follower', :sidekiq_inline do
+ it 'is not added to the antenna feed of antenna follower', :inline_jobs do
expect(antenna_feed_of(antenna)).to_not include status.id
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
@@ -644,14 +644,14 @@ RSpec.describe FanOutOnWriteService do
context 'with LTL antenna' do
let!(:empty_antenna) { antenna_with_options(bob, ltl: true) }
- it 'is added to the antenna feed of antenna follower', :sidekiq_inline do
+ it 'is added to the antenna feed of antenna follower', :inline_jobs do
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
context 'when local timeline is disabled' do
let(:ltl_enabled) { false }
- it 'is not added to the antenna feed of antenna follower', :sidekiq_inline do
+ it 'is not added to the antenna feed of antenna follower', :inline_jobs do
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
end
@@ -660,7 +660,7 @@ RSpec.describe FanOutOnWriteService do
context 'with non-public searchability' do
let(:searchability) { 'direct' }
- it 'hashtag-timeline is not detected', :sidekiq_inline do
+ it 'hashtag-timeline is not detected', :inline_jobs do
expect(redis).to_not have_received(:publish).with('timeline:hashtag:hoge', anything)
expect(redis).to_not have_received(:publish).with('timeline:public', anything)
end
@@ -670,23 +670,23 @@ RSpec.describe FanOutOnWriteService do
context 'when status is direct' do
let(:visibility) { 'direct' }
- it 'is added to the home feed of its author', :sidekiq_inline do
+ it 'is added to the home feed of its author', :inline_jobs do
expect(home_feed_of(alice)).to include status.id
end
- it 'is added to the home feed of the mentioned follower', :sidekiq_inline do
+ it 'is added to the home feed of the mentioned follower', :inline_jobs do
expect(home_feed_of(bob)).to include status.id
end
- it 'is not added to the home feed of the other follower', :sidekiq_inline do
+ it 'is not added to the home feed of the other follower', :inline_jobs do
expect(home_feed_of(tom)).to_not include status.id
end
- it 'is not added to the tag follower', :sidekiq_inline do
+ it 'is not added to the tag follower', :inline_jobs do
expect(home_feed_of(tagf)).to_not include status.id
end
- it 'is not broadcast publicly', :sidekiq_inline do
+ it 'is not broadcast publicly', :inline_jobs do
expect(redis).to_not have_received(:publish).with('timeline:hashtag:hoge', anything)
expect(redis).to_not have_received(:publish).with('timeline:public', anything)
end
@@ -695,7 +695,7 @@ RSpec.describe FanOutOnWriteService do
let!(:list) { list_with_account(bob, alice) }
let!(:empty_list) { list_with_account(ohagi, bob) }
- it 'is added to the list feed of list follower', :sidekiq_inline do
+ it 'is added to the list feed of list follower', :inline_jobs do
expect(list_feed_of(list)).to_not include status.id
expect(list_feed_of(empty_list)).to_not include status.id
end
@@ -705,7 +705,7 @@ RSpec.describe FanOutOnWriteService do
let!(:antenna) { antenna_with_account(bob, alice) }
let!(:empty_antenna) { antenna_with_account(ohagi, alice) }
- it 'is added to the list feed of list follower', :sidekiq_inline do
+ it 'is added to the list feed of list follower', :inline_jobs do
expect(antenna_feed_of(antenna)).to_not include status.id
expect(antenna_feed_of(empty_antenna)).to_not include status.id
end
@@ -733,28 +733,28 @@ RSpec.describe FanOutOnWriteService do
end
context 'when public visibility' do
- it 'does not create notification', :sidekiq_inline do
+ it 'does not create notification', :inline_jobs do
notification = Notification.find_by(account: bob, type: 'mention')
expect(notification).to be_nil
end
- it 'creates notification for active mention', :sidekiq_inline do
+ it 'creates notification for active mention', :inline_jobs do
notification = Notification.find_by(account: tom, type: 'mention')
expect(notification).to_not be_nil
expect(notification.mention.status_id).to eq status.id
end
- it 'inserts home feed for reply', :sidekiq_inline do
+ it 'inserts home feed for reply', :inline_jobs do
expect(home_feed_of(bob)).to include status.id
end
- it 'inserts home feed for non-replied but mentioned and following replied account', :sidekiq_inline do
+ it 'inserts home feed for non-replied but mentioned and following replied account', :inline_jobs do
expect(home_feed_of(zilu)).to include status.id
end
- it 'does not insert home feed for non-replied, non-following replied account but mentioned', :sidekiq_inline do
+ it 'does not insert home feed for non-replied, non-following replied account but mentioned', :inline_jobs do
expect(home_feed_of(tom)).to_not include status.id
end
end
@@ -762,29 +762,29 @@ RSpec.describe FanOutOnWriteService do
context 'when limited visibility' do
let(:visibility) { :limited }
- it 'creates notification', :sidekiq_inline do
+ it 'creates notification', :inline_jobs do
notification = Notification.find_by(account: bob, type: 'mention')
expect(notification).to_not be_nil
expect(notification.mention.status_id).to eq status.id
end
- it 'creates notification for other conversation account', :sidekiq_inline do
+ it 'creates notification for other conversation account', :inline_jobs do
notification = Notification.find_by(account: ohagi, type: 'mention')
expect(notification).to_not be_nil
expect(notification.mention.status_id).to eq status.id
end
- it 'inserts home feed for reply', :sidekiq_inline do
+ it 'inserts home feed for reply', :inline_jobs do
expect(home_feed_of(bob)).to include status.id
end
- it 'inserts home feed for non-replied but mentioned and following replied account', :sidekiq_inline do
+ it 'inserts home feed for non-replied but mentioned and following replied account', :inline_jobs do
expect(home_feed_of(zilu)).to include status.id
end
- it 'does not insert home feed for non-replied, non-following replied account but mentioned', :sidekiq_inline do
+ it 'does not insert home feed for non-replied, non-following replied account but mentioned', :inline_jobs do
expect(home_feed_of(tom)).to_not include status.id
end
end
@@ -800,21 +800,21 @@ RSpec.describe FanOutOnWriteService do
subject.call(status, update: true)
end
- it 'notified to boosted account', :sidekiq_inline do
+ it 'notified to boosted account', :inline_jobs do
notification = Notification.find_by(account: bob, type: 'update')
expect(notification).to_not be_nil
expect(notification.activity_id).to eq status.id
end
- it 'notified to quoted account', :sidekiq_inline do
+ it 'notified to quoted account', :inline_jobs do
notification = Notification.find_by(account: tom, type: 'update')
expect(notification).to_not be_nil
expect(notification.activity_id).to eq status.id
end
- it 'notified not to non-boosted account', :sidekiq_inline do
+ it 'notified not to non-boosted account', :inline_jobs do
notification = Notification.find_by(account: ohagi, type: 'update')
expect(notification).to be_nil
diff --git a/spec/services/favourite_service_spec.rb b/spec/services/favourite_service_spec.rb
index b09c1f2693..fb27494de5 100644
--- a/spec/services/favourite_service_spec.rb
+++ b/spec/services/favourite_service_spec.rb
@@ -33,7 +33,7 @@ RSpec.describe FavouriteService do
expect(status.favourites.first).to_not be_nil
end
- it 'sends a like activity', :sidekiq_inline do
+ it 'sends a like activity', :inline_jobs do
expect(a_request(:post, 'http://example.com/inbox')).to have_been_made.once
end
end
diff --git a/spec/services/fetch_link_card_service_spec.rb b/spec/services/fetch_link_card_service_spec.rb
index d32b482087..8dce2f1647 100644
--- a/spec/services/fetch_link_card_service_spec.rb
+++ b/spec/services/fetch_link_card_service_spec.rb
@@ -29,7 +29,12 @@ RSpec.describe FetchLinkCardService do
stub_request(:get, 'http://example.com/koi8-r').to_return(request_fixture('koi8-r.txt'))
stub_request(:get, 'http://example.com/windows-1251').to_return(request_fixture('windows-1251.txt'))
stub_request(:get, 'http://example.com/low_confidence_latin1').to_return(request_fixture('low_confidence_latin1.txt'))
+ stub_request(:get, 'http://example.com/latin1_posing_as_utf8_broken').to_return(request_fixture('latin1_posing_as_utf8_broken.txt'))
+ stub_request(:get, 'http://example.com/latin1_posing_as_utf8_recoverable').to_return(request_fixture('latin1_posing_as_utf8_recoverable.txt'))
stub_request(:get, 'http://example.com/aergerliche-umlaute').to_return(request_fixture('redirect_with_utf8_url.txt'))
+ stub_request(:get, 'http://example.com/page_without_title').to_return(request_fixture('page_without_title.txt'))
+ stub_request(:get, 'http://example.com/long_canonical_url').to_return(request_fixture('long_canonical_url.txt'))
+ stub_request(:get, 'http://example.com/alternative_utf8_spelling_in_header').to_return(request_fixture('alternative_utf8_spelling_in_header.txt'))
Rails.cache.write('oembed_endpoint:example.com', oembed_cache) if oembed_cache
@@ -112,6 +117,14 @@ RSpec.describe FetchLinkCardService do
end
end
+ context 'with a page that has no title' do
+ let(:status) { Fabricate(:status, text: 'http://example.com/page_without_title') }
+
+ it 'does not create a preview card' do
+ expect(status.preview_card).to be_nil
+ end
+ end
+
context 'with a 404 URL' do
let(:status) { Fabricate(:status, text: 'http://example.com/not-found') }
@@ -161,10 +174,30 @@ RSpec.describe FetchLinkCardService do
end
context 'with a URL of a page in ISO-8859-1 encoding, that charlock_holmes cannot detect' do
- let(:status) { Fabricate(:status, text: 'Check out http://example.com/low_confidence_latin1') }
+ context 'when encoding in http header is correct' do
+ let(:status) { Fabricate(:status, text: 'Check out http://example.com/low_confidence_latin1') }
- it 'decodes the HTML' do
- expect(status.preview_card.title).to eq("Tofu á l'orange")
+ it 'decodes the HTML' do
+ expect(status.preview_card.title).to eq("Tofu á l'orange")
+ end
+ end
+
+ context 'when encoding in http header is incorrect' do
+ context 'when encoding problems appear in unrelated tags' do
+ let(:status) { Fabricate(:status, text: 'Check out http://example.com/latin1_posing_as_utf8_recoverable') }
+
+ it 'decodes the HTML' do
+ expect(status.preview_card.title).to eq('Tofu with orange sauce')
+ end
+ end
+
+ context 'when encoding problems appear in title tag' do
+ let(:status) { Fabricate(:status, text: 'Check out http://example.com/latin1_posing_as_utf8_broken') }
+
+ it 'does not create a preview card' do
+ expect(status.preview_card).to be_nil
+ end
+ end
end
end
@@ -204,19 +237,6 @@ RSpec.describe FetchLinkCardService do
end
end
- context 'with an URL too long for PostgreSQL unique indexes' do
- let(:url) { "http://example.com/#{'a' * 2674}" }
- let(:status) { Fabricate(:status, text: url) }
-
- it 'does not fetch the URL' do
- expect(a_request(:get, url)).to_not have_been_made
- end
-
- it 'does not create a preview card' do
- expect(status.preview_card).to be_nil
- end
- end
-
context 'with a URL of a page with oEmbed support' do
let(:html) { 'Hello world' }
let(:status) { Fabricate(:status, text: 'http://example.com/html') }
@@ -294,6 +314,14 @@ RSpec.describe FetchLinkCardService do
end
end
+ context 'with a URL of a page that includes a canonical URL too long for PostgreSQL unique indexes' do
+ let(:status) { Fabricate(:status, text: 'test http://example.com/long_canonical_url') }
+
+ it 'does not create a preview card' do
+ expect(status.preview_card).to be_nil
+ end
+ end
+
context 'with URL of reference' do
let(:status) { Fabricate(:status, text: 'RT http://example.com/text') }
let(:custom_before) { true }
@@ -329,6 +357,14 @@ RSpec.describe FetchLinkCardService do
expect(status.preview_card).to be_nil
end
end
+
+ context 'with a URL where the `Content-Type` header uses `utf8` instead of `utf-8`' do
+ let(:status) { Fabricate(:status, text: 'test http://example.com/alternative_utf8_spelling_in_header') }
+
+ it 'does not create a preview card' do
+ expect(status.preview_card.title).to eq 'Webserver Configs R Us'
+ end
+ end
end
context 'with a remote status' do
diff --git a/spec/services/follow_service_spec.rb b/spec/services/follow_service_spec.rb
index 69986a1b66..a0b3b7fec4 100644
--- a/spec/services/follow_service_spec.rb
+++ b/spec/services/follow_service_spec.rb
@@ -150,7 +150,7 @@ RSpec.describe FollowService do
expect(FollowRequest.find_by(account: sender, target_account: bob)).to_not be_nil
end
- it 'sends a follow activity to the inbox', :sidekiq_inline do
+ it 'sends a follow activity to the inbox', :inline_jobs do
expect(a_request(:post, 'http://example.com/inbox')).to have_been_made.once
end
end
diff --git a/spec/services/import_service_spec.rb b/spec/services/import_service_spec.rb
index 90877d9997..0a99c5e748 100644
--- a/spec/services/import_service_spec.rb
+++ b/spec/services/import_service_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-RSpec.describe ImportService, :sidekiq_inline do
+RSpec.describe ImportService, :inline_jobs do
include RoutingHelper
let!(:account) { Fabricate(:account, locked: false) }
diff --git a/spec/services/mute_service_spec.rb b/spec/services/mute_service_spec.rb
index 681afc0b16..3bde92b87a 100644
--- a/spec/services/mute_service_spec.rb
+++ b/spec/services/mute_service_spec.rb
@@ -17,7 +17,7 @@ RSpec.describe MuteService do
redis.del(home_timeline_key)
end
- it "clears account's statuses", :sidekiq_inline do
+ it "clears account's statuses", :inline_jobs do
FeedManager.instance.push_to_home(account, status)
FeedManager.instance.push_to_home(account, other_account_status)
diff --git a/spec/services/notify_service_spec.rb b/spec/services/notify_service_spec.rb
index 8c810f1c32..c7e00129b2 100644
--- a/spec/services/notify_service_spec.rb
+++ b/spec/services/notify_service_spec.rb
@@ -105,7 +105,7 @@ RSpec.describe NotifyService do
context 'when email notification is enabled' do
let(:enabled) { true }
- it 'sends email', :sidekiq_inline do
+ it 'sends email', :inline_jobs do
emails = capture_emails { subject }
expect(emails.size)
@@ -129,6 +129,39 @@ RSpec.describe NotifyService do
end
end
+ context 'with filtered notifications' do
+ let(:unknown) { Fabricate(:account, username: 'unknown') }
+ let(:status) { Fabricate(:status, account: unknown) }
+ let(:activity) { Fabricate(:mention, account: recipient, status: status) }
+ let(:type) { :mention }
+
+ before do
+ Fabricate(:notification_policy, account: recipient, filter_not_following: true)
+ end
+
+ it 'creates a filtered notification' do
+ expect { subject }.to change(Notification, :count)
+ expect(Notification.last).to be_filtered
+ end
+
+ context 'when no notification request exists' do
+ it 'creates a notification request' do
+ expect { subject }.to change(NotificationRequest, :count)
+ end
+ end
+
+ context 'when a notification request exists' do
+ let!(:notification_request) do
+ Fabricate(:notification_request, account: recipient, from_account: unknown, last_status: Fabricate(:status, account: unknown))
+ end
+
+ it 'updates the existing notification request' do
+ expect { subject }.to_not change(NotificationRequest, :count)
+ expect(notification_request.reload.last_status).to eq status
+ end
+ end
+ end
+
describe NotifyService::DismissCondition do
subject { described_class.new(notification) }
diff --git a/spec/services/process_references_service_spec.rb b/spec/services/process_references_service_spec.rb
index d54d5e6bd9..f10a181832 100644
--- a/spec/services/process_references_service_spec.rb
+++ b/spec/services/process_references_service_spec.rb
@@ -34,14 +34,14 @@ RSpec.describe ProcessReferencesService, type: :service do
context 'when a simple case' do
let(:text) { "Hello RT #{target_status_uri}" }
- it 'post status', :sidekiq_inline do
+ it 'post status', :inline_jobs do
expect(subject.size).to eq 1
expect(subject.pluck(0)).to include target_status.id
expect(subject.pluck(1)).to include 'RT'
expect(notify?).to be true
end
- it 'not quote', :sidekiq_inline do
+ it 'not quote', :inline_jobs do
expect(status.quote).to be_nil
end
end
@@ -51,7 +51,7 @@ RSpec.describe ProcessReferencesService, type: :service do
let(:target_status2_uri) { ActivityPub::TagManager.instance.uri_for(target_status2) }
let(:text) { "Hello RT #{target_status_uri}\nBT #{target_status2_uri}" }
- it 'post status', :sidekiq_inline do
+ it 'post status', :inline_jobs do
expect(subject.size).to eq 2
expect(subject).to include [target_status.id, 'RT']
expect(subject).to include [target_status2.id, 'BT']
@@ -64,7 +64,7 @@ RSpec.describe ProcessReferencesService, type: :service do
let(:text) { "Hello RT #{target_status_uri}" }
let(:visibility) { :private }
- it 'post status', :sidekiq_inline do
+ it 'post status', :inline_jobs do
expect(subject.size).to eq 1
expect(subject.pluck(0)).to include target_status.id
expect(subject.pluck(1)).to include 'RT'
@@ -76,7 +76,7 @@ RSpec.describe ProcessReferencesService, type: :service do
let(:text) { "Hello RT #{target_status_uri}" }
let(:target_status_visibility) { :private }
- it 'post status', :sidekiq_inline do
+ it 'post status', :inline_jobs do
expect(subject.size).to eq 0
expect(notify?).to be false
end
@@ -85,7 +85,7 @@ RSpec.describe ProcessReferencesService, type: :service do
context 'with quote' do
let(:text) { "Hello QT #{target_status_uri}" }
- it 'post status', :sidekiq_inline do
+ it 'post status', :inline_jobs do
expect(subject.size).to eq 1
expect(subject.pluck(0)).to include target_status.id
expect(subject.pluck(1)).to include 'QT'
@@ -99,7 +99,7 @@ RSpec.describe ProcessReferencesService, type: :service do
let(:text) { 'Hello' }
let(:quote_urls) { [ActivityPub::TagManager.instance.uri_for(target_status)] }
- it 'post status', :sidekiq_inline do
+ it 'post status', :inline_jobs do
expect(subject.size).to eq 1
expect(subject.pluck(0)).to include target_status.id
expect(subject.pluck(1)).to include 'QT'
@@ -113,7 +113,7 @@ RSpec.describe ProcessReferencesService, type: :service do
let(:text) { "Hello QT #{target_status_uri}" }
let(:quote_urls) { [ActivityPub::TagManager.instance.uri_for(target_status)] }
- it 'post status', :sidekiq_inline do
+ it 'post status', :inline_jobs do
expect(subject.size).to eq 1
expect(subject.pluck(0)).to include target_status.id
expect(subject.pluck(1)).to include 'QT'
@@ -127,7 +127,7 @@ RSpec.describe ProcessReferencesService, type: :service do
let(:text) { "Hello RE #{target_status_uri}" }
let(:quote_urls) { [ActivityPub::TagManager.instance.uri_for(target_status)] }
- it 'post status', :sidekiq_inline do
+ it 'post status', :inline_jobs do
expect(subject.size).to eq 1
expect(subject.pluck(0)).to include target_status.id
expect(subject.pluck(1)).to include 'QT'
@@ -141,7 +141,7 @@ RSpec.describe ProcessReferencesService, type: :service do
let(:text) { "Hello QT #{target_status_uri}" }
let(:allow_quote) { false }
- it 'post status', :sidekiq_inline do
+ it 'post status', :inline_jobs do
expect(subject.size).to eq 1
expect(subject.pluck(0)).to include target_status.id
expect(subject.pluck(1)).to include 'BT'
@@ -155,7 +155,7 @@ RSpec.describe ProcessReferencesService, type: :service do
let(:target_status2_uri) { ActivityPub::TagManager.instance.uri_for(target_status2) }
let(:text) { "Hello QT #{target_status_uri}\nBT #{target_status2_uri}" }
- it 'post status', :sidekiq_inline do
+ it 'post status', :inline_jobs do
expect(subject.size).to eq 2
expect(subject).to include [target_status.id, 'QT']
expect(subject).to include [target_status2.id, 'BT']
@@ -169,7 +169,7 @@ RSpec.describe ProcessReferencesService, type: :service do
context 'when url only' do
let(:text) { "Hello #{target_status_uri}" }
- it 'post status', :sidekiq_inline do
+ it 'post status', :inline_jobs do
expect(subject.size).to eq 0
expect(notify?).to be false
end
@@ -186,7 +186,7 @@ RSpec.describe ProcessReferencesService, type: :service do
context 'when the post is known' do
let(:target_status) { Fabricate(:status, uri: 'https://example.com/note', url: 'https://web.example.com/note') }
- it 'post status', :sidekiq_inline do
+ it 'post status', :inline_jobs do
expect(subject.size).to eq 1
expect(subject.pluck(0)).to include target_status.id
expect(subject.pluck(1)).to include 'RT'
@@ -195,7 +195,7 @@ RSpec.describe ProcessReferencesService, type: :service do
end
context 'when the post is unknown' do
- it 'post status', :sidekiq_inline do
+ it 'post status', :inline_jobs do
expect(subject.size).to eq 0
expect(a_request(:get, 'https://web.example.com/note')).to_not have_been_made
end
@@ -224,7 +224,7 @@ RSpec.describe ProcessReferencesService, type: :service do
stub_request(:get, 'https://example.com/not_found').to_return(status: 404)
end
- it 'reference it', :sidekiq_inline do
+ it 'reference it', :inline_jobs do
expect(subject.size).to eq 1
expect(subject[0][1]).to eq 'BT'
@@ -236,7 +236,7 @@ RSpec.describe ProcessReferencesService, type: :service do
context 'with fetch_remote later' do
let(:fetch_remote) { false }
- it 'reference it', :sidekiq_inline do
+ it 'reference it', :inline_jobs do
ids = subject.pluck(0)
expect(ids.size).to eq 1
@@ -250,7 +250,7 @@ RSpec.describe ProcessReferencesService, type: :service do
let(:fetch_remote) { false }
let(:text) { "RT #{ActivityPub::TagManager.instance.uri_for(target_status)} BT https://example.com/test_post" }
- it 'reference it', :sidekiq_inline do
+ it 'reference it', :inline_jobs do
expect(subject.size).to eq 2
expect(subject).to include [target_status.id, 'RT']
expect(subject.pluck(1)).to include 'BT'
@@ -263,7 +263,7 @@ RSpec.describe ProcessReferencesService, type: :service do
context 'with not exists reference' do
let(:text) { 'BT https://example.com/not_found' }
- it 'reference it', :sidekiq_inline do
+ it 'reference it', :inline_jobs do
expect(subject.size).to eq 0
end
end
@@ -286,7 +286,7 @@ RSpec.describe ProcessReferencesService, type: :service do
let(:text) { 'BT:https://example.com/test_post' }
shared_examples 'reference once' do |uri, url|
- it 'reference it', :sidekiq_inline do
+ it 'reference it', :inline_jobs do
expect(subject.size).to eq 1
expect(subject[0][1]).to eq 'BT'
@@ -326,7 +326,7 @@ RSpec.describe ProcessReferencesService, type: :service do
it_behaves_like 'reference once', 'https://example.com/test_post', 'https://example.com/test_post_ohagi'
- it 'do not request to uri', :sidekiq_inline do
+ it 'do not request to uri', :inline_jobs do
subject
expect(a_request(:get, 'https://example.com/test_post_ohagi')).to_not have_been_made
end
@@ -362,7 +362,7 @@ RSpec.describe ProcessReferencesService, type: :service do
context 'when add reference to empty' do
let(:new_text) { "BT #{target_status_uri}" }
- it 'post status', :sidekiq_inline do
+ it 'post status', :inline_jobs do
expect(subject.size).to eq 1
expect(subject).to include target_status.id
expect(notify?).to be true
@@ -373,7 +373,7 @@ RSpec.describe ProcessReferencesService, type: :service do
let(:text) { "BT #{target_status_uri}" }
let(:new_text) { "BT #{target_status_uri}\nBT #{target_status2_uri}" }
- it 'post status', :sidekiq_inline do
+ it 'post status', :inline_jobs do
expect(subject.size).to eq 2
expect(subject).to include target_status.id
expect(subject).to include target_status2.id
@@ -385,7 +385,7 @@ RSpec.describe ProcessReferencesService, type: :service do
let(:text) { "BT #{target_status_uri}" }
let(:new_text) { "BT #{target_status_uri}\nBT #{target_status_uri}" }
- it 'post status', :sidekiq_inline do
+ it 'post status', :inline_jobs do
expect(subject.size).to eq 1
expect(subject).to include target_status.id
end
@@ -395,7 +395,7 @@ RSpec.describe ProcessReferencesService, type: :service do
let(:text) { "BT #{target_status_uri}" }
let(:new_text) { 'Hello' }
- it 'post status', :sidekiq_inline do
+ it 'post status', :inline_jobs do
expect(subject.size).to eq 0
expect(notify?).to be false
end
@@ -405,7 +405,7 @@ RSpec.describe ProcessReferencesService, type: :service do
let(:text) { "QT #{target_status_uri}" }
let(:new_text) { 'Hello' }
- it 'post status', :sidekiq_inline do
+ it 'post status', :inline_jobs do
expect(subject.size).to eq 0
expect(status.quote).to be_nil
expect(notify?).to be false
@@ -416,7 +416,7 @@ RSpec.describe ProcessReferencesService, type: :service do
let(:text) { "BT #{target_status_uri}" }
let(:new_text) { "BT #{target_status2_uri}" }
- it 'post status', :sidekiq_inline do
+ it 'post status', :inline_jobs do
expect(subject.size).to eq 1
expect(subject).to include target_status2.id
expect(notify?(target_status2.id)).to be true
@@ -427,7 +427,7 @@ RSpec.describe ProcessReferencesService, type: :service do
let(:text) { "QT #{target_status_uri}" }
let(:new_text) { "QT #{target_status2_uri}" }
- it 'post status', :sidekiq_inline do
+ it 'post status', :inline_jobs do
expect(subject.size).to eq 1
expect(subject).to include target_status2.id
expect(status.quote).to_not be_nil
@@ -440,7 +440,7 @@ RSpec.describe ProcessReferencesService, type: :service do
let(:text) { "QT #{target_status_uri}" }
let(:new_text) { "RT #{target_status_uri}" }
- it 'post status', :sidekiq_inline do
+ it 'post status', :inline_jobs do
expect(subject.size).to eq 1
expect(subject).to include target_status.id
expect(status.quote).to be_nil
@@ -452,7 +452,7 @@ RSpec.describe ProcessReferencesService, type: :service do
let(:text) { "RT #{target_status_uri}" }
let(:new_text) { "QT #{target_status_uri}" }
- it 'post status', :sidekiq_inline do
+ it 'post status', :inline_jobs do
expect(subject.size).to eq 1
expect(subject).to include target_status.id
expect(status.quote).to_not be_nil
diff --git a/spec/services/reject_follow_service_spec.rb b/spec/services/reject_follow_service_spec.rb
index 98aaf70478..d2c7a00206 100644
--- a/spec/services/reject_follow_service_spec.rb
+++ b/spec/services/reject_follow_service_spec.rb
@@ -41,7 +41,7 @@ RSpec.describe RejectFollowService do
expect(bob.following?(sender)).to be false
end
- it 'sends a reject activity', :sidekiq_inline do
+ it 'sends a reject activity', :inline_jobs do
expect(a_request(:post, bob.inbox_url)).to have_been_made.once
end
end
diff --git a/spec/services/remove_from_followers_service_spec.rb b/spec/services/remove_from_followers_service_spec.rb
index d6420f7674..515600096c 100644
--- a/spec/services/remove_from_followers_service_spec.rb
+++ b/spec/services/remove_from_followers_service_spec.rb
@@ -33,7 +33,7 @@ RSpec.describe RemoveFromFollowersService do
expect(bob.followed_by?(sender)).to be false
end
- it 'sends a reject activity', :sidekiq_inline do
+ it 'sends a reject activity', :inline_jobs do
expect(a_request(:post, sender.inbox_url)).to have_been_made.once
end
end
diff --git a/spec/services/remove_status_service_spec.rb b/spec/services/remove_status_service_spec.rb
index 65e755844e..da77144458 100644
--- a/spec/services/remove_status_service_spec.rb
+++ b/spec/services/remove_status_service_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-RSpec.describe RemoveStatusService, :sidekiq_inline do
+RSpec.describe RemoveStatusService, :inline_jobs do
subject { described_class.new }
let!(:alice) { Fabricate(:account) }
@@ -141,7 +141,7 @@ RSpec.describe RemoveStatusService, :sidekiq_inline do
)).to have_been_made.once
end
- it 'do not send Delete activity to followers', :sidekiq_inline do
+ it 'do not send Delete activity to followers', :inline_jobs do
subject.call(status)
expect(a_request(:post, hank.inbox_url)).to_not have_been_made
diff --git a/spec/services/report_service_spec.rb b/spec/services/report_service_spec.rb
index d77d8904db..393a59e30e 100644
--- a/spec/services/report_service_spec.rb
+++ b/spec/services/report_service_spec.rb
@@ -23,7 +23,7 @@ RSpec.describe ReportService do
stub_request(:post, 'http://example.com/inbox').to_return(status: 200)
end
- context 'when forward is true', :sidekiq_inline do
+ context 'when forward is true', :inline_jobs do
let(:forward) { true }
it 'sends ActivityPub payload when forward is true' do
@@ -53,7 +53,7 @@ RSpec.describe ReportService do
end
context 'when forward_to_domains includes only the replied-to domain' do
- it 'sends ActivityPub payload only to the author of the replied-to post', :sidekiq_inline do
+ it 'sends ActivityPub payload only to the author of the replied-to post', :inline_jobs do
subject.call(source_account, remote_account, status_ids: [reported_status.id], forward: forward, forward_to_domains: [remote_thread_account.domain])
expect(a_request(:post, 'http://foo.com/inbox')).to have_been_made
expect(a_request(:post, 'http://example.com/inbox')).to_not have_been_made
@@ -61,7 +61,7 @@ RSpec.describe ReportService do
end
context 'when forward_to_domains does not include the replied-to domain' do
- it 'does not send ActivityPub payload to the author of the replied-to post', :sidekiq_inline do
+ it 'does not send ActivityPub payload to the author of the replied-to post', :inline_jobs do
subject.call(source_account, remote_account, status_ids: [reported_status.id], forward: forward)
expect(a_request(:post, 'http://foo.com/inbox')).to_not have_been_made
end
@@ -89,7 +89,7 @@ RSpec.describe ReportService do
end
context 'when forward is false' do
- it 'does not send anything', :sidekiq_inline do
+ it 'does not send anything', :inline_jobs do
subject.call(source_account, remote_account, forward: forward)
expect(a_request(:post, 'http://example.com/inbox')).to_not have_been_made
end
diff --git a/spec/services/resolve_account_service_spec.rb b/spec/services/resolve_account_service_spec.rb
index 9e05eb09af..74e229a92a 100644
--- a/spec/services/resolve_account_service_spec.rb
+++ b/spec/services/resolve_account_service_spec.rb
@@ -199,7 +199,7 @@ RSpec.describe ResolveAccountService do
expect(account.uri).to eq 'https://ap.example.com/users/foo'
end
- it 'merges accounts', :sidekiq_inline do
+ it 'merges accounts', :inline_jobs do
account = subject.call('foo@ap.example.com')
expect(status.reload.account_id).to eq account.id
diff --git a/spec/services/suspend_account_service_spec.rb b/spec/services/suspend_account_service_spec.rb
index 7c72a4776b..4a2f494e0c 100644
--- a/spec/services/suspend_account_service_spec.rb
+++ b/spec/services/suspend_account_service_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-RSpec.describe SuspendAccountService, :sidekiq_inline do
+RSpec.describe SuspendAccountService, :inline_jobs do
shared_examples 'common behavior' do
subject { described_class.new.call(account) }
diff --git a/spec/services/un_emoji_react_service_spec.rb b/spec/services/un_emoji_react_service_spec.rb
index d435d02366..d7debc064c 100644
--- a/spec/services/un_emoji_react_service_spec.rb
+++ b/spec/services/un_emoji_react_service_spec.rb
@@ -90,7 +90,7 @@ RSpec.describe UnEmojiReactService, type: :service do
stub_request(:post, 'https://author.foo.bar/inbox')
end
- it 'react with emoji', :sidekiq_inline do
+ it 'react with emoji', :inline_jobs do
expect(subject.count).to eq 0
expect(a_request(:post, 'https://author.foo.bar/inbox').with(body: hash_including({
type: 'Undo',
@@ -107,7 +107,7 @@ RSpec.describe UnEmojiReactService, type: :service do
stub_request(:post, 'https://foo.bar/inbox')
end
- it 'react with emoji', :sidekiq_inline do
+ it 'react with emoji', :inline_jobs do
expect(subject.count).to eq 0
expect(a_request(:post, 'https://foo.bar/inbox').with(body: hash_including({
type: 'Undo',
@@ -127,7 +127,7 @@ RSpec.describe UnEmojiReactService, type: :service do
stub_request(:post, 'https://foo.bar/inbox')
end
- it 'react with emoji', :sidekiq_inline do
+ it 'react with emoji', :inline_jobs do
expect(subject.count).to eq 0
expect(a_request(:post, 'https://foo.bar/inbox').with(body: hash_including({
type: 'Undo',
@@ -145,7 +145,7 @@ RSpec.describe UnEmojiReactService, type: :service do
stub_request(:post, 'https://foo.bar/inbox')
end
- it 'react with emoji', :sidekiq_inline do
+ it 'react with emoji', :inline_jobs do
expect(subject.count).to eq 0
expect(a_request(:post, 'https://foo.bar/inbox').with(body: hash_including({
type: 'Undo',
@@ -163,7 +163,7 @@ RSpec.describe UnEmojiReactService, type: :service do
stub_request(:post, 'https://foo.bar/inbox')
end
- it 'react with emoji', :sidekiq_inline do
+ it 'react with emoji', :inline_jobs do
expect(subject.count).to eq 0
expect(a_request(:post, 'https://foo.bar/inbox').with(body: hash_including({
type: 'Undo',
diff --git a/spec/services/unallow_domain_service_spec.rb b/spec/services/unallow_domain_service_spec.rb
index caec3d596f..4bf6c54043 100644
--- a/spec/services/unallow_domain_service_spec.rb
+++ b/spec/services/unallow_domain_service_spec.rb
@@ -13,7 +13,7 @@ RSpec.describe UnallowDomainService do
let!(:already_banned_account) { Fabricate(:account, username: 'badguy', domain: bad_domain, suspended: true, silenced: true) }
let!(:domain_allow) { Fabricate(:domain_allow, domain: bad_domain) }
- context 'with limited federation mode', :sidekiq_inline do
+ context 'with limited federation mode', :inline_jobs do
before do
allow(Rails.configuration.x).to receive(:limited_federation_mode).and_return(true)
end
diff --git a/spec/services/unblock_service_spec.rb b/spec/services/unblock_service_spec.rb
index 4c9fcb9aee..6132e74415 100644
--- a/spec/services/unblock_service_spec.rb
+++ b/spec/services/unblock_service_spec.rb
@@ -33,7 +33,7 @@ RSpec.describe UnblockService do
expect(sender.blocking?(bob)).to be false
end
- it 'sends an unblock activity', :sidekiq_inline do
+ it 'sends an unblock activity', :inline_jobs do
expect(a_request(:post, 'http://example.com/inbox')).to have_been_made.once
end
end
diff --git a/spec/services/unfollow_service_spec.rb b/spec/services/unfollow_service_spec.rb
index bba17a8d27..0c206c4b98 100644
--- a/spec/services/unfollow_service_spec.rb
+++ b/spec/services/unfollow_service_spec.rb
@@ -20,7 +20,7 @@ RSpec.describe UnfollowService do
end
end
- describe 'remote ActivityPub', :sidekiq_inline do
+ describe 'remote ActivityPub', :inline_jobs do
let(:bob) { Fabricate(:account, username: 'bob', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox') }
before do
@@ -38,7 +38,7 @@ RSpec.describe UnfollowService do
end
end
- describe 'remote ActivityPub (reverse)', :sidekiq_inline do
+ describe 'remote ActivityPub (reverse)', :inline_jobs do
let(:bob) { Fabricate(:account, username: 'bob', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox') }
before do
diff --git a/spec/services/unsuspend_account_service_spec.rb b/spec/services/unsuspend_account_service_spec.rb
index 79a4441d3e..8d4882c37f 100644
--- a/spec/services/unsuspend_account_service_spec.rb
+++ b/spec/services/unsuspend_account_service_spec.rb
@@ -45,7 +45,7 @@ RSpec.describe UnsuspendAccountService do
remote_follower.follow!(account)
end
- it 'merges back into feeds of local followers and sends update', :sidekiq_inline do
+ it 'merges back into feeds of local followers and sends update', :inline_jobs do
subject
expect_feeds_merged
diff --git a/spec/services/update_account_service_spec.rb b/spec/services/update_account_service_spec.rb
index f07b1a7c02..3720e85532 100644
--- a/spec/services/update_account_service_spec.rb
+++ b/spec/services/update_account_service_spec.rb
@@ -5,7 +5,7 @@ require 'rails_helper'
RSpec.describe UpdateAccountService do
subject { described_class.new }
- describe 'switching form locked to unlocked accounts', :sidekiq_inline do
+ describe 'switching form locked to unlocked accounts', :inline_jobs do
let(:account) { Fabricate(:account, locked: true) }
let(:alice) { Fabricate(:account) }
let(:bob) { Fabricate(:account) }
diff --git a/spec/services/update_status_service_spec.rb b/spec/services/update_status_service_spec.rb
index dbd5a0fd7f..81b91ad1cd 100644
--- a/spec/services/update_status_service_spec.rb
+++ b/spec/services/update_status_service_spec.rb
@@ -62,7 +62,7 @@ RSpec.describe UpdateStatusService do
end
end
- context 'when content warning changes and has remote user', :sidekiq_inline do
+ context 'when content warning changes and has remote user', :inline_jobs do
let(:remote_follower) { Fabricate(:account, domain: 'example.com', uri: 'https://example.com/actor', protocol: :activitypub, inbox_url: 'https://example.com/inbox') }
let(:status) { Fabricate(:status, text: 'Foo', spoiler_text: '', account: Fabricate(:user).account) }
diff --git a/spec/support/examples/models/concerns/account_avatar.rb b/spec/support/examples/models/concerns/account_avatar.rb
index 2c9b5514aa..ab6020d834 100644
--- a/spec/support/examples/models/concerns/account_avatar.rb
+++ b/spec/support/examples/models/concerns/account_avatar.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
shared_examples 'AccountAvatar' do |fabricator|
- describe 'static avatars', :paperclip_processing do
+ describe 'static avatars', :attachment_processing do
describe 'when GIF' do
it 'creates a png static style' do
account = Fabricate(fabricator, avatar: attachment_fixture('avatar.gif'))
@@ -17,7 +17,7 @@ shared_examples 'AccountAvatar' do |fabricator|
end
end
- describe 'base64-encoded files', :paperclip_processing do
+ describe 'base64-encoded files', :attachment_processing do
let(:base64_attachment) { "data:image/jpeg;base64,#{Base64.encode64(attachment_fixture('attachment.jpg').read)}" }
let(:account) { Fabricate(fabricator, avatar: base64_attachment) }
diff --git a/spec/support/examples/models/concerns/account_header.rb b/spec/support/examples/models/concerns/account_header.rb
index ce09eb006b..43bbdaacf4 100644
--- a/spec/support/examples/models/concerns/account_header.rb
+++ b/spec/support/examples/models/concerns/account_header.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
shared_examples 'AccountHeader' do |fabricator|
- describe 'base64-encoded files', :paperclip_processing do
+ describe 'base64-encoded files', :attachment_processing do
let(:base64_attachment) { "data:image/jpeg;base64,#{Base64.encode64(attachment_fixture('attachment.jpg').read)}" }
let(:account) { Fabricate(fabricator, header: base64_attachment) }
diff --git a/spec/system/admin/accounts_spec.rb b/spec/system/admin/accounts_spec.rb
index 54d755b914..20813f6be4 100644
--- a/spec/system/admin/accounts_spec.rb
+++ b/spec/system/admin/accounts_spec.rb
@@ -48,7 +48,7 @@ describe 'Admin::Accounts' do
end
end
- context 'with action of `reject`', :sidekiq_inline do
+ context 'with action of `reject`', :inline_jobs do
it 'rejects and removes the account' do
batch_checkbox_for(unapproved_user_account).check
diff --git a/spec/system/new_statuses_spec.rb b/spec/system/new_statuses_spec.rb
index 6d1cffb2f2..89d0fa9ca3 100644
--- a/spec/system/new_statuses_spec.rb
+++ b/spec/system/new_statuses_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe 'NewStatuses', :js, :sidekiq_inline, :streaming do
+describe 'NewStatuses', :inline_jobs, :js, :streaming do
include ProfileStories
subject { page }
diff --git a/spec/system/ocr_spec.rb b/spec/system/ocr_spec.rb
index 4f4941adca..17d18af158 100644
--- a/spec/system/ocr_spec.rb
+++ b/spec/system/ocr_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe 'OCR', :js, :paperclip_processing, :sidekiq_inline, :streaming do
+describe 'OCR', :attachment_processing, :inline_jobs, :js, :streaming do
include ProfileStories
let(:email) { 'test@example.com' }
diff --git a/spec/system/report_interface_spec.rb b/spec/system/report_interface_spec.rb
index f82604aae8..e6cc3b1b68 100644
--- a/spec/system/report_interface_spec.rb
+++ b/spec/system/report_interface_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe 'report interface', :js, :paperclip_processing, :streaming do
+describe 'report interface', :attachment_processing, :js, :streaming do
include ProfileStories
let(:email) { 'admin@example.com' }
diff --git a/spec/workers/backup_worker_spec.rb b/spec/workers/backup_worker_spec.rb
index 74928c7ca6..db1b50140b 100644
--- a/spec/workers/backup_worker_spec.rb
+++ b/spec/workers/backup_worker_spec.rb
@@ -14,7 +14,7 @@ describe BackupWorker do
let(:backup) { Fabricate(:backup) }
let!(:other_backup) { Fabricate(:backup, user: backup.user) }
- it 'sends the backup to the service and removes other backups', :sidekiq_inline do
+ it 'sends the backup to the service and removes other backups', :inline_jobs do
emails = capture_emails { worker.perform(backup.id) }
expect(service).to have_received(:call).with(backup)
diff --git a/spec/workers/feed_insert_worker_spec.rb b/spec/workers/feed_insert_worker_spec.rb
index 80115c08d0..c4a32fe0b0 100644
--- a/spec/workers/feed_insert_worker_spec.rb
+++ b/spec/workers/feed_insert_worker_spec.rb
@@ -73,19 +73,19 @@ describe FeedInsertWorker do
end
context 'with notification' do
- it 'skips notification when unset', :sidekiq_inline do
+ it 'skips notification when unset', :inline_jobs do
subject.perform(status.id, follower.id)
expect(notify?(follower, 'status', status.id)).to be false
end
- it 'pushes notification when read status is set', :sidekiq_inline do
+ it 'pushes notification when read status is set', :inline_jobs do
Fabricate(:follow, account: follower, target_account: status.account, notify: true)
subject.perform(status.id, follower.id)
expect(notify?(follower, 'status', status.id)).to be true
end
- it 'skips notification when the account is registered list but not notify', :sidekiq_inline do
+ it 'skips notification when the account is registered list but not notify', :inline_jobs do
follower.follow!(status.account)
list = Fabricate(:list, account: follower)
Fabricate(:list_account, list: list, account: status.account)
@@ -97,7 +97,7 @@ describe FeedInsertWorker do
expect(list_status).to be_nil
end
- it 'pushes notification when the account is registered list', :sidekiq_inline do
+ it 'pushes notification when the account is registered list', :inline_jobs do
follower.follow!(status.account)
list = Fabricate(:list, account: follower, notify: true)
Fabricate(:list_account, list: list, account: status.account)
diff --git a/spec/workers/move_worker_spec.rb b/spec/workers/move_worker_spec.rb
index 0513dc42e5..b25992e44b 100644
--- a/spec/workers/move_worker_spec.rb
+++ b/spec/workers/move_worker_spec.rb
@@ -104,7 +104,7 @@ describe MoveWorker do
end
shared_examples 'lists handling' do
- it 'puts the new account on the list and makes valid lists', :sidekiq_inline do
+ it 'puts the new account on the list and makes valid lists', :inline_jobs do
subject.perform(source_account.id, target_account.id)
expect(list.accounts.include?(target_account)).to be true
diff --git a/spec/workers/post_process_media_worker_spec.rb b/spec/workers/post_process_media_worker_spec.rb
index 828da5244f..1a274623d7 100644
--- a/spec/workers/post_process_media_worker_spec.rb
+++ b/spec/workers/post_process_media_worker_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe PostProcessMediaWorker, :paperclip_processing do
+describe PostProcessMediaWorker, :attachment_processing do
let(:worker) { described_class.new }
describe '#perform' do
diff --git a/streaming/index.js b/streaming/index.js
index 94ce534f87..e4a1bd2b4d 100644
--- a/streaming/index.js
+++ b/streaming/index.js
@@ -524,43 +524,27 @@ const startServer = async () => {
* @param {any} req
* @returns {Promise}
*/
- const accountFromToken = (token, req) => new Promise((resolve, reject) => {
- pgPool.connect((err, client, done) => {
- if (err) {
- reject(err);
- return;
- }
+ const accountFromToken = async (token, req) => {
+ const result = await pgPool.query('SELECT oauth_access_tokens.id, oauth_access_tokens.resource_owner_id, users.account_id, users.chosen_languages, oauth_access_tokens.scopes, devices.device_id FROM oauth_access_tokens INNER JOIN users ON oauth_access_tokens.resource_owner_id = users.id LEFT OUTER JOIN devices ON oauth_access_tokens.id = devices.access_token_id WHERE oauth_access_tokens.token = $1 AND oauth_access_tokens.revoked_at IS NULL LIMIT 1', [token]);
- // @ts-ignore
- client.query('SELECT oauth_access_tokens.id, oauth_access_tokens.resource_owner_id, users.account_id, users.chosen_languages, oauth_access_tokens.scopes, devices.device_id FROM oauth_access_tokens INNER JOIN users ON oauth_access_tokens.resource_owner_id = users.id LEFT OUTER JOIN devices ON oauth_access_tokens.id = devices.access_token_id WHERE oauth_access_tokens.token = $1 AND oauth_access_tokens.revoked_at IS NULL LIMIT 1', [token], (err, result) => {
- done();
+ if (result.rows.length === 0) {
+ throw new AuthenticationError('Invalid access token');
+ }
- if (err) {
- reject(err);
- return;
- }
+ req.accessTokenId = result.rows[0].id;
+ req.scopes = result.rows[0].scopes.split(' ');
+ req.accountId = result.rows[0].account_id;
+ req.chosenLanguages = result.rows[0].chosen_languages;
+ req.deviceId = result.rows[0].device_id;
- if (result.rows.length === 0) {
- reject(new AuthenticationError('Invalid access token'));
- return;
- }
-
- req.accessTokenId = result.rows[0].id;
- req.scopes = result.rows[0].scopes.split(' ');
- req.accountId = result.rows[0].account_id;
- req.chosenLanguages = result.rows[0].chosen_languages;
- req.deviceId = result.rows[0].device_id;
-
- resolve({
- accessTokenId: result.rows[0].id,
- scopes: result.rows[0].scopes.split(' '),
- accountId: result.rows[0].account_id,
- chosenLanguages: result.rows[0].chosen_languages,
- deviceId: result.rows[0].device_id
- });
- });
- });
- });
+ return {
+ accessTokenId: result.rows[0].id,
+ scopes: result.rows[0].scopes.split(' '),
+ accountId: result.rows[0].account_id,
+ chosenLanguages: result.rows[0].chosen_languages,
+ deviceId: result.rows[0].device_id
+ };
+ };
/**
* @param {any} req
@@ -773,28 +757,15 @@ const startServer = async () => {
* @param {any} req
* @returns {Promise.}
*/
- const authorizeListAccess = (listId, req) => new Promise((resolve, reject) => {
+ const authorizeListAccess = async (listId, req) => {
const { accountId } = req;
- pgPool.connect((err, client, done) => {
- if (err) {
- reject();
- return;
- }
+ const result = await pgPool.query('SELECT id, account_id FROM lists WHERE id = $1 AND account_id = $2 LIMIT 1', [listId, accountId]);
- // @ts-ignore
- client.query('SELECT id, account_id FROM lists WHERE id = $1 LIMIT 1', [listId], (err, result) => {
- done();
-
- if (err || result.rows.length === 0 || result.rows[0].account_id !== accountId) {
- reject();
- return;
- }
-
- resolve();
- });
- });
- });
+ if (result.rows.length === 0) {
+ throw new AuthenticationError('List not found');
+ }
+ };
/**
* @param {string} antennaId
@@ -1167,7 +1138,7 @@ const startServer = async () => {
/**
* @param {http.IncomingMessage} req
- * @param {WebSocket} ws
+ * @param {import('ws').WebSocket} ws
* @param {string[]} streamName
* @returns {function(string, string): void}
*/
@@ -1399,7 +1370,7 @@ const startServer = async () => {
/**
* @typedef WebSocketSession
- * @property {WebSocket & { isAlive: boolean}} websocket
+ * @property {import('ws').WebSocket & { isAlive: boolean}} websocket
* @property {http.IncomingMessage & ResolvedAccount} request
* @property {import('pino').Logger} logger
* @property {Object.} subscriptions
@@ -1525,7 +1496,7 @@ const startServer = async () => {
};
/**
- * @param {WebSocket & { isAlive: boolean }} ws
+ * @param {import('ws').WebSocket & { isAlive: boolean }} ws
* @param {http.IncomingMessage & ResolvedAccount} req
* @param {import('pino').Logger} log
*/
diff --git a/yarn.lock b/yarn.lock
index 1aab775f2d..826b64696d 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -52,45 +52,45 @@ __metadata:
languageName: node
linkType: hard
-"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.24.7":
- version: 7.24.7
- resolution: "@babel/compat-data@npm:7.24.7"
- checksum: 10c0/dcd93a5632b04536498fbe2be5af1057f635fd7f7090483d8e797878559037e5130b26862ceb359acbae93ed27e076d395ddb4663db6b28a665756ffd02d324f
+"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.24.8":
+ version: 7.24.8
+ resolution: "@babel/compat-data@npm:7.24.8"
+ checksum: 10c0/7f465e9d8e44c5b516eeb3001362a3cd9a6df51dd90d3ac9868e1e7fa631ac57fc781cec6700110d4f555ba37fe59c4a71927b445106fe0062e79e79ffe11091
languageName: node
linkType: hard
"@babel/core@npm:^7.10.4, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.22.1, @babel/core@npm:^7.24.4":
- version: 7.24.7
- resolution: "@babel/core@npm:7.24.7"
+ version: 7.24.9
+ resolution: "@babel/core@npm:7.24.9"
dependencies:
"@ampproject/remapping": "npm:^2.2.0"
"@babel/code-frame": "npm:^7.24.7"
- "@babel/generator": "npm:^7.24.7"
- "@babel/helper-compilation-targets": "npm:^7.24.7"
- "@babel/helper-module-transforms": "npm:^7.24.7"
- "@babel/helpers": "npm:^7.24.7"
- "@babel/parser": "npm:^7.24.7"
+ "@babel/generator": "npm:^7.24.9"
+ "@babel/helper-compilation-targets": "npm:^7.24.8"
+ "@babel/helper-module-transforms": "npm:^7.24.9"
+ "@babel/helpers": "npm:^7.24.8"
+ "@babel/parser": "npm:^7.24.8"
"@babel/template": "npm:^7.24.7"
- "@babel/traverse": "npm:^7.24.7"
- "@babel/types": "npm:^7.24.7"
+ "@babel/traverse": "npm:^7.24.8"
+ "@babel/types": "npm:^7.24.9"
convert-source-map: "npm:^2.0.0"
debug: "npm:^4.1.0"
gensync: "npm:^1.0.0-beta.2"
json5: "npm:^2.2.3"
semver: "npm:^6.3.1"
- checksum: 10c0/4004ba454d3c20a46ea66264e06c15b82e9f6bdc35f88819907d24620da70dbf896abac1cb4cc4b6bb8642969e45f4d808497c9054a1388a386cf8c12e9b9e0d
+ checksum: 10c0/e104ec6efbf099f55184933e9ab078eb5821c792ddfef3e9c6561986ec4ff103f5c11e3d7d6e5e8929e50e2c58db1cc80e5b6f14b530335b6622095ec4b4124c
languageName: node
linkType: hard
-"@babel/generator@npm:^7.24.7, @babel/generator@npm:^7.7.2":
- version: 7.24.7
- resolution: "@babel/generator@npm:7.24.7"
+"@babel/generator@npm:^7.24.8, @babel/generator@npm:^7.24.9, @babel/generator@npm:^7.7.2":
+ version: 7.24.9
+ resolution: "@babel/generator@npm:7.24.9"
dependencies:
- "@babel/types": "npm:^7.24.7"
+ "@babel/types": "npm:^7.24.9"
"@jridgewell/gen-mapping": "npm:^0.3.5"
"@jridgewell/trace-mapping": "npm:^0.3.25"
jsesc: "npm:^2.5.1"
- checksum: 10c0/06b1f3350baf527a3309e50ffd7065f7aee04dd06e1e7db794ddfde7fe9d81f28df64edd587173f8f9295496a7ddb74b9a185d4bf4de7bb619e6d4ec45c8fd35
+ checksum: 10c0/cd1f7edce7717462546c349e15289d1267a3ed627c6f6583fbf51e78eacacc6500ec2f0024f08f1cc7138989e575635b931acf4549f9e728017a22176a9ea6b6
languageName: node
linkType: hard
@@ -123,16 +123,16 @@ __metadata:
languageName: node
linkType: hard
-"@babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.24.7":
- version: 7.24.7
- resolution: "@babel/helper-compilation-targets@npm:7.24.7"
+"@babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.24.7, @babel/helper-compilation-targets@npm:^7.24.8":
+ version: 7.24.8
+ resolution: "@babel/helper-compilation-targets@npm:7.24.8"
dependencies:
- "@babel/compat-data": "npm:^7.24.7"
- "@babel/helper-validator-option": "npm:^7.24.7"
- browserslist: "npm:^4.22.2"
+ "@babel/compat-data": "npm:^7.24.8"
+ "@babel/helper-validator-option": "npm:^7.24.8"
+ browserslist: "npm:^4.23.1"
lru-cache: "npm:^5.1.1"
semver: "npm:^6.3.1"
- checksum: 10c0/1d580a9bcacefe65e6bf02ba1dafd7ab278269fef45b5e281d8354d95c53031e019890464e7f9351898c01502dd2e633184eb0bcda49ed2ecd538675ce310f51
+ checksum: 10c0/2885c44ef6aaf82b7e4352b30089bb09fbe08ed5ec24eb452c2bdc3c021e2a65ab412f74b3d67ec1398da0356c730b33a2ceca1d67d34c85080d31ca6efa9aec
languageName: node
linkType: hard
@@ -231,9 +231,9 @@ __metadata:
languageName: node
linkType: hard
-"@babel/helper-module-transforms@npm:^7.24.7":
- version: 7.24.7
- resolution: "@babel/helper-module-transforms@npm:7.24.7"
+"@babel/helper-module-transforms@npm:^7.24.7, @babel/helper-module-transforms@npm:^7.24.8, @babel/helper-module-transforms@npm:^7.24.9":
+ version: 7.24.9
+ resolution: "@babel/helper-module-transforms@npm:7.24.9"
dependencies:
"@babel/helper-environment-visitor": "npm:^7.24.7"
"@babel/helper-module-imports": "npm:^7.24.7"
@@ -242,7 +242,7 @@ __metadata:
"@babel/helper-validator-identifier": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0
- checksum: 10c0/4f311755fcc3b4cbdb689386309cdb349cf0575a938f0b9ab5d678e1a81bbb265aa34ad93174838245f2ac7ff6d5ddbd0104638a75e4e961958ed514355687b6
+ checksum: 10c0/e27bca43bc113731ee4f2b33a4c5bf9c7eebf4d64487b814c305cbd5feb272c29fcd3d79634ba03131ade171e5972bc7ede8dbc83ba0deb02f1e62d318c87770
languageName: node
linkType: hard
@@ -255,10 +255,10 @@ __metadata:
languageName: node
linkType: hard
-"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.24.7, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3":
- version: 7.24.7
- resolution: "@babel/helper-plugin-utils@npm:7.24.7"
- checksum: 10c0/c3d38cd9b3520757bb4a279255cc3f956fc0ac1c193964bd0816ebd5c86e30710be8e35252227e0c9d9e0f4f56d9b5f916537f2bc588084b0988b4787a967d31
+"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.24.7, @babel/helper-plugin-utils@npm:^7.24.8, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3":
+ version: 7.24.8
+ resolution: "@babel/helper-plugin-utils@npm:7.24.8"
+ checksum: 10c0/0376037f94a3bfe6b820a39f81220ac04f243eaee7193774b983e956c1750883ff236b30785795abbcda43fac3ece74750566830c2daa4d6e3870bb0dff34c2d
languageName: node
linkType: hard
@@ -317,10 +317,10 @@ __metadata:
languageName: node
linkType: hard
-"@babel/helper-string-parser@npm:^7.24.7":
- version: 7.24.7
- resolution: "@babel/helper-string-parser@npm:7.24.7"
- checksum: 10c0/47840c7004e735f3dc93939c77b099bb41a64bf3dda0cae62f60e6f74a5ff80b63e9b7cf77b5ec25a324516381fc994e1f62f922533236a8e3a6af57decb5e1e
+"@babel/helper-string-parser@npm:^7.24.8":
+ version: 7.24.8
+ resolution: "@babel/helper-string-parser@npm:7.24.8"
+ checksum: 10c0/6361f72076c17fabf305e252bf6d580106429014b3ab3c1f5c4eb3e6d465536ea6b670cc0e9a637a77a9ad40454d3e41361a2909e70e305116a23d68ce094c08
languageName: node
linkType: hard
@@ -331,10 +331,10 @@ __metadata:
languageName: node
linkType: hard
-"@babel/helper-validator-option@npm:^7.24.7":
- version: 7.24.7
- resolution: "@babel/helper-validator-option@npm:7.24.7"
- checksum: 10c0/21aea2b7bc5cc8ddfb828741d5c8116a84cbc35b4a3184ec53124f08e09746f1f67a6f9217850188995ca86059a7942e36d8965a6730784901def777b7e8a436
+"@babel/helper-validator-option@npm:^7.24.7, @babel/helper-validator-option@npm:^7.24.8":
+ version: 7.24.8
+ resolution: "@babel/helper-validator-option@npm:7.24.8"
+ checksum: 10c0/73db93a34ae89201351288bee7623eed81a54000779462a986105b54ffe82069e764afd15171a428b82e7c7a9b5fec10b5d5603b216317a414062edf5c67a21f
languageName: node
linkType: hard
@@ -350,13 +350,13 @@ __metadata:
languageName: node
linkType: hard
-"@babel/helpers@npm:^7.24.7":
- version: 7.24.7
- resolution: "@babel/helpers@npm:7.24.7"
+"@babel/helpers@npm:^7.24.8":
+ version: 7.24.8
+ resolution: "@babel/helpers@npm:7.24.8"
dependencies:
"@babel/template": "npm:^7.24.7"
- "@babel/types": "npm:^7.24.7"
- checksum: 10c0/aa8e230f6668773e17e141dbcab63e935c514b4b0bf1fed04d2eaefda17df68e16b61a56573f7f1d4d1e605ce6cc162b5f7e9fdf159fde1fd9b77c920ae47d27
+ "@babel/types": "npm:^7.24.8"
+ checksum: 10c0/42b8939b0a0bf72d6df9721973eb0fd7cd48f42641c5c9c740916397faa586255c06d36c6e6a7e091860723096281c620f6ffaee0011a3bb254a6f5475d89a12
languageName: node
linkType: hard
@@ -372,12 +372,12 @@ __metadata:
languageName: node
linkType: hard
-"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.24.7":
- version: 7.24.7
- resolution: "@babel/parser@npm:7.24.7"
+"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.24.7, @babel/parser@npm:^7.24.8":
+ version: 7.24.8
+ resolution: "@babel/parser@npm:7.24.8"
bin:
parser: ./bin/babel-parser.js
- checksum: 10c0/8b244756872185a1c6f14b979b3535e682ff08cb5a2a5fd97cc36c017c7ef431ba76439e95e419d43000c5b07720495b00cf29a7f0d9a483643d08802b58819b
+ checksum: 10c0/ce69671de8fa6f649abf849be262707ac700b573b8b1ce1893c66cc6cd76aeb1294a19e8c290b0eadeb2f47d3f413a2e57a281804ffbe76bfb9fa50194cf3c52
languageName: node
linkType: hard
@@ -755,21 +755,21 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-classes@npm:^7.24.7":
- version: 7.24.7
- resolution: "@babel/plugin-transform-classes@npm:7.24.7"
+"@babel/plugin-transform-classes@npm:^7.24.8":
+ version: 7.24.8
+ resolution: "@babel/plugin-transform-classes@npm:7.24.8"
dependencies:
"@babel/helper-annotate-as-pure": "npm:^7.24.7"
- "@babel/helper-compilation-targets": "npm:^7.24.7"
+ "@babel/helper-compilation-targets": "npm:^7.24.8"
"@babel/helper-environment-visitor": "npm:^7.24.7"
"@babel/helper-function-name": "npm:^7.24.7"
- "@babel/helper-plugin-utils": "npm:^7.24.7"
+ "@babel/helper-plugin-utils": "npm:^7.24.8"
"@babel/helper-replace-supers": "npm:^7.24.7"
"@babel/helper-split-export-declaration": "npm:^7.24.7"
globals: "npm:^11.1.0"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/e51dba7ce8b770d1eee929e098d5a3be3efc3e8b941e22dda7d0097dc4e7be5feabd2da7b707ac06fcac5661b31223c541941dec08ce76c1faa55544d87d06ec
+ checksum: 10c0/4423da0f747bdb6aab1995d98a74533fa679f637ec20706810dd57fb4ba2b1885ec8cae6a0b2c3f69f27165de6ff6aa2da9c4061c893848736a8267d0c653079
languageName: node
linkType: hard
@@ -785,14 +785,14 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-destructuring@npm:^7.24.7":
- version: 7.24.7
- resolution: "@babel/plugin-transform-destructuring@npm:7.24.7"
+"@babel/plugin-transform-destructuring@npm:^7.24.8":
+ version: 7.24.8
+ resolution: "@babel/plugin-transform-destructuring@npm:7.24.8"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.7"
+ "@babel/helper-plugin-utils": "npm:^7.24.8"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/929f07a807fb62230bfbf881cfcedf187ac5daf2f1b01da94a75c7a0f6f72400268cf4bcfee534479e43260af8193e42c31ee03c8b0278ba77d0036ed6709c27
+ checksum: 10c0/804968c1d5f5072c717505296c1e5d5ec33e90550423de66de82bbcb78157156e8470bbe77a04ab8c710a88a06360a30103cf223ac7eff4829adedd6150de5ce
languageName: node
linkType: hard
@@ -938,16 +938,16 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-modules-commonjs@npm:^7.24.7":
- version: 7.24.7
- resolution: "@babel/plugin-transform-modules-commonjs@npm:7.24.7"
+"@babel/plugin-transform-modules-commonjs@npm:^7.24.7, @babel/plugin-transform-modules-commonjs@npm:^7.24.8":
+ version: 7.24.8
+ resolution: "@babel/plugin-transform-modules-commonjs@npm:7.24.8"
dependencies:
- "@babel/helper-module-transforms": "npm:^7.24.7"
- "@babel/helper-plugin-utils": "npm:^7.24.7"
+ "@babel/helper-module-transforms": "npm:^7.24.8"
+ "@babel/helper-plugin-utils": "npm:^7.24.8"
"@babel/helper-simple-access": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/9442292b3daf6a5076cdc3c4c32bf423bda824ccaeb0dd0dc8b3effaa1fecfcb0130ae6e647fef12a5d5ff25bcc99a0d6bfc6d24a7525345e1bcf46fcdf81752
+ checksum: 10c0/f1cf552307ebfced20d3907c1dd8be941b277f0364aa655e2b5fee828c84c54065745183104dae86f1f93ea0406db970a463ef7ceaaed897623748e99640e5a7
languageName: node
linkType: hard
@@ -1062,16 +1062,16 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-optional-chaining@npm:^7.24.7":
- version: 7.24.7
- resolution: "@babel/plugin-transform-optional-chaining@npm:7.24.7"
+"@babel/plugin-transform-optional-chaining@npm:^7.24.7, @babel/plugin-transform-optional-chaining@npm:^7.24.8":
+ version: 7.24.8
+ resolution: "@babel/plugin-transform-optional-chaining@npm:7.24.8"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.7"
+ "@babel/helper-plugin-utils": "npm:^7.24.8"
"@babel/helper-skip-transparent-expression-wrappers": "npm:^7.24.7"
"@babel/plugin-syntax-optional-chaining": "npm:^7.8.3"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/b9e3649b299e103b0d1767bbdba56574d065ff776e5350403b7bfd4e3982743c0cdb373d33bdbf94fa3c322d155e45d0aad946acf0aa741b870aed22dfec8b8e
+ checksum: 10c0/4ffbe1aad7dec7c9aa2bf6ceb4b2f91f96815b2784f2879bde80e46934f59d64a12cb2c6262e40897c4754d77d2c35d8a5cfed63044fdebf94978b1ed3d14b17
languageName: node
linkType: hard
@@ -1279,14 +1279,14 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-typeof-symbol@npm:^7.24.7":
- version: 7.24.7
- resolution: "@babel/plugin-transform-typeof-symbol@npm:7.24.7"
+"@babel/plugin-transform-typeof-symbol@npm:^7.24.8":
+ version: 7.24.8
+ resolution: "@babel/plugin-transform-typeof-symbol@npm:7.24.8"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.7"
+ "@babel/helper-plugin-utils": "npm:^7.24.8"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/5649e7260a138681e68b296ab5931e2b1f132f287d6b4131d49b24f9dc20d62902b7e9d63c4d2decd5683b41df35ef4b9b03f58c7f9f65e4c25a6d8bbf04e9e9
+ checksum: 10c0/2f570a4fbbdc5fd85f48165a97452826560051e3b8efb48c3bb0a0a33ee8485633439e7b71bfe3ef705583a1df43f854f49125bd759abdedc195b2cf7e60012a
languageName: node
linkType: hard
@@ -1352,13 +1352,13 @@ __metadata:
linkType: hard
"@babel/preset-env@npm:^7.11.0, @babel/preset-env@npm:^7.12.1, @babel/preset-env@npm:^7.22.4":
- version: 7.24.7
- resolution: "@babel/preset-env@npm:7.24.7"
+ version: 7.24.8
+ resolution: "@babel/preset-env@npm:7.24.8"
dependencies:
- "@babel/compat-data": "npm:^7.24.7"
- "@babel/helper-compilation-targets": "npm:^7.24.7"
- "@babel/helper-plugin-utils": "npm:^7.24.7"
- "@babel/helper-validator-option": "npm:^7.24.7"
+ "@babel/compat-data": "npm:^7.24.8"
+ "@babel/helper-compilation-targets": "npm:^7.24.8"
+ "@babel/helper-plugin-utils": "npm:^7.24.8"
+ "@babel/helper-validator-option": "npm:^7.24.8"
"@babel/plugin-bugfix-firefox-class-in-computed-class-key": "npm:^7.24.7"
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "npm:^7.24.7"
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.24.7"
@@ -1389,9 +1389,9 @@ __metadata:
"@babel/plugin-transform-block-scoping": "npm:^7.24.7"
"@babel/plugin-transform-class-properties": "npm:^7.24.7"
"@babel/plugin-transform-class-static-block": "npm:^7.24.7"
- "@babel/plugin-transform-classes": "npm:^7.24.7"
+ "@babel/plugin-transform-classes": "npm:^7.24.8"
"@babel/plugin-transform-computed-properties": "npm:^7.24.7"
- "@babel/plugin-transform-destructuring": "npm:^7.24.7"
+ "@babel/plugin-transform-destructuring": "npm:^7.24.8"
"@babel/plugin-transform-dotall-regex": "npm:^7.24.7"
"@babel/plugin-transform-duplicate-keys": "npm:^7.24.7"
"@babel/plugin-transform-dynamic-import": "npm:^7.24.7"
@@ -1404,7 +1404,7 @@ __metadata:
"@babel/plugin-transform-logical-assignment-operators": "npm:^7.24.7"
"@babel/plugin-transform-member-expression-literals": "npm:^7.24.7"
"@babel/plugin-transform-modules-amd": "npm:^7.24.7"
- "@babel/plugin-transform-modules-commonjs": "npm:^7.24.7"
+ "@babel/plugin-transform-modules-commonjs": "npm:^7.24.8"
"@babel/plugin-transform-modules-systemjs": "npm:^7.24.7"
"@babel/plugin-transform-modules-umd": "npm:^7.24.7"
"@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.24.7"
@@ -1414,7 +1414,7 @@ __metadata:
"@babel/plugin-transform-object-rest-spread": "npm:^7.24.7"
"@babel/plugin-transform-object-super": "npm:^7.24.7"
"@babel/plugin-transform-optional-catch-binding": "npm:^7.24.7"
- "@babel/plugin-transform-optional-chaining": "npm:^7.24.7"
+ "@babel/plugin-transform-optional-chaining": "npm:^7.24.8"
"@babel/plugin-transform-parameters": "npm:^7.24.7"
"@babel/plugin-transform-private-methods": "npm:^7.24.7"
"@babel/plugin-transform-private-property-in-object": "npm:^7.24.7"
@@ -1425,7 +1425,7 @@ __metadata:
"@babel/plugin-transform-spread": "npm:^7.24.7"
"@babel/plugin-transform-sticky-regex": "npm:^7.24.7"
"@babel/plugin-transform-template-literals": "npm:^7.24.7"
- "@babel/plugin-transform-typeof-symbol": "npm:^7.24.7"
+ "@babel/plugin-transform-typeof-symbol": "npm:^7.24.8"
"@babel/plugin-transform-unicode-escapes": "npm:^7.24.7"
"@babel/plugin-transform-unicode-property-regex": "npm:^7.24.7"
"@babel/plugin-transform-unicode-regex": "npm:^7.24.7"
@@ -1434,11 +1434,11 @@ __metadata:
babel-plugin-polyfill-corejs2: "npm:^0.4.10"
babel-plugin-polyfill-corejs3: "npm:^0.10.4"
babel-plugin-polyfill-regenerator: "npm:^0.6.1"
- core-js-compat: "npm:^3.31.0"
+ core-js-compat: "npm:^3.37.1"
semver: "npm:^6.3.1"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/c6714346f3ccc1271eaa90051c75b8bb57b20ef57408ab68740e2f3552693ae0ee5a4bcce3a00211d40e4947af1f7b8ab422066b953f0095461937fb72d11274
+ checksum: 10c0/a6f29498ec58989845a61f9c10b1b4e80586f1810a33db461d597cdb0ad2cd847381a993038b09f727512a08b2c1a33a330a5d4e6d65463ee98a1b4302d52ec6
languageName: node
linkType: hard
@@ -1503,11 +1503,11 @@ __metadata:
linkType: hard
"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.13, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.8, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.2.0, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.23.7, @babel/runtime@npm:^7.24.1, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.3, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2":
- version: 7.24.7
- resolution: "@babel/runtime@npm:7.24.7"
+ version: 7.24.8
+ resolution: "@babel/runtime@npm:7.24.8"
dependencies:
regenerator-runtime: "npm:^0.14.0"
- checksum: 10c0/b6fa3ec61a53402f3c1d75f4d808f48b35e0dfae0ec8e2bb5c6fc79fb95935da75766e0ca534d0f1c84871f6ae0d2ebdd950727cfadb745a2cdbef13faef5513
+ checksum: 10c0/f24b30af6b3ecae19165b3b032f9bc37b2d1769677bd63b69a6f81061967cfc847aa822518402ea6616b1d301d7eb46986b99c9f69cdb5880834fca2e6b34881
languageName: node
linkType: hard
@@ -1522,32 +1522,32 @@ __metadata:
languageName: node
linkType: hard
-"@babel/traverse@npm:7, @babel/traverse@npm:^7.24.7":
- version: 7.24.7
- resolution: "@babel/traverse@npm:7.24.7"
+"@babel/traverse@npm:7, @babel/traverse@npm:^7.24.7, @babel/traverse@npm:^7.24.8":
+ version: 7.24.8
+ resolution: "@babel/traverse@npm:7.24.8"
dependencies:
"@babel/code-frame": "npm:^7.24.7"
- "@babel/generator": "npm:^7.24.7"
+ "@babel/generator": "npm:^7.24.8"
"@babel/helper-environment-visitor": "npm:^7.24.7"
"@babel/helper-function-name": "npm:^7.24.7"
"@babel/helper-hoist-variables": "npm:^7.24.7"
"@babel/helper-split-export-declaration": "npm:^7.24.7"
- "@babel/parser": "npm:^7.24.7"
- "@babel/types": "npm:^7.24.7"
+ "@babel/parser": "npm:^7.24.8"
+ "@babel/types": "npm:^7.24.8"
debug: "npm:^4.3.1"
globals: "npm:^11.1.0"
- checksum: 10c0/a5135e589c3f1972b8877805f50a084a04865ccb1d68e5e1f3b94a8841b3485da4142e33413d8fd76bc0e6444531d3adf1f59f359c11ffac452b743d835068ab
+ checksum: 10c0/67a5cc35824455cdb54fb9e196a44b3186283e29018a9c2331f51763921e18e891b3c60c283615a27540ec8eb4c8b89f41c237b91f732a7aa518b2eb7a0d434d
languageName: node
linkType: hard
-"@babel/types@npm:^7.0.0, @babel/types@npm:^7.0.0-beta.49, @babel/types@npm:^7.12.11, @babel/types@npm:^7.12.6, @babel/types@npm:^7.20.7, @babel/types@npm:^7.24.7, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3":
- version: 7.24.7
- resolution: "@babel/types@npm:7.24.7"
+"@babel/types@npm:^7.0.0, @babel/types@npm:^7.0.0-beta.49, @babel/types@npm:^7.12.11, @babel/types@npm:^7.12.6, @babel/types@npm:^7.20.7, @babel/types@npm:^7.24.7, @babel/types@npm:^7.24.8, @babel/types@npm:^7.24.9, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3":
+ version: 7.24.9
+ resolution: "@babel/types@npm:7.24.9"
dependencies:
- "@babel/helper-string-parser": "npm:^7.24.7"
+ "@babel/helper-string-parser": "npm:^7.24.8"
"@babel/helper-validator-identifier": "npm:^7.24.7"
to-fast-properties: "npm:^2.0.0"
- checksum: 10c0/d9ecbfc3eb2b05fb1e6eeea546836ac30d990f395ef3fe3f75ced777a222c3cfc4489492f72e0ce3d9a5a28860a1ce5f81e66b88cf5088909068b3ff4fab72c1
+ checksum: 10c0/4970b3481cab39c5c3fdb7c28c834df5c7049f3c7f43baeafe121bb05270ebf0da7c65b097abf314877f213baa591109c82204f30d66cdd46c22ece4a2f32415
languageName: node
linkType: hard
@@ -1558,13 +1558,13 @@ __metadata:
languageName: node
linkType: hard
-"@csstools/cascade-layer-name-parser@npm:^1.0.12":
- version: 1.0.12
- resolution: "@csstools/cascade-layer-name-parser@npm:1.0.12"
+"@csstools/cascade-layer-name-parser@npm:^1.0.13":
+ version: 1.0.13
+ resolution: "@csstools/cascade-layer-name-parser@npm:1.0.13"
peerDependencies:
- "@csstools/css-parser-algorithms": ^2.7.0
- "@csstools/css-tokenizer": ^2.3.2
- checksum: 10c0/5f92aefcbb3f4b660cf7b0db54f6a4ba21a32fa1b64ea4f050a6370233152d4f561ecf5c8e98ca231e73c16e0d9f75b20b0a65153e18b14957658c81e0f68213
+ "@csstools/css-parser-algorithms": ^2.7.1
+ "@csstools/css-tokenizer": ^2.4.1
+ checksum: 10c0/a6412fc8601af1baadc8195934aa668d3476e799891c9d0883390f31ec8678e9b565ac14d919bec633bbc086657ac12aa4cd852c718851a2d34517ee6856ff8e
languageName: node
linkType: hard
@@ -1575,52 +1575,52 @@ __metadata:
languageName: node
linkType: hard
-"@csstools/css-calc@npm:^1.2.3":
- version: 1.2.3
- resolution: "@csstools/css-calc@npm:1.2.3"
+"@csstools/css-calc@npm:^1.2.4":
+ version: 1.2.4
+ resolution: "@csstools/css-calc@npm:1.2.4"
peerDependencies:
- "@csstools/css-parser-algorithms": ^2.7.0
- "@csstools/css-tokenizer": ^2.3.2
- checksum: 10c0/fb34767ea9638b837167bcecaf945bcc0c5e8f0d811067c4e8c7a57bc8f0955f61107b1ed5e017b95c54acacc8088473e5497a9986bee95b37ec92999e792871
+ "@csstools/css-parser-algorithms": ^2.7.1
+ "@csstools/css-tokenizer": ^2.4.1
+ checksum: 10c0/6233746eb642797b7fbc2cf6e7651e95700b294e78e3c29e8730c3236bb92cf62903efb6e54639e8f877683c40646e137c95e615c4450809b21b61a6192888ca
languageName: node
linkType: hard
-"@csstools/css-color-parser@npm:^2.0.3":
- version: 2.0.3
- resolution: "@csstools/css-color-parser@npm:2.0.3"
+"@csstools/css-color-parser@npm:^2.0.4":
+ version: 2.0.4
+ resolution: "@csstools/css-color-parser@npm:2.0.4"
dependencies:
"@csstools/color-helpers": "npm:^4.2.1"
- "@csstools/css-calc": "npm:^1.2.3"
+ "@csstools/css-calc": "npm:^1.2.4"
peerDependencies:
- "@csstools/css-parser-algorithms": ^2.7.0
- "@csstools/css-tokenizer": ^2.3.2
- checksum: 10c0/d8860e6b9c65de4f90d4c21e4d66471fd858434cf63af80f812a900371343b753b86a256627e8bd024cb8903a6a0181d2d9c0c65ab5d78cf29d084a761e2adba
+ "@csstools/css-parser-algorithms": ^2.7.1
+ "@csstools/css-tokenizer": ^2.4.1
+ checksum: 10c0/e009a2f34b6c328daad54262deb86b71c6a7a9a1da1db8ad39cf719641e1a728ed8ddbd23613d519d26deee33b89ba12cb15a6928718c1b3cc5e24ac1ed02f47
languageName: node
linkType: hard
-"@csstools/css-parser-algorithms@npm:^2.6.3, @csstools/css-parser-algorithms@npm:^2.7.0":
- version: 2.7.0
- resolution: "@csstools/css-parser-algorithms@npm:2.7.0"
+"@csstools/css-parser-algorithms@npm:^2.6.3, @csstools/css-parser-algorithms@npm:^2.7.1":
+ version: 2.7.1
+ resolution: "@csstools/css-parser-algorithms@npm:2.7.1"
peerDependencies:
- "@csstools/css-tokenizer": ^2.3.2
- checksum: 10c0/fb84fefdf37c41d170f81b687bf1ee1847a970e51cc1fe3a320e3eaf225383ae9a3c4eb6208b83357dfe18c5114353d780e0c65f05d86d6435e5a9ad9334c834
+ "@csstools/css-tokenizer": ^2.4.1
+ checksum: 10c0/7d29bef6f5790ddb67d922ad232253bf910e4fa5293f5e4a5ed8b920ae9bd4e8171942df7d8943af23b42fd4e9fb460181394d20c97da9562e6ce98a875e8c47
languageName: node
linkType: hard
-"@csstools/css-tokenizer@npm:^2.3.1, @csstools/css-tokenizer@npm:^2.3.2":
- version: 2.3.2
- resolution: "@csstools/css-tokenizer@npm:2.3.2"
- checksum: 10c0/f7d0d8b3e9e2dcdc6547a387253a09dbbacaaffb5c8718bcd7f15dddeefdd441b73fc5f9fad3f03fabef3b37ec4b62be7ff79caab366427fa90eaf54cd8fc452
+"@csstools/css-tokenizer@npm:^2.3.1, @csstools/css-tokenizer@npm:^2.4.1":
+ version: 2.4.1
+ resolution: "@csstools/css-tokenizer@npm:2.4.1"
+ checksum: 10c0/fe71cee85ec7372da07083d088b6a704f43e5d3d2d8071c4b8a86fae60408b559a218a43f8625bf2f0be5c7f90c8f3ad20a1aae1921119a1c02b51c310cc2b6b
languageName: node
linkType: hard
-"@csstools/media-query-list-parser@npm:^2.1.11, @csstools/media-query-list-parser@npm:^2.1.12":
- version: 2.1.12
- resolution: "@csstools/media-query-list-parser@npm:2.1.12"
+"@csstools/media-query-list-parser@npm:^2.1.11, @csstools/media-query-list-parser@npm:^2.1.13":
+ version: 2.1.13
+ resolution: "@csstools/media-query-list-parser@npm:2.1.13"
peerDependencies:
- "@csstools/css-parser-algorithms": ^2.7.0
- "@csstools/css-tokenizer": ^2.3.2
- checksum: 10c0/7395cc710d8f54670c1e7a418a88dcf1ae726316272294ec645f6d79a8e931f5d390ba7ed5d0141d29ad7280cd447b8773143dc7676659413de79228130e1a65
+ "@csstools/css-parser-algorithms": ^2.7.1
+ "@csstools/css-tokenizer": ^2.4.1
+ checksum: 10c0/8bf72342c15581b8f658633436d83c26a214056f6b960ff121b940271f4b1b5b07e9cc3990a73e684fb72319592f0c392408b4f0e08bbe242b2065aa456e2733
languageName: node
linkType: hard
@@ -1636,46 +1636,60 @@ __metadata:
languageName: node
linkType: hard
-"@csstools/postcss-color-function@npm:^3.0.17":
- version: 3.0.17
- resolution: "@csstools/postcss-color-function@npm:3.0.17"
+"@csstools/postcss-color-function@npm:^3.0.19":
+ version: 3.0.19
+ resolution: "@csstools/postcss-color-function@npm:3.0.19"
dependencies:
- "@csstools/css-color-parser": "npm:^2.0.3"
- "@csstools/css-parser-algorithms": "npm:^2.7.0"
- "@csstools/css-tokenizer": "npm:^2.3.2"
- "@csstools/postcss-progressive-custom-properties": "npm:^3.2.0"
+ "@csstools/css-color-parser": "npm:^2.0.4"
+ "@csstools/css-parser-algorithms": "npm:^2.7.1"
+ "@csstools/css-tokenizer": "npm:^2.4.1"
+ "@csstools/postcss-progressive-custom-properties": "npm:^3.3.0"
"@csstools/utilities": "npm:^1.0.0"
peerDependencies:
postcss: ^8.4
- checksum: 10c0/6d347fc9fe65cb897c275c129103576e551b74a7c47a1a4dc8160da2fad7752bf51e3cfbff339f86b39c723efac33643168d2dfaac4d3624d072875d18a65a4b
+ checksum: 10c0/067e33d7dfc32b56fe63d4f97464a3eaf27dde720961e44feab6076bd2c172dd4c1bad16aa37a922dcbba470756bd6a13e728d9e71eab6937d48d83873cd1879
languageName: node
linkType: hard
-"@csstools/postcss-color-mix-function@npm:^2.0.17":
- version: 2.0.17
- resolution: "@csstools/postcss-color-mix-function@npm:2.0.17"
+"@csstools/postcss-color-mix-function@npm:^2.0.19":
+ version: 2.0.19
+ resolution: "@csstools/postcss-color-mix-function@npm:2.0.19"
dependencies:
- "@csstools/css-color-parser": "npm:^2.0.3"
- "@csstools/css-parser-algorithms": "npm:^2.7.0"
- "@csstools/css-tokenizer": "npm:^2.3.2"
- "@csstools/postcss-progressive-custom-properties": "npm:^3.2.0"
+ "@csstools/css-color-parser": "npm:^2.0.4"
+ "@csstools/css-parser-algorithms": "npm:^2.7.1"
+ "@csstools/css-tokenizer": "npm:^2.4.1"
+ "@csstools/postcss-progressive-custom-properties": "npm:^3.3.0"
"@csstools/utilities": "npm:^1.0.0"
peerDependencies:
postcss: ^8.4
- checksum: 10c0/ba9a406ebe4caba6709878ee26debb06780be5cbf4e6ab7e902d79ca6e21ec6a8409b9dc0a5ef36fc4bf54bf2bd8f9642b72da8d7939145f99dc40fedd2be9d2
+ checksum: 10c0/e967d93672a065806dc78da0153f8b4f5087f7c3ddfe361eba4942780760d47b317124913c9b0dda7f9bfff1253f77d1b6debd8a6a2aa3a6c80e263101da5e8c
languageName: node
linkType: hard
-"@csstools/postcss-exponential-functions@npm:^1.0.8":
- version: 1.0.8
- resolution: "@csstools/postcss-exponential-functions@npm:1.0.8"
+"@csstools/postcss-content-alt-text@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "@csstools/postcss-content-alt-text@npm:1.0.0"
dependencies:
- "@csstools/css-calc": "npm:^1.2.3"
- "@csstools/css-parser-algorithms": "npm:^2.7.0"
- "@csstools/css-tokenizer": "npm:^2.3.2"
+ "@csstools/css-parser-algorithms": "npm:^2.7.1"
+ "@csstools/css-tokenizer": "npm:^2.4.1"
+ "@csstools/postcss-progressive-custom-properties": "npm:^3.3.0"
+ "@csstools/utilities": "npm:^1.0.0"
peerDependencies:
postcss: ^8.4
- checksum: 10c0/6b049801fc1275b34f43ffbb915f447a54cbff7bf48ab0705c3ad1ffde055cb876c4dc24e7a9162cd65e219457328e298a673f6176446493db17cf7af6f90dc0
+ checksum: 10c0/0c2c64857ac652989d00c3d2ba49d0cd1cc245193cba6724d2f5841aa990ee6a07267cfebc6fabde6a6246616df60373006d17c5ea9b904129fbfd826dc10a8d
+ languageName: node
+ linkType: hard
+
+"@csstools/postcss-exponential-functions@npm:^1.0.9":
+ version: 1.0.9
+ resolution: "@csstools/postcss-exponential-functions@npm:1.0.9"
+ dependencies:
+ "@csstools/css-calc": "npm:^1.2.4"
+ "@csstools/css-parser-algorithms": "npm:^2.7.1"
+ "@csstools/css-tokenizer": "npm:^2.4.1"
+ peerDependencies:
+ postcss: ^8.4
+ checksum: 10c0/eaec29ef6ec201786c606176235dced4af1922d5ac56c6b0993ad2e7d87464a32702d9b28cae9a76e8527f741b50cbc31d4c646f45d02dc69d520f241b3e7878
languageName: node
linkType: hard
@@ -1691,59 +1705,59 @@ __metadata:
languageName: node
linkType: hard
-"@csstools/postcss-gamut-mapping@npm:^1.0.10":
- version: 1.0.10
- resolution: "@csstools/postcss-gamut-mapping@npm:1.0.10"
+"@csstools/postcss-gamut-mapping@npm:^1.0.11":
+ version: 1.0.11
+ resolution: "@csstools/postcss-gamut-mapping@npm:1.0.11"
dependencies:
- "@csstools/css-color-parser": "npm:^2.0.3"
- "@csstools/css-parser-algorithms": "npm:^2.7.0"
- "@csstools/css-tokenizer": "npm:^2.3.2"
+ "@csstools/css-color-parser": "npm:^2.0.4"
+ "@csstools/css-parser-algorithms": "npm:^2.7.1"
+ "@csstools/css-tokenizer": "npm:^2.4.1"
peerDependencies:
postcss: ^8.4
- checksum: 10c0/6c2dab6a84f81904bed89cb584bd9bc6a904b49a4fa315b17be65c7d68baefe592561ee439660d5602b7481bac3be9a93189dc45404764524495400f34c6b6e6
+ checksum: 10c0/29e755013f1d1de34eb62a931ed410d2830ca3dfc81476cb3c72d9d3260b85a9adedc51aa548550c6e308f3f9640c489e6953db40e9cac9835d0421d5b14ef1f
languageName: node
linkType: hard
-"@csstools/postcss-gradients-interpolation-method@npm:^4.0.18":
- version: 4.0.18
- resolution: "@csstools/postcss-gradients-interpolation-method@npm:4.0.18"
+"@csstools/postcss-gradients-interpolation-method@npm:^4.0.20":
+ version: 4.0.20
+ resolution: "@csstools/postcss-gradients-interpolation-method@npm:4.0.20"
dependencies:
- "@csstools/css-color-parser": "npm:^2.0.3"
- "@csstools/css-parser-algorithms": "npm:^2.7.0"
- "@csstools/css-tokenizer": "npm:^2.3.2"
- "@csstools/postcss-progressive-custom-properties": "npm:^3.2.0"
+ "@csstools/css-color-parser": "npm:^2.0.4"
+ "@csstools/css-parser-algorithms": "npm:^2.7.1"
+ "@csstools/css-tokenizer": "npm:^2.4.1"
+ "@csstools/postcss-progressive-custom-properties": "npm:^3.3.0"
"@csstools/utilities": "npm:^1.0.0"
peerDependencies:
postcss: ^8.4
- checksum: 10c0/23c431068ac205392b4953dbce411e208e79e221ba8030c5e23c0b82e8fd53bc3bc4f2cdc47050f5d91a4ac69cb80f4f1853b213aa8072fa60a6cb6ff0621e04
+ checksum: 10c0/6588825a72a1471e2d6036c8cf7dbad2bf05f369d96dbdd68ff5ce7ff91803b8ee1146f5f1bf6f3ab6299944549da872914664c3f9e8ae5a31847f76f0085c74
languageName: node
linkType: hard
-"@csstools/postcss-hwb-function@npm:^3.0.16":
- version: 3.0.16
- resolution: "@csstools/postcss-hwb-function@npm:3.0.16"
+"@csstools/postcss-hwb-function@npm:^3.0.18":
+ version: 3.0.18
+ resolution: "@csstools/postcss-hwb-function@npm:3.0.18"
dependencies:
- "@csstools/css-color-parser": "npm:^2.0.3"
- "@csstools/css-parser-algorithms": "npm:^2.7.0"
- "@csstools/css-tokenizer": "npm:^2.3.2"
- "@csstools/postcss-progressive-custom-properties": "npm:^3.2.0"
+ "@csstools/css-color-parser": "npm:^2.0.4"
+ "@csstools/css-parser-algorithms": "npm:^2.7.1"
+ "@csstools/css-tokenizer": "npm:^2.4.1"
+ "@csstools/postcss-progressive-custom-properties": "npm:^3.3.0"
"@csstools/utilities": "npm:^1.0.0"
peerDependencies:
postcss: ^8.4
- checksum: 10c0/4deca8831a69038aff719a77df92c53578bb28e23cc61dc4ea7b1d912b1b685683a9c6232396c2616948ac2e8488ad1e2009c9c8ed30c493d97ba8ad37b6418d
+ checksum: 10c0/e9d76b0b2f9c54920124ca1804b49e3f5b26e003729418b5ef4b340ff1baa4779da1c02be618888fdbcc2d0747182352efbbd3ffe128e2417928c35c25443789
languageName: node
linkType: hard
-"@csstools/postcss-ic-unit@npm:^3.0.6":
- version: 3.0.6
- resolution: "@csstools/postcss-ic-unit@npm:3.0.6"
+"@csstools/postcss-ic-unit@npm:^3.0.7":
+ version: 3.0.7
+ resolution: "@csstools/postcss-ic-unit@npm:3.0.7"
dependencies:
- "@csstools/postcss-progressive-custom-properties": "npm:^3.2.0"
+ "@csstools/postcss-progressive-custom-properties": "npm:^3.3.0"
"@csstools/utilities": "npm:^1.0.0"
postcss-value-parser: "npm:^4.2.0"
peerDependencies:
postcss: ^8.4
- checksum: 10c0/a4b962327d433419fdcfdcf620ce6a5cf09aa3c93029ad08b035df1e2bc35caae31de49f1d14218de0656fced35c0d2e07e5ff7b8099c29dbfb40395fc283234
+ checksum: 10c0/2add905b75860c64d7174886fecfc76d86e3818f42f003f4bbfc0604cc7f0f31c6dbd1651e6b9512fea876190d80033578ae49e813b64b17c8cf3b1f03d8e146
languageName: node
linkType: hard
@@ -1768,17 +1782,17 @@ __metadata:
languageName: node
linkType: hard
-"@csstools/postcss-light-dark-function@npm:^1.0.6":
- version: 1.0.6
- resolution: "@csstools/postcss-light-dark-function@npm:1.0.6"
+"@csstools/postcss-light-dark-function@npm:^1.0.8":
+ version: 1.0.8
+ resolution: "@csstools/postcss-light-dark-function@npm:1.0.8"
dependencies:
- "@csstools/css-parser-algorithms": "npm:^2.7.0"
- "@csstools/css-tokenizer": "npm:^2.3.2"
- "@csstools/postcss-progressive-custom-properties": "npm:^3.2.0"
+ "@csstools/css-parser-algorithms": "npm:^2.7.1"
+ "@csstools/css-tokenizer": "npm:^2.4.1"
+ "@csstools/postcss-progressive-custom-properties": "npm:^3.3.0"
"@csstools/utilities": "npm:^1.0.0"
peerDependencies:
postcss: ^8.4
- checksum: 10c0/6b2c64860d789cd3e3ce875c01259333911f6e32a751a7475604de8022c13abcb578e5cb941b51bd3a2022bee883df3f6b64800c6e3559b06da283d968aeb615
+ checksum: 10c0/78fa6d799d38f14af1b32b534eedbec9478033e1fbc5a4e820f2421e865673d010b69b391546686ceb408ead64d79bb4eba2a4fb1fc9f0de70ff21e3ff8477c6
languageName: node
linkType: hard
@@ -1820,42 +1834,42 @@ __metadata:
languageName: node
linkType: hard
-"@csstools/postcss-logical-viewport-units@npm:^2.0.10":
- version: 2.0.10
- resolution: "@csstools/postcss-logical-viewport-units@npm:2.0.10"
+"@csstools/postcss-logical-viewport-units@npm:^2.0.11":
+ version: 2.0.11
+ resolution: "@csstools/postcss-logical-viewport-units@npm:2.0.11"
dependencies:
- "@csstools/css-tokenizer": "npm:^2.3.2"
+ "@csstools/css-tokenizer": "npm:^2.4.1"
"@csstools/utilities": "npm:^1.0.0"
peerDependencies:
postcss: ^8.4
- checksum: 10c0/fe142b11e0e8ccab4667cc5db90b45e67b7d11eaf5c038e91d867e1b18a315ef0859114185aeb48fdc1ce05986be8b644d6157fe9e19da7281f7023c99eb8877
+ checksum: 10c0/20207e9b7fc3ab52df5fcd06fde71fca4fd22bd6bd451cfc2ec6ea69994708b7fc5381e203dc4367293a8de00b1eca7a3ebe89cfa9b933d2f2cb8e3ac4d5aa86
languageName: node
linkType: hard
-"@csstools/postcss-media-minmax@npm:^1.1.7":
- version: 1.1.7
- resolution: "@csstools/postcss-media-minmax@npm:1.1.7"
+"@csstools/postcss-media-minmax@npm:^1.1.8":
+ version: 1.1.8
+ resolution: "@csstools/postcss-media-minmax@npm:1.1.8"
dependencies:
- "@csstools/css-calc": "npm:^1.2.3"
- "@csstools/css-parser-algorithms": "npm:^2.7.0"
- "@csstools/css-tokenizer": "npm:^2.3.2"
- "@csstools/media-query-list-parser": "npm:^2.1.12"
+ "@csstools/css-calc": "npm:^1.2.4"
+ "@csstools/css-parser-algorithms": "npm:^2.7.1"
+ "@csstools/css-tokenizer": "npm:^2.4.1"
+ "@csstools/media-query-list-parser": "npm:^2.1.13"
peerDependencies:
postcss: ^8.4
- checksum: 10c0/a02943a17b540cbd909b55bbb1f8c9331badc51b613279bbdb7127c9921a5d0675bb41675a3b4d0f15e9586120e5a96d9b9786b63b2c594fbb3a238e860c6ad8
+ checksum: 10c0/7d666905282c7a89387dbce84f3429bad04870e0de264c5b1ce3e6f042b8eb72d585a18b2d7ac5e1a8c7f6785892da3cc7f6ea0b48069b06e9d383bdbc149b4a
languageName: node
linkType: hard
-"@csstools/postcss-media-queries-aspect-ratio-number-values@npm:^2.0.10":
- version: 2.0.10
- resolution: "@csstools/postcss-media-queries-aspect-ratio-number-values@npm:2.0.10"
+"@csstools/postcss-media-queries-aspect-ratio-number-values@npm:^2.0.11":
+ version: 2.0.11
+ resolution: "@csstools/postcss-media-queries-aspect-ratio-number-values@npm:2.0.11"
dependencies:
- "@csstools/css-parser-algorithms": "npm:^2.7.0"
- "@csstools/css-tokenizer": "npm:^2.3.2"
- "@csstools/media-query-list-parser": "npm:^2.1.12"
+ "@csstools/css-parser-algorithms": "npm:^2.7.1"
+ "@csstools/css-tokenizer": "npm:^2.4.1"
+ "@csstools/media-query-list-parser": "npm:^2.1.13"
peerDependencies:
postcss: ^8.4
- checksum: 10c0/d7879e72df98d9fe2e5d85a64837e7a73c2df1aea8659d65516f0acb070317edd353531882f0bdfd81510703d1da30d6da861052a0bda85fde1f9eab94b1e467
+ checksum: 10c0/b4023a1951b7661196332852ce714a4e2fb4f1a67164ec0944e28a009b389e59c67e9de790920fcd082b122276414dd39c12ae12a4566e59e1bbcc794560a870
languageName: node
linkType: hard
@@ -1882,44 +1896,44 @@ __metadata:
languageName: node
linkType: hard
-"@csstools/postcss-oklab-function@npm:^3.0.17":
- version: 3.0.17
- resolution: "@csstools/postcss-oklab-function@npm:3.0.17"
+"@csstools/postcss-oklab-function@npm:^3.0.19":
+ version: 3.0.19
+ resolution: "@csstools/postcss-oklab-function@npm:3.0.19"
dependencies:
- "@csstools/css-color-parser": "npm:^2.0.3"
- "@csstools/css-parser-algorithms": "npm:^2.7.0"
- "@csstools/css-tokenizer": "npm:^2.3.2"
- "@csstools/postcss-progressive-custom-properties": "npm:^3.2.0"
+ "@csstools/css-color-parser": "npm:^2.0.4"
+ "@csstools/css-parser-algorithms": "npm:^2.7.1"
+ "@csstools/css-tokenizer": "npm:^2.4.1"
+ "@csstools/postcss-progressive-custom-properties": "npm:^3.3.0"
"@csstools/utilities": "npm:^1.0.0"
peerDependencies:
postcss: ^8.4
- checksum: 10c0/ff27a4b6fd8490439aa0f3c91ffa2a42a8cf539d7306d9329cef7ca59f28317cee40253f402d19a18c196471fd39a05842d2974d92f1b131dc748074d91ac4ee
+ checksum: 10c0/2909f76ba408c9f60b61c479994c96200b0e1d3dbf524d5ae6dc5ca1e21d38caf974595e0d071c3900dbe3568376928085dd811aa24ea3e715bcd9de26fb0fa9
languageName: node
linkType: hard
-"@csstools/postcss-progressive-custom-properties@npm:^3.2.0":
- version: 3.2.0
- resolution: "@csstools/postcss-progressive-custom-properties@npm:3.2.0"
+"@csstools/postcss-progressive-custom-properties@npm:^3.3.0":
+ version: 3.3.0
+ resolution: "@csstools/postcss-progressive-custom-properties@npm:3.3.0"
dependencies:
postcss-value-parser: "npm:^4.2.0"
peerDependencies:
postcss: ^8.4
- checksum: 10c0/829880844fbbeef1c67e0b380057e574659b4caed38c8414c17d7eb4a0cc727afa1cd74a889bc7ca79c819ecae757810356706901cf6bb677a36ca123915cbb7
+ checksum: 10c0/6c9987d65049a70b5090dcfe42fde9ab2b3cb88911a81bb6651ed81c8baf99502ff2cbec0cb3e022426fa994b558b4bf33fd791ccdcdf683dde75b4865d34f39
languageName: node
linkType: hard
-"@csstools/postcss-relative-color-syntax@npm:^2.0.17":
- version: 2.0.17
- resolution: "@csstools/postcss-relative-color-syntax@npm:2.0.17"
+"@csstools/postcss-relative-color-syntax@npm:^2.0.19":
+ version: 2.0.19
+ resolution: "@csstools/postcss-relative-color-syntax@npm:2.0.19"
dependencies:
- "@csstools/css-color-parser": "npm:^2.0.3"
- "@csstools/css-parser-algorithms": "npm:^2.7.0"
- "@csstools/css-tokenizer": "npm:^2.3.2"
- "@csstools/postcss-progressive-custom-properties": "npm:^3.2.0"
+ "@csstools/css-color-parser": "npm:^2.0.4"
+ "@csstools/css-parser-algorithms": "npm:^2.7.1"
+ "@csstools/css-tokenizer": "npm:^2.4.1"
+ "@csstools/postcss-progressive-custom-properties": "npm:^3.3.0"
"@csstools/utilities": "npm:^1.0.0"
peerDependencies:
postcss: ^8.4
- checksum: 10c0/46226351b3825323e3496dcee44ff354cd3ccc9241d837659e1311f428f0b4dc878d9bb762cbb8f63243b7af346728ab7a46c311f9dc38bb609147523c698eab
+ checksum: 10c0/f0aff764f4889ff664b6fa94ddfa5a22daf39354aa2d2ac0eab893eb3ed841b7d2a72131393334d6a5379445fc80f92ab5bd63d4dc3b43746bc7c9055da46591
languageName: node
linkType: hard
@@ -1934,16 +1948,16 @@ __metadata:
languageName: node
linkType: hard
-"@csstools/postcss-stepped-value-functions@npm:^3.0.9":
- version: 3.0.9
- resolution: "@csstools/postcss-stepped-value-functions@npm:3.0.9"
+"@csstools/postcss-stepped-value-functions@npm:^3.0.10":
+ version: 3.0.10
+ resolution: "@csstools/postcss-stepped-value-functions@npm:3.0.10"
dependencies:
- "@csstools/css-calc": "npm:^1.2.3"
- "@csstools/css-parser-algorithms": "npm:^2.7.0"
- "@csstools/css-tokenizer": "npm:^2.3.2"
+ "@csstools/css-calc": "npm:^1.2.4"
+ "@csstools/css-parser-algorithms": "npm:^2.7.1"
+ "@csstools/css-tokenizer": "npm:^2.4.1"
peerDependencies:
postcss: ^8.4
- checksum: 10c0/bafe80947abc8613903f1f3f1939ece9780696774f15960aef229733e40e483dc2830145426d49c4f6d0b1dabb35f812c8a2dda0d0dcddc930321e36b5c6ca0b
+ checksum: 10c0/f9ebe50fb884d002aa40070196a827816f635b891fd2147ae5ddf1ad6df5bddbb50783d6786897bb3dffa33052565e38289392040cf4454aaa179ab00353117d
languageName: node
linkType: hard
@@ -1959,16 +1973,16 @@ __metadata:
languageName: node
linkType: hard
-"@csstools/postcss-trigonometric-functions@npm:^3.0.9":
- version: 3.0.9
- resolution: "@csstools/postcss-trigonometric-functions@npm:3.0.9"
+"@csstools/postcss-trigonometric-functions@npm:^3.0.10":
+ version: 3.0.10
+ resolution: "@csstools/postcss-trigonometric-functions@npm:3.0.10"
dependencies:
- "@csstools/css-calc": "npm:^1.2.3"
- "@csstools/css-parser-algorithms": "npm:^2.7.0"
- "@csstools/css-tokenizer": "npm:^2.3.2"
+ "@csstools/css-calc": "npm:^1.2.4"
+ "@csstools/css-parser-algorithms": "npm:^2.7.1"
+ "@csstools/css-tokenizer": "npm:^2.4.1"
peerDependencies:
postcss: ^8.4
- checksum: 10c0/7a439d31a63d35986dab634d9e415f7ce7c32a2d3d382052b5b730a259a12e44c5f1b14e318d79086253e3d5d4f7d942d0e7317d92eb3421dd08824eebec45fb
+ checksum: 10c0/31adcc66510d9788ccb0669d2761517a6135b13692007d8e4334bc0e8d3515dfecfbdcd04e060d0c09a0f5fc2f12db92221b9d53e92b65b044c89cde9a3424cb
languageName: node
linkType: hard
@@ -3376,8 +3390,8 @@ __metadata:
linkType: hard
"@testing-library/dom@npm:^10.2.0":
- version: 10.2.0
- resolution: "@testing-library/dom@npm:10.2.0"
+ version: 10.3.1
+ resolution: "@testing-library/dom@npm:10.3.1"
dependencies:
"@babel/code-frame": "npm:^7.10.4"
"@babel/runtime": "npm:^7.12.5"
@@ -3387,7 +3401,7 @@ __metadata:
dom-accessibility-api: "npm:^0.5.9"
lz-string: "npm:^1.5.0"
pretty-format: "npm:^27.0.2"
- checksum: 10c0/de582dfbeb632436547a0ca5851b5a714a4a17f8e96ab3dc4fb4e454eef52c912b648b7cb6e9fdf477f3eeef97e698f3250f0ce50846f39d04677a44169209f2
+ checksum: 10c0/e898475cd4932225c2962bf9f94353d7d88462c8912881af8e9866cee714c967b21badb0895ec8626123759cddc6663bc40300b1d1bf789957a603086eda6329
languageName: node
linkType: hard
@@ -5681,7 +5695,7 @@ __metadata:
languageName: node
linkType: hard
-"browserslist@npm:^4.0.0, browserslist@npm:^4.22.2, browserslist@npm:^4.23.0, browserslist@npm:^4.23.1":
+"browserslist@npm:^4.0.0, browserslist@npm:^4.23.0, browserslist@npm:^4.23.1":
version: 4.23.1
resolution: "browserslist@npm:4.23.1"
dependencies:
@@ -6397,12 +6411,12 @@ __metadata:
languageName: node
linkType: hard
-"core-js-compat@npm:^3.31.0, core-js-compat@npm:^3.36.1":
- version: 3.36.1
- resolution: "core-js-compat@npm:3.36.1"
+"core-js-compat@npm:^3.36.1, core-js-compat@npm:^3.37.1":
+ version: 3.37.1
+ resolution: "core-js-compat@npm:3.37.1"
dependencies:
browserslist: "npm:^4.23.0"
- checksum: 10c0/70fba18a4095cd8ac04e5ba8cee251e328935859cf2851c1f67770068ea9f9fe71accb1b7de17cd3c9a28d304a4c41712bd9aa895110ebb6e3be71b666b029d1
+ checksum: 10c0/4e2da9c900f2951a57947af7aeef4d16f2c75d7f7e966c0d0b62953f65225003ade5e84d3ae98847f65b24c109c606821d9dc925db8ca418fb761e7c81963c2a
languageName: node
linkType: hard
@@ -6754,10 +6768,10 @@ __metadata:
languageName: node
linkType: hard
-"cssdb@npm:^8.0.0":
- version: 8.0.0
- resolution: "cssdb@npm:8.0.0"
- checksum: 10c0/d9a31b760214624352000b16a8f7194c357f66b6c445e663ab58dd03b6f0f53efaaca6d6f96200d666e205894d2d1c346664ad993d9522ff9fc1c331804a8d62
+"cssdb@npm:^8.1.0":
+ version: 8.1.0
+ resolution: "cssdb@npm:8.1.0"
+ checksum: 10c0/1fa1f1566c7e9964f5c71e443583eaba16a90933a3ef6803815c4281d084b75da948c415bade33d7085894fe0929c082fcb3135bf4400048cfff40d227ebd5dd
languageName: node
linkType: hard
@@ -6770,16 +6784,16 @@ __metadata:
languageName: node
linkType: hard
-"cssnano-preset-default@npm:^7.0.3":
- version: 7.0.3
- resolution: "cssnano-preset-default@npm:7.0.3"
+"cssnano-preset-default@npm:^7.0.4":
+ version: 7.0.4
+ resolution: "cssnano-preset-default@npm:7.0.4"
dependencies:
browserslist: "npm:^4.23.1"
css-declaration-sorter: "npm:^7.2.0"
cssnano-utils: "npm:^5.0.0"
postcss-calc: "npm:^10.0.0"
postcss-colormin: "npm:^7.0.1"
- postcss-convert-values: "npm:^7.0.1"
+ postcss-convert-values: "npm:^7.0.2"
postcss-discard-comments: "npm:^7.0.1"
postcss-discard-duplicates: "npm:^7.0.0"
postcss-discard-empty: "npm:^7.0.0"
@@ -6806,7 +6820,7 @@ __metadata:
postcss-unique-selectors: "npm:^7.0.1"
peerDependencies:
postcss: ^8.4.31
- checksum: 10c0/ab3e51003efed6542a12d43c10ca693ab26138a1d035697b9be8f07e084e37a78617cbb8028b0a7e7841302ec151f4ecf35cbd763efe291846b62c35ea4c0bb4
+ checksum: 10c0/0083821e778bdf7b8aa9589408a01a717be730f73584e7b81756a6fcf87af05b8f17342025e666572a8d573cc30783f2d817b0f7ad63670398bc3135b017ccad
languageName: node
linkType: hard
@@ -6820,14 +6834,14 @@ __metadata:
linkType: hard
"cssnano@npm:^7.0.0":
- version: 7.0.3
- resolution: "cssnano@npm:7.0.3"
+ version: 7.0.4
+ resolution: "cssnano@npm:7.0.4"
dependencies:
- cssnano-preset-default: "npm:^7.0.3"
+ cssnano-preset-default: "npm:^7.0.4"
lilconfig: "npm:^3.1.2"
peerDependencies:
postcss: ^8.4.31
- checksum: 10c0/4cbcd1e0ebe0bd83196cc5b16b3a60d3ebc98326c79b2f71df597bb73c8e3ee1f42b89159d7a038acc398251184d648d9dd516f4194e46746f3af6fa74b4aec7
+ checksum: 10c0/3939a0b37b11cb4bae92f7916517c7ba21257551f92517b49a640d5df32e855fb7e73321f4be44d2c2de578309c05d711cdcb1976e95607b1b7f92bd4cbd1350
languageName: node
linkType: hard
@@ -9023,8 +9037,8 @@ __metadata:
linkType: hard
"glob@npm:^10.2.2, glob@npm:^10.2.6, glob@npm:^10.3.10":
- version: 10.4.2
- resolution: "glob@npm:10.4.2"
+ version: 10.4.5
+ resolution: "glob@npm:10.4.5"
dependencies:
foreground-child: "npm:^3.1.0"
jackspeak: "npm:^3.1.2"
@@ -9034,7 +9048,7 @@ __metadata:
path-scurry: "npm:^1.11.1"
bin:
glob: dist/esm/bin.mjs
- checksum: 10c0/2c7296695fa75a935f3ad17dc62e4e170a8bb8752cf64d328be8992dd6ad40777939003754e10e9741ff8fbe43aa52fba32d6930d0ffa0e3b74bc3fb5eebaa2f
+ checksum: 10c0/19a9759ea77b8e3ca0a43c2f07ecddc2ad46216b786bb8f993c445aee80d345925a21e5280c7b7c6c59e860a0154b84e4b2b60321fea92cd3c56b4a7489f160e
languageName: node
linkType: hard
@@ -13314,18 +13328,18 @@ __metadata:
languageName: node
linkType: hard
-"postcss-color-functional-notation@npm:^6.0.12":
- version: 6.0.12
- resolution: "postcss-color-functional-notation@npm:6.0.12"
+"postcss-color-functional-notation@npm:^6.0.14":
+ version: 6.0.14
+ resolution: "postcss-color-functional-notation@npm:6.0.14"
dependencies:
- "@csstools/css-color-parser": "npm:^2.0.3"
- "@csstools/css-parser-algorithms": "npm:^2.7.0"
- "@csstools/css-tokenizer": "npm:^2.3.2"
- "@csstools/postcss-progressive-custom-properties": "npm:^3.2.0"
+ "@csstools/css-color-parser": "npm:^2.0.4"
+ "@csstools/css-parser-algorithms": "npm:^2.7.1"
+ "@csstools/css-tokenizer": "npm:^2.4.1"
+ "@csstools/postcss-progressive-custom-properties": "npm:^3.3.0"
"@csstools/utilities": "npm:^1.0.0"
peerDependencies:
postcss: ^8.4
- checksum: 10c0/2e8faecd2609e1b4eb8c1cab21ecca5e746916795df20e6997d66eb61c29fbb01d3e75fef3e0b3e1c181918a2186570441b81779b1fc429d6d8823fbfa164231
+ checksum: 10c0/fdc5188e19c3923da32fe08d50e55d0b3ca1cedf99f46331baa0a4bbd73a1fc6b4447b0346ab16049032b56ab84b98b4758a0ede7c237637e35a4cc60caac141
languageName: node
linkType: hard
@@ -13367,58 +13381,58 @@ __metadata:
languageName: node
linkType: hard
-"postcss-convert-values@npm:^7.0.1":
- version: 7.0.1
- resolution: "postcss-convert-values@npm:7.0.1"
+"postcss-convert-values@npm:^7.0.2":
+ version: 7.0.2
+ resolution: "postcss-convert-values@npm:7.0.2"
dependencies:
browserslist: "npm:^4.23.1"
postcss-value-parser: "npm:^4.2.0"
peerDependencies:
postcss: ^8.4.31
- checksum: 10c0/612f025f179f0f2ad7365db8c0b423614dcb8e1e4061875a4691a39dede0bca758d1a8f9f5c8b08e12af053e9e884f65ca5626ccc723d5b3f420650d67fe3046
+ checksum: 10c0/beb59faf6aae97e6d3c233c5e6ed06cc60d65c49eec576036e3d0da1a831a1e827e3d41f5e81d016440b4f0bdf1406268ae069c4d5b38a6667b310c3da079d22
languageName: node
linkType: hard
-"postcss-custom-media@npm:^10.0.7":
- version: 10.0.7
- resolution: "postcss-custom-media@npm:10.0.7"
+"postcss-custom-media@npm:^10.0.8":
+ version: 10.0.8
+ resolution: "postcss-custom-media@npm:10.0.8"
dependencies:
- "@csstools/cascade-layer-name-parser": "npm:^1.0.12"
- "@csstools/css-parser-algorithms": "npm:^2.7.0"
- "@csstools/css-tokenizer": "npm:^2.3.2"
- "@csstools/media-query-list-parser": "npm:^2.1.12"
+ "@csstools/cascade-layer-name-parser": "npm:^1.0.13"
+ "@csstools/css-parser-algorithms": "npm:^2.7.1"
+ "@csstools/css-tokenizer": "npm:^2.4.1"
+ "@csstools/media-query-list-parser": "npm:^2.1.13"
peerDependencies:
postcss: ^8.4
- checksum: 10c0/4171385ab9370806861dcf7597e53fd6aa1862e77b475c9c565c95bfcc2b950f920f8da26a6dbec42e257388bca97c274635662b5e81fe3905b5e37babe06569
+ checksum: 10c0/673ca0058a2f2357a83b33ce00bbeee7cda92621c08472fa55d7ac7ae56f5f8f979132528d537f2dedf715d35a8f9b14b2f0ab6b45423d49e2554c19aab3c827
languageName: node
linkType: hard
-"postcss-custom-properties@npm:^13.3.11":
- version: 13.3.11
- resolution: "postcss-custom-properties@npm:13.3.11"
+"postcss-custom-properties@npm:^13.3.12":
+ version: 13.3.12
+ resolution: "postcss-custom-properties@npm:13.3.12"
dependencies:
- "@csstools/cascade-layer-name-parser": "npm:^1.0.12"
- "@csstools/css-parser-algorithms": "npm:^2.7.0"
- "@csstools/css-tokenizer": "npm:^2.3.2"
+ "@csstools/cascade-layer-name-parser": "npm:^1.0.13"
+ "@csstools/css-parser-algorithms": "npm:^2.7.1"
+ "@csstools/css-tokenizer": "npm:^2.4.1"
"@csstools/utilities": "npm:^1.0.0"
postcss-value-parser: "npm:^4.2.0"
peerDependencies:
postcss: ^8.4
- checksum: 10c0/4aa95628aa5d5b6df4dfeedbc3891b9666db88d75930cadc14d2fbba0a1b72f4e3cc3d83b5a0c0b8ce44f85b4fda6ebd7fe7792a1abc0a14d7d63b9f170d299c
+ checksum: 10c0/6af9f6ac94a6ac887749cd38d4586349f6aca29269ebfdb837019a3ba0130032f0ff4899b431b5c348f4ac79a7b16fb7300a256514a6a68e32a63489c18a70e7
languageName: node
linkType: hard
-"postcss-custom-selectors@npm:^7.1.11":
- version: 7.1.11
- resolution: "postcss-custom-selectors@npm:7.1.11"
+"postcss-custom-selectors@npm:^7.1.12":
+ version: 7.1.12
+ resolution: "postcss-custom-selectors@npm:7.1.12"
dependencies:
- "@csstools/cascade-layer-name-parser": "npm:^1.0.12"
- "@csstools/css-parser-algorithms": "npm:^2.7.0"
- "@csstools/css-tokenizer": "npm:^2.3.2"
+ "@csstools/cascade-layer-name-parser": "npm:^1.0.13"
+ "@csstools/css-parser-algorithms": "npm:^2.7.1"
+ "@csstools/css-tokenizer": "npm:^2.4.1"
postcss-selector-parser: "npm:^6.1.0"
peerDependencies:
postcss: ^8.4
- checksum: 10c0/f37d2e34239e868b35b7970ec97a7a8f657a9f92ed2b221af44f19949f7c3aedcecd0abb5fa1acb120c5ceffdf7a20869338956a37d7bfc37a83d8088f5d3dd2
+ checksum: 10c0/78a7930e4f97c42b544f00c06272264432d47f9df777684b57673bb971b7ab49d5d6fb9289a5a869125e7e50dcd0cad65cf8846501253084b73a42ffab41b2c5
languageName: node
linkType: hard
@@ -13471,16 +13485,16 @@ __metadata:
languageName: node
linkType: hard
-"postcss-double-position-gradients@npm:^5.0.6":
- version: 5.0.6
- resolution: "postcss-double-position-gradients@npm:5.0.6"
+"postcss-double-position-gradients@npm:^5.0.7":
+ version: 5.0.7
+ resolution: "postcss-double-position-gradients@npm:5.0.7"
dependencies:
- "@csstools/postcss-progressive-custom-properties": "npm:^3.2.0"
+ "@csstools/postcss-progressive-custom-properties": "npm:^3.3.0"
"@csstools/utilities": "npm:^1.0.0"
postcss-value-parser: "npm:^4.2.0"
peerDependencies:
postcss: ^8.4
- checksum: 10c0/9b24b13043fe506c0ddd94e707fe4f21f4f9a6c05ca49a4f45e23412951fd6a4cfa0095002d10b322ca8be60df0badae3715a27eefdeb7bf8da4fdd1ecd5d7a2
+ checksum: 10c0/52d96a34aa3e2e251edeaa2d4c2dd106c687f7910ec18266693656c0edd003384b927c855cecac07f52b5c7bdccd140abdc7e27082ce4c3755e3a966206a2cb9
languageName: node
linkType: hard
@@ -13536,18 +13550,18 @@ __metadata:
languageName: node
linkType: hard
-"postcss-lab-function@npm:^6.0.17":
- version: 6.0.17
- resolution: "postcss-lab-function@npm:6.0.17"
+"postcss-lab-function@npm:^6.0.19":
+ version: 6.0.19
+ resolution: "postcss-lab-function@npm:6.0.19"
dependencies:
- "@csstools/css-color-parser": "npm:^2.0.3"
- "@csstools/css-parser-algorithms": "npm:^2.7.0"
- "@csstools/css-tokenizer": "npm:^2.3.2"
- "@csstools/postcss-progressive-custom-properties": "npm:^3.2.0"
+ "@csstools/css-color-parser": "npm:^2.0.4"
+ "@csstools/css-parser-algorithms": "npm:^2.7.1"
+ "@csstools/css-tokenizer": "npm:^2.4.1"
+ "@csstools/postcss-progressive-custom-properties": "npm:^3.3.0"
"@csstools/utilities": "npm:^1.0.0"
peerDependencies:
postcss: ^8.4
- checksum: 10c0/a331f188b02cc8beb315150232b6b58bc5793e8d61585973d352a9b4d370b908ff354ccf9ea1ba20a956fd37ea4ada918ea975c8d4f69e850d26edf0106436e8
+ checksum: 10c0/d9a91fb57dcbe967260df86e22ca335a5444f1f34d128fa7b5dbf2522772f2138ad708f1f20f0a59035d66ed736e82972ca7f1b669a157534a17ee8898af1921
languageName: node
linkType: hard
@@ -13868,60 +13882,61 @@ __metadata:
linkType: hard
"postcss-preset-env@npm:^9.5.2":
- version: 9.5.15
- resolution: "postcss-preset-env@npm:9.5.15"
+ version: 9.6.0
+ resolution: "postcss-preset-env@npm:9.6.0"
dependencies:
"@csstools/postcss-cascade-layers": "npm:^4.0.6"
- "@csstools/postcss-color-function": "npm:^3.0.17"
- "@csstools/postcss-color-mix-function": "npm:^2.0.17"
- "@csstools/postcss-exponential-functions": "npm:^1.0.8"
+ "@csstools/postcss-color-function": "npm:^3.0.19"
+ "@csstools/postcss-color-mix-function": "npm:^2.0.19"
+ "@csstools/postcss-content-alt-text": "npm:^1.0.0"
+ "@csstools/postcss-exponential-functions": "npm:^1.0.9"
"@csstools/postcss-font-format-keywords": "npm:^3.0.2"
- "@csstools/postcss-gamut-mapping": "npm:^1.0.10"
- "@csstools/postcss-gradients-interpolation-method": "npm:^4.0.18"
- "@csstools/postcss-hwb-function": "npm:^3.0.16"
- "@csstools/postcss-ic-unit": "npm:^3.0.6"
+ "@csstools/postcss-gamut-mapping": "npm:^1.0.11"
+ "@csstools/postcss-gradients-interpolation-method": "npm:^4.0.20"
+ "@csstools/postcss-hwb-function": "npm:^3.0.18"
+ "@csstools/postcss-ic-unit": "npm:^3.0.7"
"@csstools/postcss-initial": "npm:^1.0.1"
"@csstools/postcss-is-pseudo-class": "npm:^4.0.8"
- "@csstools/postcss-light-dark-function": "npm:^1.0.6"
+ "@csstools/postcss-light-dark-function": "npm:^1.0.8"
"@csstools/postcss-logical-float-and-clear": "npm:^2.0.1"
"@csstools/postcss-logical-overflow": "npm:^1.0.1"
"@csstools/postcss-logical-overscroll-behavior": "npm:^1.0.1"
"@csstools/postcss-logical-resize": "npm:^2.0.1"
- "@csstools/postcss-logical-viewport-units": "npm:^2.0.10"
- "@csstools/postcss-media-minmax": "npm:^1.1.7"
- "@csstools/postcss-media-queries-aspect-ratio-number-values": "npm:^2.0.10"
+ "@csstools/postcss-logical-viewport-units": "npm:^2.0.11"
+ "@csstools/postcss-media-minmax": "npm:^1.1.8"
+ "@csstools/postcss-media-queries-aspect-ratio-number-values": "npm:^2.0.11"
"@csstools/postcss-nested-calc": "npm:^3.0.2"
"@csstools/postcss-normalize-display-values": "npm:^3.0.2"
- "@csstools/postcss-oklab-function": "npm:^3.0.17"
- "@csstools/postcss-progressive-custom-properties": "npm:^3.2.0"
- "@csstools/postcss-relative-color-syntax": "npm:^2.0.17"
+ "@csstools/postcss-oklab-function": "npm:^3.0.19"
+ "@csstools/postcss-progressive-custom-properties": "npm:^3.3.0"
+ "@csstools/postcss-relative-color-syntax": "npm:^2.0.19"
"@csstools/postcss-scope-pseudo-class": "npm:^3.0.1"
- "@csstools/postcss-stepped-value-functions": "npm:^3.0.9"
+ "@csstools/postcss-stepped-value-functions": "npm:^3.0.10"
"@csstools/postcss-text-decoration-shorthand": "npm:^3.0.7"
- "@csstools/postcss-trigonometric-functions": "npm:^3.0.9"
+ "@csstools/postcss-trigonometric-functions": "npm:^3.0.10"
"@csstools/postcss-unset-value": "npm:^3.0.1"
autoprefixer: "npm:^10.4.19"
browserslist: "npm:^4.23.1"
css-blank-pseudo: "npm:^6.0.2"
css-has-pseudo: "npm:^6.0.5"
css-prefers-color-scheme: "npm:^9.0.1"
- cssdb: "npm:^8.0.0"
+ cssdb: "npm:^8.1.0"
postcss-attribute-case-insensitive: "npm:^6.0.3"
postcss-clamp: "npm:^4.1.0"
- postcss-color-functional-notation: "npm:^6.0.12"
+ postcss-color-functional-notation: "npm:^6.0.14"
postcss-color-hex-alpha: "npm:^9.0.4"
postcss-color-rebeccapurple: "npm:^9.0.3"
- postcss-custom-media: "npm:^10.0.7"
- postcss-custom-properties: "npm:^13.3.11"
- postcss-custom-selectors: "npm:^7.1.11"
+ postcss-custom-media: "npm:^10.0.8"
+ postcss-custom-properties: "npm:^13.3.12"
+ postcss-custom-selectors: "npm:^7.1.12"
postcss-dir-pseudo-class: "npm:^8.0.1"
- postcss-double-position-gradients: "npm:^5.0.6"
+ postcss-double-position-gradients: "npm:^5.0.7"
postcss-focus-visible: "npm:^9.0.1"
postcss-focus-within: "npm:^8.0.1"
postcss-font-variant: "npm:^5.0.0"
postcss-gap-properties: "npm:^5.0.1"
postcss-image-set-function: "npm:^6.0.3"
- postcss-lab-function: "npm:^6.0.17"
+ postcss-lab-function: "npm:^6.0.19"
postcss-logical: "npm:^7.0.1"
postcss-nesting: "npm:^12.1.5"
postcss-opacity-percentage: "npm:^2.0.0"
@@ -13933,7 +13948,7 @@ __metadata:
postcss-selector-not: "npm:^7.0.2"
peerDependencies:
postcss: ^8.4
- checksum: 10c0/e2ee0b5d7dbaddb82ff6d51b5882120862d6be184973ae3d55642923183ab441d421d5f9810fe02e680a70dbc85b20b1c2eb02c68f167dcaf3ef80a71dd40e78
+ checksum: 10c0/caa91ba4d3b897d43ab2669b3edf40b24ef32c88e23b113be8956412e64b28deed6ba229c331848fcbc0d143bfde155173fb1e1ada9ccae5037b2ee8f7e554b7
languageName: node
linkType: hard
@@ -15514,15 +15529,15 @@ __metadata:
linkType: hard
"sass@npm:^1.62.1":
- version: 1.77.6
- resolution: "sass@npm:1.77.6"
+ version: 1.77.8
+ resolution: "sass@npm:1.77.8"
dependencies:
chokidar: "npm:>=3.0.0 <4.0.0"
immutable: "npm:^4.0.0"
source-map-js: "npm:>=0.6.2 <2.0.0"
bin:
sass: sass.js
- checksum: 10c0/fe5a393c0aa29eda9f83c06be9b94788b61fe8bad0616ee6e3a25d21ab504f430d40c0064fdca89b02b8e426411ae6dcd906c91f2e48c263575c3d392b6daeb1
+ checksum: 10c0/2bfd62794070352c804f949e69bd8bb5b4ec846deeb924251b2c3f7b503170fb1ae186f513f0166907749eb34e0277dee747edcb78c886fb471aac01be1e864c
languageName: node
linkType: hard
@@ -17349,22 +17364,22 @@ __metadata:
linkType: hard
"typescript@npm:5, typescript@npm:^5.0.4":
- version: 5.5.2
- resolution: "typescript@npm:5.5.2"
+ version: 5.5.3
+ resolution: "typescript@npm:5.5.3"
bin:
tsc: bin/tsc
tsserver: bin/tsserver
- checksum: 10c0/8ca39b27b5f9bd7f32db795045933ab5247897660627251e8254180b792a395bf061ea7231947d5d7ffa5cb4cc771970fd4ef543275f9b559f08c9325cccfce3
+ checksum: 10c0/f52c71ccbc7080b034b9d3b72051d563601a4815bf3e39ded188e6ce60813f75dbedf11ad15dd4d32a12996a9ed8c7155b46c93a9b9c9bad1049766fe614bbdd
languageName: node
linkType: hard
"typescript@patch:typescript@npm%3A5#optional!builtin, typescript@patch:typescript@npm%3A^5.0.4#optional!builtin":
- version: 5.5.2
- resolution: "typescript@patch:typescript@npm%3A5.5.2#optional!builtin::version=5.5.2&hash=379a07"
+ version: 5.5.3
+ resolution: "typescript@patch:typescript@npm%3A5.5.3#optional!builtin::version=5.5.3&hash=379a07"
bin:
tsc: bin/tsc
tsserver: bin/tsserver
- checksum: 10c0/a7b7ede75dc7fc32a76d0d0af6b91f5fbd8620890d84c906f663d8783bf3de6d7bd50f0430b8bb55eac88a38934af847ff709e7156e5138b95ae94cbd5f73e5b
+ checksum: 10c0/911c7811d61f57f07df79c4a35f56a0f426a65426a020e5fcd792f66559f399017205f5f10255329ab5a3d8c2d1f1d19530aeceffda70758a521fae1d469432e
languageName: node
linkType: hard