Compare commits

...

12 Commits

Author SHA1 Message Date
renovate[bot]
b7e5602323
Merge 08ceacf08b into c442589593 2025-07-10 08:06:40 +00:00
Matt Jankowski
c442589593
Use ActiveModel::Attributes in FollowLimitable concern (#35327)
Some checks failed
Chromatic / Run Chromatic (push) Waiting to run
CodeQL / Analyze (javascript) (push) Waiting to run
CodeQL / Analyze (ruby) (push) Waiting to run
Check formatting / lint (push) Waiting to run
JavaScript Linting / lint (push) Waiting to run
Ruby Linting / lint (push) Waiting to run
JavaScript Testing / test (push) Waiting to run
Historical data migration test / test (14-alpine) (push) Waiting to run
Historical data migration test / test (15-alpine) (push) Waiting to run
Historical data migration test / test (16-alpine) (push) Waiting to run
Historical data migration test / test (17-alpine) (push) Waiting to run
Ruby Testing / build (production) (push) Waiting to run
Ruby Testing / build (test) (push) Waiting to run
Ruby Testing / test (.ruby-version) (push) Blocked by required conditions
Ruby Testing / test (3.2) (push) Blocked by required conditions
Ruby Testing / test (3.3) (push) Blocked by required conditions
Ruby Testing / ImageMagick tests (.ruby-version) (push) Blocked by required conditions
Ruby Testing / ImageMagick tests (3.2) (push) Blocked by required conditions
Ruby Testing / ImageMagick tests (3.3) (push) Blocked by required conditions
Ruby Testing / End to End testing (.ruby-version) (push) Blocked by required conditions
Ruby Testing / End to End testing (3.2) (push) Blocked by required conditions
Ruby Testing / End to End testing (3.3) (push) Blocked by required conditions
Ruby Testing / Elastic Search integration testing (.ruby-version, docker.elastic.co/elasticsearch/elasticsearch:7.17.13) (push) Blocked by required conditions
Ruby Testing / Elastic Search integration testing (.ruby-version, docker.elastic.co/elasticsearch/elasticsearch:8.10.2) (push) Blocked by required conditions
Ruby Testing / Elastic Search integration testing (.ruby-version, opensearchproject/opensearch:2) (push) Blocked by required conditions
Ruby Testing / Elastic Search integration testing (3.2, docker.elastic.co/elasticsearch/elasticsearch:7.17.13) (push) Blocked by required conditions
Ruby Testing / Elastic Search integration testing (3.3, docker.elastic.co/elasticsearch/elasticsearch:7.17.13) (push) Blocked by required conditions
Bundler Audit / security (push) Has been cancelled
CSS Linting / lint (push) Has been cancelled
Haml Linting / lint (push) Has been cancelled
2025-07-10 07:40:56 +00:00
renovate[bot]
28633a504a
chore(deps): update dependency json-schema to v5.2.1 (#35337)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-10 07:38:07 +00:00
Matt Jankowski
ad78701b6f
Mark private methods in AnnualReport::TopStatuses (#35256) 2025-07-10 07:35:40 +00:00
Matt Jankowski
1496488771
Add Status#not_replying_to_account scope for annual report classes (#35257) 2025-07-10 07:35:04 +00:00
renovate[bot]
dd3d958e75
fix(deps): update dependency core-js to v3.44.0 (#35284)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-10 07:23:54 +00:00
github-actions[bot]
b363a3651d
New Crowdin Translations (automated) (#35335)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-07-10 07:23:27 +00:00
renovate[bot]
86645fc14c
chore(deps): update dependency rubocop to v1.78.0 (#35289)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-10 07:23:23 +00:00
Matt Jankowski
f9beecb343
Improve Accounts CLI prune spec (#35302) 2025-07-10 07:23:09 +00:00
Matt Jankowski
4ecfbd3920
Add Status.only_polls (and without polls) scope (#35330) 2025-07-10 07:13:22 +00:00
Claire
a315934314
Fix styling of external log-in button (#35320) 2025-07-10 06:56:40 +00:00
renovate[bot]
08ceacf08b
fix(deps): update dependency express to v5 2025-07-02 09:13:39 +00:00
32 changed files with 398 additions and 313 deletions

View File

@ -365,7 +365,7 @@ GEM
json-ld-preloaded (3.3.1) json-ld-preloaded (3.3.1)
json-ld (~> 3.3) json-ld (~> 3.3)
rdf (~> 3.3) rdf (~> 3.3)
json-schema (5.1.1) json-schema (5.2.1)
addressable (~> 2.8) addressable (~> 2.8)
bigdecimal (~> 3.1) bigdecimal (~> 3.1)
jsonapi-renderer (0.2.2) jsonapi-renderer (0.2.2)
@ -761,7 +761,7 @@ GEM
rspec-mocks (~> 3.0) rspec-mocks (~> 3.0)
sidekiq (>= 5, < 9) sidekiq (>= 5, < 9)
rspec-support (3.13.4) rspec-support (3.13.4)
rubocop (1.77.0) rubocop (1.78.0)
json (~> 2.3) json (~> 2.3)
language_server-protocol (~> 3.17.0.2) language_server-protocol (~> 3.17.0.2)
lint_roller (~> 1.1.0) lint_roller (~> 1.1.0)

View File

@ -66,7 +66,7 @@ module ApplicationHelper
def provider_sign_in_link(provider) def provider_sign_in_link(provider)
label = Devise.omniauth_configs[provider]&.strategy&.display_name.presence || I18n.t("auth.providers.#{provider}", default: provider.to_s.chomp('_oauth2').capitalize) label = Devise.omniauth_configs[provider]&.strategy&.display_name.presence || I18n.t("auth.providers.#{provider}", default: provider.to_s.chomp('_oauth2').capitalize)
link_to label, omniauth_authorize_path(:user, provider), class: "button button-#{provider}", method: :post link_to label, omniauth_authorize_path(:user, provider), class: "btn button-#{provider}", method: :post
end end
def locale_direction def locale_direction

View File

@ -386,7 +386,7 @@
"follow_suggestions.similar_to_recently_followed_longer": "Minder om profiler, du har fulgt for nylig", "follow_suggestions.similar_to_recently_followed_longer": "Minder om profiler, du har fulgt for nylig",
"follow_suggestions.view_all": "Vis alle", "follow_suggestions.view_all": "Vis alle",
"follow_suggestions.who_to_follow": "Hvem, som skal følges", "follow_suggestions.who_to_follow": "Hvem, som skal følges",
"followed_tags": "Hashtag, som følges", "followed_tags": "Hashtags, som følges",
"footer.about": "Om", "footer.about": "Om",
"footer.directory": "Profiloversigt", "footer.directory": "Profiloversigt",
"footer.get_app": "Hent appen", "footer.get_app": "Hent appen",
@ -560,7 +560,7 @@
"navigation_bar.favourites": "Favoritter", "navigation_bar.favourites": "Favoritter",
"navigation_bar.filters": "Skjulte ord", "navigation_bar.filters": "Skjulte ord",
"navigation_bar.follow_requests": "Følgeanmodninger", "navigation_bar.follow_requests": "Følgeanmodninger",
"navigation_bar.followed_tags": "Hashtag, som følges", "navigation_bar.followed_tags": "Hashtags, som følges",
"navigation_bar.follows_and_followers": "Følges og følgere", "navigation_bar.follows_and_followers": "Følges og følgere",
"navigation_bar.import_export": "Import og eksport", "navigation_bar.import_export": "Import og eksport",
"navigation_bar.lists": "Lister", "navigation_bar.lists": "Lister",

View File

@ -569,6 +569,7 @@
"notification.admin.sign_up.name_and_others": "{name} eta {count, plural, one {erabiltzaile # gehiago} other {# erabiltzaile gehiago}} erregistratu dira", "notification.admin.sign_up.name_and_others": "{name} eta {count, plural, one {erabiltzaile # gehiago} other {# erabiltzaile gehiago}} erregistratu dira",
"notification.favourite": "{name}(e)k zure bidalketa gogoko du", "notification.favourite": "{name}(e)k zure bidalketa gogoko du",
"notification.favourite.name_and_others_with_link": "{name} eta <a>{count, plural, one {erabiltzaile # gehiagok} other {# erabiltzaile gehiagok}}</a> zure bidalketa gogoko dute", "notification.favourite.name_and_others_with_link": "{name} eta <a>{count, plural, one {erabiltzaile # gehiagok} other {# erabiltzaile gehiagok}}</a> zure bidalketa gogoko dute",
"notification.favourite_pm": "{name}-ek zure aipamen pribatua gogokoetan jarri du",
"notification.follow": "{name}(e)k jarraitzen dizu", "notification.follow": "{name}(e)k jarraitzen dizu",
"notification.follow_request": "{name}(e)k zu jarraitzeko eskaera egin du", "notification.follow_request": "{name}(e)k zu jarraitzeko eskaera egin du",
"notification.follow_request.name_and_others": "{name} eta {count, plural, one {erabiltzaile # gehiagok} other {# erabiltzaile gehiagok}} zu jarraitzeko eskaera egin dute", "notification.follow_request.name_and_others": "{name} eta {count, plural, one {erabiltzaile # gehiagok} other {# erabiltzaile gehiagok}} zu jarraitzeko eskaera egin dute",
@ -902,5 +903,7 @@
"video.hide": "Ezkutatu bideoa", "video.hide": "Ezkutatu bideoa",
"video.pause": "Pausatu", "video.pause": "Pausatu",
"video.play": "Jo", "video.play": "Jo",
"video.unmute": "Soinua ezarri",
"video.volume_down": "Bolumena jaitsi",
"video.volume_up": "Bolumena Igo" "video.volume_up": "Bolumena Igo"
} }

View File

@ -356,6 +356,7 @@
"hashtag.counter_by_accounts": "{count, plural, one {{counter} partisipante} other {{counter} partisipantes}}", "hashtag.counter_by_accounts": "{count, plural, one {{counter} partisipante} other {{counter} partisipantes}}",
"hashtag.counter_by_uses": "{count, plural, one {{counter} publikasyon} other {{counter} publikasyones}}", "hashtag.counter_by_uses": "{count, plural, one {{counter} publikasyon} other {{counter} publikasyones}}",
"hashtag.counter_by_uses_today": "{count, plural, one {{counter} publikasyon} other {{counter} publikasyones}} oy", "hashtag.counter_by_uses_today": "{count, plural, one {{counter} publikasyon} other {{counter} publikasyones}} oy",
"hashtag.feature": "Avalia en profil",
"hashtag.follow": "Sige etiketa", "hashtag.follow": "Sige etiketa",
"hashtag.mute": "Silensia #{hashtag}", "hashtag.mute": "Silensia #{hashtag}",
"hashtag.unfeature": "No avalia en profil", "hashtag.unfeature": "No avalia en profil",
@ -390,6 +391,7 @@
"interaction_modal.title.reblog": "Repartaja publikasyon de {name}", "interaction_modal.title.reblog": "Repartaja publikasyon de {name}",
"interaction_modal.title.reply": "Arisponde a publikasyon de {name}", "interaction_modal.title.reply": "Arisponde a publikasyon de {name}",
"interaction_modal.title.vote": "Vota en la anketa de {name}", "interaction_modal.title.vote": "Vota en la anketa de {name}",
"interaction_modal.username_prompt": "Por enshemplo {example}",
"intervals.full.days": "{number, plural, one {# diya} other {# diyas}}", "intervals.full.days": "{number, plural, one {# diya} other {# diyas}}",
"intervals.full.hours": "{number, plural, one {# ora} other {# oras}}", "intervals.full.hours": "{number, plural, one {# ora} other {# oras}}",
"intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}",
@ -442,6 +444,7 @@
"lists.delete": "Efasa lista", "lists.delete": "Efasa lista",
"lists.done": "Fecho", "lists.done": "Fecho",
"lists.edit": "Edita lista", "lists.edit": "Edita lista",
"lists.list_name": "Nombre de lista",
"lists.new_list_name": "Nombre de mueva lista", "lists.new_list_name": "Nombre de mueva lista",
"lists.replies_policy.followed": "Kualseker utilizador segido", "lists.replies_policy.followed": "Kualseker utilizador segido",
"lists.replies_policy.list": "Miembros de la lista", "lists.replies_policy.list": "Miembros de la lista",
@ -738,6 +741,7 @@
"status.reblogs.empty": "Ainda nadie tiene repartajado esta publikasyon. Kuando algien lo aga, se amostrara aki.", "status.reblogs.empty": "Ainda nadie tiene repartajado esta publikasyon. Kuando algien lo aga, se amostrara aki.",
"status.redraft": "Efasa i eskrive de muevo", "status.redraft": "Efasa i eskrive de muevo",
"status.remove_bookmark": "Kita markador", "status.remove_bookmark": "Kita markador",
"status.remove_favourite": "Kita de los favoritos",
"status.replied_in_thread": "Arispondo en filo", "status.replied_in_thread": "Arispondo en filo",
"status.replied_to": "Arispondio a {name}", "status.replied_to": "Arispondio a {name}",
"status.reply": "Arisponde", "status.reply": "Arisponde",
@ -758,6 +762,7 @@
"subscribed_languages.save": "Guadra trokamientos", "subscribed_languages.save": "Guadra trokamientos",
"subscribed_languages.target": "Troka linguas abonadas para {target}", "subscribed_languages.target": "Troka linguas abonadas para {target}",
"tabs_bar.home": "Linya prinsipala", "tabs_bar.home": "Linya prinsipala",
"tabs_bar.menu": "Menu",
"tabs_bar.notifications": "Avizos", "tabs_bar.notifications": "Avizos",
"tabs_bar.publish": "Mueva publikasyon", "tabs_bar.publish": "Mueva publikasyon",
"tabs_bar.search": "Bushkeda", "tabs_bar.search": "Bushkeda",

View File

@ -28,7 +28,7 @@ class AnnualReport::Archetype < AnnualReport::Source
end end
def polls_count def polls_count
@polls_count ||= report_statuses.where.not(poll_id: nil).count @polls_count ||= report_statuses.only_polls.count
end end
def reblogs_count def reblogs_count
@ -36,7 +36,7 @@ class AnnualReport::Archetype < AnnualReport::Source
end end
def replies_count def replies_count
@replies_count ||= report_statuses.where.not(in_reply_to_id: nil).where.not(in_reply_to_account_id: @account.id).count @replies_count ||= report_statuses.where.not(in_reply_to_id: nil).not_replying_to_account(@account).count
end end
def standalone_count def standalone_count

View File

@ -18,7 +18,7 @@ class AnnualReport::CommonlyInteractedWithAccounts < AnnualReport::Source
private private
def commonly_interacted_with_accounts def commonly_interacted_with_accounts
report_statuses.where.not(in_reply_to_account_id: @account.id).group(:in_reply_to_account_id).having(minimum_interaction_count).order(count_all: :desc).limit(SET_SIZE).count report_statuses.not_replying_to_account(@account).group(:in_reply_to_account_id).having(minimum_interaction_count).order(count_all: :desc).limit(SET_SIZE).count
end end
def minimum_interaction_count def minimum_interaction_count

View File

@ -2,20 +2,44 @@
class AnnualReport::TopStatuses < AnnualReport::Source class AnnualReport::TopStatuses < AnnualReport::Source
def generate def generate
top_reblogs = base_scope.order(reblogs_count: :desc).first&.id
top_favourites = base_scope.where.not(id: top_reblogs).order(favourites_count: :desc).first&.id
top_replies = base_scope.where.not(id: [top_reblogs, top_favourites]).order(replies_count: :desc).first&.id
{ {
top_statuses: { top_statuses: {
by_reblogs: top_reblogs&.to_s, by_reblogs: status_identifier(most_reblogged_status),
by_favourites: top_favourites&.to_s, by_favourites: status_identifier(most_favourited_status),
by_replies: top_replies&.to_s, by_replies: status_identifier(most_replied_status),
}, },
} }
end end
private
def status_identifier(status)
status.id.to_s if status.present?
end
def most_reblogged_status
base_scope
.order(reblogs_count: :desc)
.first
end
def most_favourited_status
base_scope
.excluding(most_reblogged_status)
.order(favourites_count: :desc)
.first
end
def most_replied_status
base_scope
.excluding(most_reblogged_status, most_favourited_status)
.order(replies_count: :desc)
.first
end
def base_scope def base_scope
report_statuses.public_visibility.joins(:status_stat) report_statuses
.public_visibility
.joins(:status_stat)
end end
end end

View File

@ -6,7 +6,7 @@ class AnnualReport::TypeDistribution < AnnualReport::Source
type_distribution: { type_distribution: {
total: report_statuses.count, total: report_statuses.count,
reblogs: report_statuses.only_reblogs.count, reblogs: report_statuses.only_reblogs.count,
replies: report_statuses.where.not(in_reply_to_id: nil).where.not(in_reply_to_account_id: @account.id).count, replies: report_statuses.where.not(in_reply_to_id: nil).not_replying_to_account(@account).count,
standalone: report_statuses.without_replies.without_reblogs.count, standalone: report_statuses.without_replies.without_reblogs.count,
}, },
} }

View File

@ -161,7 +161,7 @@ class AccountStatusesCleanupPolicy < ApplicationRecord
end end
def without_poll_scope def without_poll_scope
Status.where(poll_id: nil) Status.without_polls
end end
def without_popular_scope def without_popular_scope

View File

@ -4,14 +4,8 @@ module FollowLimitable
extend ActiveSupport::Concern extend ActiveSupport::Concern
included do included do
validates_with FollowLimitValidator, on: :create, unless: :bypass_follow_limit? validates_with FollowLimitValidator, on: :create, unless: :bypass_follow_limit
end
def bypass_follow_limit=(value) attribute :bypass_follow_limit, :boolean, default: false
@bypass_follow_limit = value
end
def bypass_follow_limit?
@bypass_follow_limit
end end
end end

View File

@ -121,7 +121,10 @@ class Status < ApplicationRecord
scope :without_replies, -> { not_reply.or(reply_to_account) } scope :without_replies, -> { not_reply.or(reply_to_account) }
scope :not_reply, -> { where(reply: false) } scope :not_reply, -> { where(reply: false) }
scope :only_reblogs, -> { where.not(reblog_of_id: nil) } scope :only_reblogs, -> { where.not(reblog_of_id: nil) }
scope :only_polls, -> { where.not(poll_id: nil) }
scope :without_polls, -> { where(poll_id: nil) }
scope :reply_to_account, -> { where(arel_table[:in_reply_to_account_id].eq arel_table[:account_id]) } scope :reply_to_account, -> { where(arel_table[:in_reply_to_account_id].eq arel_table[:account_id]) }
scope :not_replying_to_account, ->(account) { where.not(in_reply_to_account: account) }
scope :without_reblogs, -> { where(statuses: { reblog_of_id: nil }) } scope :without_reblogs, -> { where(statuses: { reblog_of_id: nil }) }
scope :tagged_with, ->(tag_ids) { joins(:statuses_tags).where(statuses_tags: { tag_id: tag_ids }) } scope :tagged_with, ->(tag_ids) { joins(:statuses_tags).where(statuses_tags: { tag_id: tag_ids }) }
scope :not_excluded_by_account, ->(account) { where.not(account_id: account.excluded_from_timeline_account_ids) } scope :not_excluded_by_account, ->(account) { where.not(account_id: account.excluded_from_timeline_account_ids) }

View File

@ -1347,7 +1347,7 @@ da:
your_appeal_rejected: Din appel er afvist your_appeal_rejected: Din appel er afvist
edit_profile: edit_profile:
basic_information: Oplysninger basic_information: Oplysninger
hint_html: "<strong>Tilpas hvad folk ser på din offentlige profil og ved siden af dine indlæg.</strong> Andre personer vil mere sandsynligt følge dig tilbage og interagere med dig, når du har en udfyldt profil og et profilbillede." hint_html: "<strong>Tilpas, hvad folk ser på din offentlige profil og ved siden af dine indlæg.</strong> Andre personer er mere tilbøjelige til at følge dig tilbage og interagere med dig, når du har en udfyldt profil og et profilbillede."
other: Andre other: Andre
emoji_styles: emoji_styles:
auto: Auto auto: Auto

View File

@ -1944,7 +1944,7 @@ de:
contrast: Mastodon (Hoher Kontrast) contrast: Mastodon (Hoher Kontrast)
default: Mastodon (Dunkel) default: Mastodon (Dunkel)
mastodon-light: Mastodon (Hell) mastodon-light: Mastodon (Hell)
system: Automatisch (mit System synchronisieren) system: Automatisch (wie Betriebssystem)
time: time:
formats: formats:
default: "%d. %b %Y, %H:%M Uhr" default: "%d. %b %Y, %H:%M Uhr"

View File

@ -467,8 +467,11 @@ eu:
fasp: fasp:
debug: debug:
callbacks: callbacks:
created_at: Sortua hemen
delete: Ezabatu delete: Ezabatu
ip: IP helbidea ip: IP helbidea
request_body: Eskaeraren edukia
title: Atzera-deiak araztu
providers: providers:
active: Aktibo active: Aktibo
base_url: Oinarrizko URL-a base_url: Oinarrizko URL-a
@ -822,6 +825,7 @@ eu:
destroyed_msg: Guneko igoera ongi ezabatu da! destroyed_msg: Guneko igoera ongi ezabatu da!
software_updates: software_updates:
critical_update: Kritikoa — mesedez, eguneratu azkar critical_update: Kritikoa — mesedez, eguneratu azkar
description: Gomendagarria da Mastodon instalazioa eguneratuta mantentzea azken konponketa eta funtzioez baliatzeko. Gainera, batzuetan ezinbestekoa da Mastodon garaiz eguneratzea segurtasun arazoak saihesteko. Arrazoi hauengatik, Mastodonek 30 minuturo eguneratzeak egiaztatzen ditu, eta zure posta elektroniko bidezko jakinarazpenen lehentasunen arabera jakinaraziko dizu.
documentation_link: Informazio gehiago documentation_link: Informazio gehiago
release_notes: Bertsio oharrak release_notes: Bertsio oharrak
title: Eguneraketak eskuragarri title: Eguneraketak eskuragarri

View File

@ -1851,6 +1851,8 @@ fr-CA:
limit: Vous avez déjà épinglé le nombre maximum de messages limit: Vous avez déjà épinglé le nombre maximum de messages
ownership: Vous ne pouvez pas épingler un message ne vous appartenant pas ownership: Vous ne pouvez pas épingler un message ne vous appartenant pas
reblog: Un partage ne peut pas être épinglé reblog: Un partage ne peut pas être épinglé
quote_policies:
followers: Abonné·e·s et utilisateur·trice·s mentionné·e·s
title: "%{name}: « %{quote} »" title: "%{name}: « %{quote} »"
visibilities: visibilities:
direct: Direct direct: Direct
@ -1904,6 +1906,8 @@ fr-CA:
does_not_match_previous_name: ne correspond pas au nom précédent does_not_match_previous_name: ne correspond pas au nom précédent
terms_of_service: terms_of_service:
title: Conditions d'utilisation title: Conditions d'utilisation
terms_of_service_interstitial:
title: Les conditions d'utilisation de %{domain} ont changées
themes: themes:
contrast: Mastodon (Contraste élevé) contrast: Mastodon (Contraste élevé)
default: Mastodon (Sombre) default: Mastodon (Sombre)

View File

@ -1851,6 +1851,8 @@ fr:
limit: Vous avez déjà épinglé le nombre maximum de messages limit: Vous avez déjà épinglé le nombre maximum de messages
ownership: Vous ne pouvez pas épingler un message ne vous appartenant pas ownership: Vous ne pouvez pas épingler un message ne vous appartenant pas
reblog: Un partage ne peut pas être épinglé reblog: Un partage ne peut pas être épinglé
quote_policies:
followers: Abonné·e·s et utilisateur·trice·s mentionné·e·s
title: "%{name}: « %{quote} »" title: "%{name}: « %{quote} »"
visibilities: visibilities:
direct: Direct direct: Direct
@ -1904,6 +1906,8 @@ fr:
does_not_match_previous_name: ne correspond pas au nom précédent does_not_match_previous_name: ne correspond pas au nom précédent
terms_of_service: terms_of_service:
title: Conditions d'utilisation title: Conditions d'utilisation
terms_of_service_interstitial:
title: Les conditions d'utilisation de %{domain} ont changées
themes: themes:
contrast: Mastodon (Contraste élevé) contrast: Mastodon (Contraste élevé)
default: Mastodon (Sombre) default: Mastodon (Sombre)

View File

@ -1406,6 +1406,10 @@ ga:
basic_information: Eolas bunúsach basic_information: Eolas bunúsach
hint_html: "<strong>Saincheap a bhfeiceann daoine ar do phróifíl phoiblí agus in aice le do phostálacha.</strong> Is dóichí go leanfaidh daoine eile ar ais tú agus go n-idirghníomhóidh siad leat nuair a bhíonn próifíl líonta agus pictiúr próifíle agat." hint_html: "<strong>Saincheap a bhfeiceann daoine ar do phróifíl phoiblí agus in aice le do phostálacha.</strong> Is dóichí go leanfaidh daoine eile ar ais tú agus go n-idirghníomhóidh siad leat nuair a bhíonn próifíl líonta agus pictiúr próifíle agat."
other: Eile other: Eile
emoji_styles:
auto: Uath
native: Dúchasach
twemoji: Twemoji
errors: errors:
'400': Bhí an t-iarratas a chuir tú isteach neamhbhailí nó míchumtha. '400': Bhí an t-iarratas a chuir tú isteach neamhbhailí nó míchumtha.
'403': Níl cead agat an leathanach seo a fheiceáil. '403': Níl cead agat an leathanach seo a fheiceáil.

View File

@ -1351,6 +1351,10 @@ it:
basic_information: Informazioni di base basic_information: Informazioni di base
hint_html: "<strong>Personalizza ciò che le persone vedono sul tuo profilo pubblico e accanto ai tuoi post.</strong> È più probabile che altre persone ti seguano e interagiscano con te quando hai un profilo compilato e un'immagine del profilo." hint_html: "<strong>Personalizza ciò che le persone vedono sul tuo profilo pubblico e accanto ai tuoi post.</strong> È più probabile che altre persone ti seguano e interagiscano con te quando hai un profilo compilato e un'immagine del profilo."
other: Altro other: Altro
emoji_styles:
auto: Automatico
native: Nativo
twemoji: Twemoji
errors: errors:
'400': La richiesta che hai inviato non è valida o non è corretta. '400': La richiesta che hai inviato non è valida o non è corretta.
'403': Non sei autorizzato a visualizzare questa pagina. '403': Non sei autorizzato a visualizzare questa pagina.

View File

@ -186,6 +186,7 @@ lad:
create_domain_block: Kriya bloko de domeno create_domain_block: Kriya bloko de domeno
create_email_domain_block: Kriya bloko de domeno de posta create_email_domain_block: Kriya bloko de domeno de posta
create_ip_block: Kriya regla de IP create_ip_block: Kriya regla de IP
create_relay: Kriya relevo
create_unavailable_domain: Kriya domeno no desponivle create_unavailable_domain: Kriya domeno no desponivle
create_user_role: Kriya rolo create_user_role: Kriya rolo
demote_user: Degrada utilizador demote_user: Degrada utilizador
@ -197,6 +198,7 @@ lad:
destroy_email_domain_block: Efasa bloko de domeno de posta destroy_email_domain_block: Efasa bloko de domeno de posta
destroy_instance: Efasa domeno destroy_instance: Efasa domeno
destroy_ip_block: Efasa regla de IP destroy_ip_block: Efasa regla de IP
destroy_relay: Efasa relevo
destroy_status: Efasa publikasyon destroy_status: Efasa publikasyon
destroy_unavailable_domain: Efasa domeno no desponivle destroy_unavailable_domain: Efasa domeno no desponivle
destroy_user_role: Efasa rolo destroy_user_role: Efasa rolo
@ -205,6 +207,7 @@ lad:
disable_sign_in_token_auth_user: Inkapasita la autentifikasyon por token de posta elektronika para el utilizador disable_sign_in_token_auth_user: Inkapasita la autentifikasyon por token de posta elektronika para el utilizador
disable_user: Inkapasita utilizador disable_user: Inkapasita utilizador
enable_custom_emoji: Kapasita emoji personalizados enable_custom_emoji: Kapasita emoji personalizados
enable_relay: Aktiva relevo
enable_sign_in_token_auth_user: Kapasita la autentifikasyon por token de posta para el utilizador enable_sign_in_token_auth_user: Kapasita la autentifikasyon por token de posta para el utilizador
enable_user: Kapasita utilizador enable_user: Kapasita utilizador
memorialize_account: Transforma en kuento komemorativo memorialize_account: Transforma en kuento komemorativo
@ -229,6 +232,7 @@ lad:
update_custom_emoji: Aktualiza emoji personalizado update_custom_emoji: Aktualiza emoji personalizado
update_domain_block: Aktualiza bloko de domeno update_domain_block: Aktualiza bloko de domeno
update_ip_block: Aktualiza regla de IP update_ip_block: Aktualiza regla de IP
update_report: Aktualiza raporto
update_status: Aktualiza publikasyon update_status: Aktualiza publikasyon
update_user_role: Aktualiza rolo update_user_role: Aktualiza rolo
actions: actions:
@ -466,10 +470,13 @@ lad:
fasp: fasp:
debug: debug:
callbacks: callbacks:
created_at: Kriyado en
delete: Efasa delete: Efasa
ip: Adreso IP
providers: providers:
active: Aktivo active: Aktivo
delete: Efasa delete: Efasa
finish_registration: Finaliza enrejistrasyon
name: Nombre name: Nombre
registrations: registrations:
confirm: Konfirma confirm: Konfirma
@ -542,6 +549,12 @@ lad:
all: Todos all: Todos
limited: Limitado limited: Limitado
title: Moderasyon title: Moderasyon
moderation_notes:
create: Adjusta nota de moderasyon
created_msg: Nota de moderasyon de sirvidor kriyada kon sukseso!
description_html: Ve i desha notas a otros moderadores i a tu yo futuro
destroyed_msg: Nota de moderasyon de sirvidor efasada kon sukseso!
title: Notas de moderasyon
private_comment: Komento privado private_comment: Komento privado
public_comment: Komento publiko public_comment: Komento publiko
purge: Purga purge: Purga
@ -748,6 +761,7 @@ lad:
title: Rolos title: Rolos
rules: rules:
add_new: Adjusta regla add_new: Adjusta regla
add_translation: Adjusta traduksyon
delete: Efasa delete: Efasa
description_html: Aunke la majorita afirma aver meldado i estar de akodro kon los terminos de servisyo, la djente normalmente no los melda asta dempues de ke surja algun problema. <strong>Az ke sea mas kolay ver las normas de tu sirvidor de un vistazo estipulándolas en una lista de puntos.</strong> Aprova ke kada norma sea corta i kolay, ama sin estar divididas en munchos puntos. description_html: Aunke la majorita afirma aver meldado i estar de akodro kon los terminos de servisyo, la djente normalmente no los melda asta dempues de ke surja algun problema. <strong>Az ke sea mas kolay ver las normas de tu sirvidor de un vistazo estipulándolas en una lista de puntos.</strong> Aprova ke kada norma sea corta i kolay, ama sin estar divididas en munchos puntos.
edit: Edita regla edit: Edita regla
@ -920,6 +934,9 @@ lad:
updated_msg: Konfigurasyon de etiketas aktualizada kon sukseso updated_msg: Konfigurasyon de etiketas aktualizada kon sukseso
terms_of_service: terms_of_service:
changelog: Ke troko changelog: Ke troko
current: Aktual
generates:
action: Djenera
history: Istorya history: Istorya
live: En bivo live: En bivo
publish: Publika publish: Publika
@ -1245,6 +1262,10 @@ lad:
basic_information: Enformasyon bazika basic_information: Enformasyon bazika
hint_html: "<strong>Personaliza lo ke la djente ve en tu profil publiko i kon tus publikasyones.</strong> Es mas probavle ke otras personas te sigan i enteraktuen kontigo kuando kompletas tu profil i foto." hint_html: "<strong>Personaliza lo ke la djente ve en tu profil publiko i kon tus publikasyones.</strong> Es mas probavle ke otras personas te sigan i enteraktuen kontigo kuando kompletas tu profil i foto."
other: Otros other: Otros
emoji_styles:
auto: Otomatiko
native: Nativo
twemoji: Twemoji
errors: errors:
'400': La solisitasyon ke enviates no fue valida o fue malformada. '400': La solisitasyon ke enviates no fue valida o fue malformada.
'403': No tienes permiso para ver esta pajina. '403': No tienes permiso para ver esta pajina.

View File

@ -583,7 +583,7 @@ nl:
created_msg: Aanmaken van servermoderatie-opmerking geslaagd! created_msg: Aanmaken van servermoderatie-opmerking geslaagd!
description_html: Opmerkingen bekijken, en voor jezelf en andere moderatoren achterlaten description_html: Opmerkingen bekijken, en voor jezelf en andere moderatoren achterlaten
destroyed_msg: Verwijderen van servermoderatie-opmerking geslaagd! destroyed_msg: Verwijderen van servermoderatie-opmerking geslaagd!
placeholder: Informatie over deze server, genomen acties of iets anders die jou kunnen helpen om deze server in de toekomst te moderen. placeholder: Informatie over deze server, genomen acties of iets anders die jou kunnen helpen om deze server in de toekomst te modereren.
title: Moderatie-opmerkingen title: Moderatie-opmerkingen
private_comment: Privé-opmerking private_comment: Privé-opmerking
public_comment: Openbare opmerking public_comment: Openbare opmerking

View File

@ -61,7 +61,7 @@ da:
setting_display_media_default: Skjul medier med sensitiv-markering setting_display_media_default: Skjul medier med sensitiv-markering
setting_display_media_hide_all: Skjul altid medier setting_display_media_hide_all: Skjul altid medier
setting_display_media_show_all: Vis altid medier setting_display_media_show_all: Vis altid medier
setting_emoji_style: Hvordan emojis skal vises. "Auto" vil forsøge at bruge indbyggede emojis, men skifter tilbage til Twemoji for ældre browsere. setting_emoji_style: Hvordan emojis skal vises. "Auto" vil forsøge at bruge indbyggede emojis, men skifter tilbage til Twemoji i ældre webbrowsere.
setting_system_scrollbars_ui: Gælder kun for computerwebbrowsere baseret på Safari og Chrome setting_system_scrollbars_ui: Gælder kun for computerwebbrowsere baseret på Safari og Chrome
setting_use_blurhash: Gradienter er baseret på de skjulte grafikelementers farver, men slører alle detaljer setting_use_blurhash: Gradienter er baseret på de skjulte grafikelementers farver, men slører alle detaljer
setting_use_pending_items: Skjul tidslinjeopdateringer bag et klik i stedet for brug af auto-feedrulning setting_use_pending_items: Skjul tidslinjeopdateringer bag et klik i stedet for brug af auto-feedrulning

View File

@ -61,7 +61,7 @@ de:
setting_display_media_default: Medien mit Inhaltswarnung ausblenden setting_display_media_default: Medien mit Inhaltswarnung ausblenden
setting_display_media_hide_all: Medien immer ausblenden setting_display_media_hide_all: Medien immer ausblenden
setting_display_media_show_all: Medien mit Inhaltswarnung immer anzeigen setting_display_media_show_all: Medien mit Inhaltswarnung immer anzeigen
setting_emoji_style: Darstellung von Emojis. „Automatisch“ verwendet native Emojis, für ältere Browser jedoch Twemoji. setting_emoji_style: 'Wie Emojis dargestellt werden: „Automatisch“ verwendet native Emojis, für veraltete Browser wird jedoch Twemoji verwendet.'
setting_system_scrollbars_ui: Betrifft nur Desktop-Browser, die auf Chrome oder Safari basieren setting_system_scrollbars_ui: Betrifft nur Desktop-Browser, die auf Chrome oder Safari basieren
setting_use_blurhash: Der Farbverlauf basiert auf den Farben der ausgeblendeten Medien, verschleiert aber jegliche Details setting_use_blurhash: Der Farbverlauf basiert auf den Farben der ausgeblendeten Medien, verschleiert aber jegliche Details
setting_use_pending_items: Neue Beiträge hinter einem Klick verstecken, anstatt automatisch zu scrollen setting_use_pending_items: Neue Beiträge hinter einem Klick verstecken, anstatt automatisch zu scrollen
@ -248,7 +248,7 @@ de:
setting_missing_alt_text_modal: Bestätigungsdialog anzeigen, bevor Medien ohne Bildbeschreibung veröffentlicht werden setting_missing_alt_text_modal: Bestätigungsdialog anzeigen, bevor Medien ohne Bildbeschreibung veröffentlicht werden
setting_reduce_motion: Bewegung in Animationen verringern setting_reduce_motion: Bewegung in Animationen verringern
setting_system_font_ui: Standardschriftart des Browsers verwenden setting_system_font_ui: Standardschriftart des Browsers verwenden
setting_system_scrollbars_ui: Bildlaufleiste des Systems verwenden setting_system_scrollbars_ui: Bildlaufleiste des Betriebssystems verwenden
setting_theme: Design setting_theme: Design
setting_trends: Heutige Trends anzeigen setting_trends: Heutige Trends anzeigen
setting_unfollow_modal: Bestätigungsdialog beim Entfolgen eines Profils anzeigen setting_unfollow_modal: Bestätigungsdialog beim Entfolgen eines Profils anzeigen

View File

@ -61,6 +61,7 @@ ga:
setting_display_media_default: Folaigh meáin atá marcáilte mar íogair setting_display_media_default: Folaigh meáin atá marcáilte mar íogair
setting_display_media_hide_all: Folaigh meáin i gcónaí setting_display_media_hide_all: Folaigh meáin i gcónaí
setting_display_media_show_all: Taispeáin meáin i gcónaí setting_display_media_show_all: Taispeáin meáin i gcónaí
setting_emoji_style: Conas emojis a thaispeáint. Déanfaidh "Auto" iarracht emoji dúchasacha a úsáid, ach titeann sé ar ais go Twemoji le haghaidh seanbhrabhsálaithe.
setting_system_scrollbars_ui: Ní bhaineann sé ach le brabhsálaithe deisce bunaithe ar Safari agus Chrome setting_system_scrollbars_ui: Ní bhaineann sé ach le brabhsálaithe deisce bunaithe ar Safari agus Chrome
setting_use_blurhash: Tá grádáin bunaithe ar dhathanna na n-amharcanna ceilte ach cuireann siad salach ar aon mhionsonraí setting_use_blurhash: Tá grádáin bunaithe ar dhathanna na n-amharcanna ceilte ach cuireann siad salach ar aon mhionsonraí
setting_use_pending_items: Folaigh nuashonruithe amlíne taobh thiar de chlic seachas an fotha a scrollú go huathoibríoch setting_use_pending_items: Folaigh nuashonruithe amlíne taobh thiar de chlic seachas an fotha a scrollú go huathoibríoch
@ -244,6 +245,7 @@ ga:
setting_display_media_default: Réamhshocrú setting_display_media_default: Réamhshocrú
setting_display_media_hide_all: Cuir uile i bhfolach setting_display_media_hide_all: Cuir uile i bhfolach
setting_display_media_show_all: Taispeáin uile setting_display_media_show_all: Taispeáin uile
setting_emoji_style: Stíl Emoji
setting_expand_spoilers: Méadaigh postálacha atá marcáilte le rabhaidh inneachair i gcónaí setting_expand_spoilers: Méadaigh postálacha atá marcáilte le rabhaidh inneachair i gcónaí
setting_hide_network: Folaigh do ghraf sóisialta setting_hide_network: Folaigh do ghraf sóisialta
setting_missing_alt_text_modal: Taispeáin dialóg deimhnithe sula bpostálann tú meán gan alt téacs setting_missing_alt_text_modal: Taispeáin dialóg deimhnithe sula bpostálann tú meán gan alt téacs

View File

@ -61,6 +61,7 @@ it:
setting_display_media_default: Nascondi media segnati come sensibili setting_display_media_default: Nascondi media segnati come sensibili
setting_display_media_hide_all: Nascondi sempre tutti i media setting_display_media_hide_all: Nascondi sempre tutti i media
setting_display_media_show_all: Mostra sempre i media segnati come sensibili setting_display_media_show_all: Mostra sempre i media segnati come sensibili
setting_emoji_style: Come visualizzare gli emoji. "Automatico" proverà a usare gli emoji nativi, ma per i browser più vecchi ricorrerà a Twemoji.
setting_system_scrollbars_ui: Si applica solo ai browser desktop basati su Safari e Chrome setting_system_scrollbars_ui: Si applica solo ai browser desktop basati su Safari e Chrome
setting_use_blurhash: I gradienti sono basati sui colori delle immagini nascoste ma offuscano tutti i dettagli setting_use_blurhash: I gradienti sono basati sui colori delle immagini nascoste ma offuscano tutti i dettagli
setting_use_pending_items: Fare clic per mostrare i nuovi messaggi invece di aggiornare la timeline automaticamente setting_use_pending_items: Fare clic per mostrare i nuovi messaggi invece di aggiornare la timeline automaticamente
@ -241,6 +242,7 @@ it:
setting_display_media_default: Predefinita setting_display_media_default: Predefinita
setting_display_media_hide_all: Nascondi tutti setting_display_media_hide_all: Nascondi tutti
setting_display_media_show_all: Mostra tutti setting_display_media_show_all: Mostra tutti
setting_emoji_style: Stile emoji
setting_expand_spoilers: Espandi sempre post con content warning setting_expand_spoilers: Espandi sempre post con content warning
setting_hide_network: Nascondi la tua rete setting_hide_network: Nascondi la tua rete
setting_missing_alt_text_modal: Chiedi di confermare prima di pubblicare media senza testo alternativo setting_missing_alt_text_modal: Chiedi di confermare prima di pubblicare media senza testo alternativo

View File

@ -61,7 +61,7 @@ nl:
setting_display_media_default: Als gevoelig gemarkeerde media verbergen setting_display_media_default: Als gevoelig gemarkeerde media verbergen
setting_display_media_hide_all: Media altijd verbergen setting_display_media_hide_all: Media altijd verbergen
setting_display_media_show_all: Media altijd tonen setting_display_media_show_all: Media altijd tonen
setting_emoji_style: Waarmee moeten emojis worden weergegeven. "Auto" probeert de systeemeigen emojis te gebruiken, maar valt terug op Twemoji voor oudere webbrowsers. setting_emoji_style: Waarmee moeten emojis worden weergegeven. Auto probeert de systeemeigen emojis te gebruiken, maar valt terug op Twemoji voor oudere webbrowsers.
setting_system_scrollbars_ui: Alleen van toepassing op desktopbrowsers gebaseerd op Safari en Chrome setting_system_scrollbars_ui: Alleen van toepassing op desktopbrowsers gebaseerd op Safari en Chrome
setting_use_blurhash: Wazige kleurovergangen zijn gebaseerd op de kleuren van de verborgen media, waarmee elk detail verdwijnt setting_use_blurhash: Wazige kleurovergangen zijn gebaseerd op de kleuren van de verborgen media, waarmee elk detail verdwijnt
setting_use_pending_items: De tijdlijn wordt bijgewerkt door op het aantal nieuwe items te klikken, in plaats van dat deze automatisch wordt bijgewerkt setting_use_pending_items: De tijdlijn wordt bijgewerkt door op het aantal nieuwe items te klikken, in plaats van dat deze automatisch wordt bijgewerkt

View File

@ -234,6 +234,7 @@ uk:
setting_display_media_default: За промовчанням setting_display_media_default: За промовчанням
setting_display_media_hide_all: Сховати всі setting_display_media_hide_all: Сховати всі
setting_display_media_show_all: Показати всі setting_display_media_show_all: Показати всі
setting_emoji_style: Стиль емодзі
setting_expand_spoilers: Завжди розгортати дописи з попередженнями про вміст setting_expand_spoilers: Завжди розгортати дописи з попередженнями про вміст
setting_hide_network: Сховати вашу мережу setting_hide_network: Сховати вашу мережу
setting_missing_alt_text_modal: Запитувати перед розміщенням медіа без альтернативного тексту setting_missing_alt_text_modal: Запитувати перед розміщенням медіа без альтернативного тексту

View File

@ -1338,6 +1338,9 @@ uk:
basic_information: Основна інформація basic_information: Основна інформація
hint_html: "<strong>Налаштуйте те, що люди бачитимуть у вашому загальнодоступному профілі та поруч із вашими дописами.</strong> Інші люди з більшою ймовірністю підпишуться на вас та взаємодіятимуть з вами, якщо у вас є заповнений профіль та зображення профілю." hint_html: "<strong>Налаштуйте те, що люди бачитимуть у вашому загальнодоступному профілі та поруч із вашими дописами.</strong> Інші люди з більшою ймовірністю підпишуться на вас та взаємодіятимуть з вами, якщо у вас є заповнений профіль та зображення профілю."
other: Інше other: Інше
emoji_styles:
auto: Авто
native: Рідний
errors: errors:
'400': Ваш запит був недійсним або неправильним. '400': Ваш запит був недійсним або неправильним.
'403': У Вас немає доступу до перегляду даної сторінки. '403': У Вас немає доступу до перегляду даної сторінки.

View File

@ -1288,49 +1288,64 @@ RSpec.describe Mastodon::CLI::Accounts do
describe '#prune' do describe '#prune' do
let(:action) { :prune } let(:action) { :prune }
let!(:local_account) { Fabricate(:account) } let(:viable_attrs) { { domain: 'example.com', bot: false, suspended: false, silenced: false } }
let!(:bot_account) { Fabricate(:account, bot: true, domain: 'example.com') } let!(:local_account) { Fabricate(:account) }
let!(:group_account) { Fabricate(:account, actor_type: 'Group', domain: 'example.com') } let!(:bot_account) { Fabricate(:account, bot: true, domain: 'example.com') }
let!(:mentioned_account) { Fabricate(:account, domain: 'example.com') } let!(:group_account) { Fabricate(:account, actor_type: 'Group', domain: 'example.com') }
let!(:prunable_accounts) do let!(:account_mentioned) { Fabricate(:account, viable_attrs) }
Fabricate.times(2, :account, domain: 'example.com', bot: false, suspended_at: nil, silenced_at: nil) let!(:account_with_favourite) { Fabricate(:account, viable_attrs) }
end let!(:account_with_status) { Fabricate(:account, viable_attrs) }
let!(:account_with_follow) { Fabricate(:account, viable_attrs) }
let!(:account_targeted_follow) { Fabricate(:account, viable_attrs) }
let!(:account_with_block) { Fabricate(:account, viable_attrs) }
let!(:account_targeted_block) { Fabricate(:account, viable_attrs) }
let!(:account_targeted_mute) { Fabricate(:account, viable_attrs) }
let!(:account_targeted_report) { Fabricate(:account, viable_attrs) }
let!(:account_with_follow_request) { Fabricate(:account, viable_attrs) }
let!(:account_targeted_follow_request) { Fabricate(:account, viable_attrs) }
let!(:prunable_accounts) { Fabricate.times(2, :account, viable_attrs) }
before do before do
Fabricate(:mention, account: mentioned_account, status: Fabricate(:status, account: Fabricate(:account))) Fabricate :mention, account: account_mentioned, status: Fabricate(:status, account: Fabricate(:account))
Fabricate :favourite, account: account_with_favourite
Fabricate :status, account: account_with_status
Fabricate :follow, account: account_with_follow
Fabricate :follow, target_account: account_targeted_follow
Fabricate :block, account: account_with_block
Fabricate :block, target_account: account_targeted_block
Fabricate :mute, target_account: account_targeted_mute
Fabricate :report, target_account: account_targeted_report
Fabricate :follow_request, account: account_with_follow_request
Fabricate :follow_request, target_account: account_targeted_follow_request
stub_parallelize_with_progress! stub_parallelize_with_progress!
end end
def expect_prune_remote_accounts_without_interaction
prunable_account_ids = prunable_accounts.pluck(:id)
expect(Account.where(id: prunable_account_ids).count).to eq(0)
end
it 'displays a successful message and handles accounts correctly' do it 'displays a successful message and handles accounts correctly' do
expect { subject } expect { subject }
.to output_results("OK, pruned #{prunable_accounts.size} accounts") .to output_results("OK, pruned #{prunable_accounts.size} accounts")
expect_prune_remote_accounts_without_interaction expect(prunable_account_records)
expect_not_prune_local_accounts .to have_attributes(count: eq(0))
expect_not_prune_bot_accounts expect(Account.all)
expect_not_prune_group_accounts .to include(local_account)
expect_not_prune_mentioned_accounts .and include(bot_account)
.and include(group_account)
.and include(account_mentioned)
.and include(account_with_favourite)
.and include(account_with_status)
.and include(account_with_follow)
.and include(account_targeted_follow)
.and include(account_with_block)
.and include(account_targeted_block)
.and include(account_targeted_mute)
.and include(account_targeted_report)
.and include(account_with_follow_request)
.and include(account_targeted_follow_request)
.and not_include(prunable_accounts.first)
.and not_include(prunable_accounts.last)
end end
def expect_not_prune_local_accounts def prunable_account_records
expect(Account.exists?(id: local_account.id)).to be(true) Account.where(id: prunable_accounts.pluck(:id))
end
def expect_not_prune_bot_accounts
expect(Account.exists?(id: bot_account.id)).to be(true)
end
def expect_not_prune_group_accounts
expect(Account.exists?(id: group_account.id)).to be(true)
end
def expect_not_prune_mentioned_accounts
expect(Account.exists?(id: mentioned_account.id)).to be true
end end
context 'with --dry-run option' do context 'with --dry-run option' do

View File

@ -191,6 +191,19 @@ RSpec.describe Status do
end end
end end
describe '.not_replying_to_account' do
let(:account) { Fabricate :account }
let!(:status_from_account) { Fabricate :status, account: account }
let!(:reply_to_account_status) { Fabricate :status, thread: status_from_account }
let!(:reply_to_other) { Fabricate :status, thread: Fabricate(:status) }
it 'returns records not in reply to provided account' do
expect(described_class.not_replying_to_account(account))
.to not_include(reply_to_account_status)
.and include(reply_to_other)
end
end
describe '#untrusted_favourites_count' do describe '#untrusted_favourites_count' do
before do before do
alice.update(domain: 'example.com') alice.update(domain: 'example.com')
@ -363,6 +376,28 @@ RSpec.describe Status do
end end
end end
describe '.only_polls' do
let!(:poll_status) { Fabricate :status, poll: Fabricate(:poll) }
let!(:no_poll_status) { Fabricate :status }
it 'returns the expected statuses' do
expect(described_class.only_polls)
.to include(poll_status)
.and not_include(no_poll_status)
end
end
describe '.without_polls' do
let!(:poll_status) { Fabricate :status, poll: Fabricate(:poll) }
let!(:no_poll_status) { Fabricate :status }
it 'returns the expected statuses' do
expect(described_class.without_polls)
.to not_include(poll_status)
.and include(no_poll_status)
end
end
describe '.tagged_with' do describe '.tagged_with' do
let(:tag_cats) { Fabricate(:tag, name: 'cats') } let(:tag_cats) { Fabricate(:tag, name: 'cats') }
let(:tag_dogs) { Fabricate(:tag, name: 'dogs') } let(:tag_dogs) { Fabricate(:tag, name: 'dogs') }

View File

@ -19,7 +19,7 @@
"dependencies": { "dependencies": {
"cors": "^2.8.5", "cors": "^2.8.5",
"dotenv": "^16.0.3", "dotenv": "^16.0.3",
"express": "^4.18.2", "express": "^5.0.0",
"ioredis": "^5.3.2", "ioredis": "^5.3.2",
"jsdom": "^26.0.0", "jsdom": "^26.0.0",
"pg": "^8.5.0", "pg": "^8.5.0",
@ -33,7 +33,7 @@
"devDependencies": { "devDependencies": {
"@eslint/js": "^9.23.0", "@eslint/js": "^9.23.0",
"@types/cors": "^2.8.16", "@types/cors": "^2.8.16",
"@types/express": "^4.17.17", "@types/express": "^5.0.0",
"@types/pg": "^8.6.6", "@types/pg": "^8.6.6",
"@types/uuid": "^10.0.0", "@types/uuid": "^10.0.0",
"@types/ws": "^8.5.9", "@types/ws": "^8.5.9",

447
yarn.lock
View File

@ -2768,14 +2768,14 @@ __metadata:
dependencies: dependencies:
"@eslint/js": "npm:^9.23.0" "@eslint/js": "npm:^9.23.0"
"@types/cors": "npm:^2.8.16" "@types/cors": "npm:^2.8.16"
"@types/express": "npm:^4.17.17" "@types/express": "npm:^5.0.0"
"@types/pg": "npm:^8.6.6" "@types/pg": "npm:^8.6.6"
"@types/uuid": "npm:^10.0.0" "@types/uuid": "npm:^10.0.0"
"@types/ws": "npm:^8.5.9" "@types/ws": "npm:^8.5.9"
bufferutil: "npm:^4.0.7" bufferutil: "npm:^4.0.7"
cors: "npm:^2.8.5" cors: "npm:^2.8.5"
dotenv: "npm:^16.0.3" dotenv: "npm:^16.0.3"
express: "npm:^4.18.2" express: "npm:^5.0.0"
globals: "npm:^16.0.0" globals: "npm:^16.0.0"
ioredis: "npm:^5.3.2" ioredis: "npm:^5.3.2"
jsdom: "npm:^26.0.0" jsdom: "npm:^26.0.0"
@ -3983,27 +3983,26 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@types/express-serve-static-core@npm:^4.17.33": "@types/express-serve-static-core@npm:^5.0.0":
version: 4.17.41 version: 5.0.6
resolution: "@types/express-serve-static-core@npm:4.17.41" resolution: "@types/express-serve-static-core@npm:5.0.6"
dependencies: dependencies:
"@types/node": "npm:*" "@types/node": "npm:*"
"@types/qs": "npm:*" "@types/qs": "npm:*"
"@types/range-parser": "npm:*" "@types/range-parser": "npm:*"
"@types/send": "npm:*" "@types/send": "npm:*"
checksum: 10c0/dc166cbf4475c00a81fbcab120bf7477c527184be11ae149df7f26d9c1082114c68f8d387a2926fe80291b06477c8bbd9231ff4f5775de328e887695aefce269 checksum: 10c0/aced8cc88c1718adbbd1fc488756b0f22d763368d9eff2ae21b350698fab4a77d8d13c3699056dc662a887e43a8b67a3e8f6289ff76102ecc6bad4a7710d31a6
languageName: node languageName: node
linkType: hard linkType: hard
"@types/express@npm:^4.17.17": "@types/express@npm:^5.0.0":
version: 4.17.22 version: 5.0.3
resolution: "@types/express@npm:4.17.22" resolution: "@types/express@npm:5.0.3"
dependencies: dependencies:
"@types/body-parser": "npm:*" "@types/body-parser": "npm:*"
"@types/express-serve-static-core": "npm:^4.17.33" "@types/express-serve-static-core": "npm:^5.0.0"
"@types/qs": "npm:*"
"@types/serve-static": "npm:*" "@types/serve-static": "npm:*"
checksum: 10c0/15c10a5ebb40a0356baa95ed374a2150d862786c9fccbdd724df12acc9c8cb08fbe1d34b446b1bcef2dbe5305cb3013fb39fba791baa54ef6df8056482776abb checksum: 10c0/f0fbc8daa7f40070b103cf4d020ff1dd08503477d866d1134b87c0390bba71d5d7949cb8b4e719a81ccba89294d8e1573414e6dcbb5bb1d097a7b820928ebdef
languageName: node languageName: node
linkType: hard linkType: hard
@ -4961,13 +4960,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"accepts@npm:~1.3.8": "accepts@npm:^2.0.0":
version: 1.3.8 version: 2.0.0
resolution: "accepts@npm:1.3.8" resolution: "accepts@npm:2.0.0"
dependencies: dependencies:
mime-types: "npm:~2.1.34" mime-types: "npm:^3.0.0"
negotiator: "npm:0.6.3" negotiator: "npm:^1.0.0"
checksum: 10c0/3a35c5f5586cfb9a21163ca47a5f77ac34fa8ceb5d17d2fa2c0d81f41cbd7f8c6fa52c77e2c039acc0f4d09e71abdc51144246900f6bef5e3c4b333f77d89362 checksum: 10c0/98374742097e140891546076215f90c32644feacf652db48412329de4c2a529178a81aa500fbb13dd3e6cbf6e68d829037b123ac037fc9a08bcec4b87b358eef
languageName: node languageName: node
linkType: hard linkType: hard
@ -5135,13 +5134,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"array-flatten@npm:1.1.1":
version: 1.1.1
resolution: "array-flatten@npm:1.1.1"
checksum: 10c0/806966c8abb2f858b08f5324d9d18d7737480610f3bd5d3498aaae6eb5efdc501a884ba019c9b4a8f02ff67002058749d05548fd42fa8643f02c9c7f22198b91
languageName: node
linkType: hard
"array-includes@npm:^3.1.6, array-includes@npm:^3.1.8": "array-includes@npm:^3.1.6, array-includes@npm:^3.1.8":
version: 3.1.8 version: 3.1.8
resolution: "array-includes@npm:3.1.8" resolution: "array-includes@npm:3.1.8"
@ -5511,23 +5503,20 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"body-parser@npm:1.20.3": "body-parser@npm:^2.2.0":
version: 1.20.3 version: 2.2.0
resolution: "body-parser@npm:1.20.3" resolution: "body-parser@npm:2.2.0"
dependencies: dependencies:
bytes: "npm:3.1.2" bytes: "npm:^3.1.2"
content-type: "npm:~1.0.5" content-type: "npm:^1.0.5"
debug: "npm:2.6.9" debug: "npm:^4.4.0"
depd: "npm:2.0.0" http-errors: "npm:^2.0.0"
destroy: "npm:1.2.0" iconv-lite: "npm:^0.6.3"
http-errors: "npm:2.0.0" on-finished: "npm:^2.4.1"
iconv-lite: "npm:0.4.24" qs: "npm:^6.14.0"
on-finished: "npm:2.4.1" raw-body: "npm:^3.0.0"
qs: "npm:6.13.0" type-is: "npm:^2.0.0"
raw-body: "npm:2.5.2" checksum: 10c0/a9ded39e71ac9668e2211afa72e82ff86cc5ef94de1250b7d1ba9cc299e4150408aaa5f1e8b03dd4578472a3ce6d1caa2a23b27a6c18e526e48b4595174c116c
type-is: "npm:~1.6.18"
unpipe: "npm:1.0.0"
checksum: 10c0/0a9a93b7518f222885498dcecaad528cf010dd109b071bf471c93def4bfe30958b83e03496eb9c1ad4896db543d999bb62be1a3087294162a88cfa1b42c16310
languageName: node languageName: node
linkType: hard linkType: hard
@ -5613,7 +5602,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"bytes@npm:3.1.2": "bytes@npm:3.1.2, bytes@npm:^3.1.2":
version: 3.1.2 version: 3.1.2
resolution: "bytes@npm:3.1.2" resolution: "bytes@npm:3.1.2"
checksum: 10c0/76d1c43cbd602794ad8ad2ae94095cddeb1de78c5dddaa7005c51af10b0176c69971a6d88e805a90c2b6550d76636e43c40d8427a808b8645ede885de4a0358e checksum: 10c0/76d1c43cbd602794ad8ad2ae94095cddeb1de78c5dddaa7005c51af10b0176c69971a6d88e805a90c2b6550d76636e43c40d8427a808b8645ede885de4a0358e
@ -5964,16 +5953,16 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"content-disposition@npm:0.5.4": "content-disposition@npm:^1.0.0":
version: 0.5.4 version: 1.0.0
resolution: "content-disposition@npm:0.5.4" resolution: "content-disposition@npm:1.0.0"
dependencies: dependencies:
safe-buffer: "npm:5.2.1" safe-buffer: "npm:5.2.1"
checksum: 10c0/bac0316ebfeacb8f381b38285dc691c9939bf0a78b0b7c2d5758acadad242d04783cee5337ba7d12a565a19075af1b3c11c728e1e4946de73c6ff7ce45f3f1bb checksum: 10c0/c7b1ba0cea2829da0352ebc1b7f14787c73884bc707c8bc2271d9e3bf447b372270d09f5d3980dc5037c749ceef56b9a13fccd0b0001c87c3f12579967e4dd27
languageName: node languageName: node
linkType: hard linkType: hard
"content-type@npm:~1.0.4, content-type@npm:~1.0.5": "content-type@npm:^1.0.5":
version: 1.0.5 version: 1.0.5
resolution: "content-type@npm:1.0.5" resolution: "content-type@npm:1.0.5"
checksum: 10c0/b76ebed15c000aee4678c3707e0860cb6abd4e680a598c0a26e17f0bfae723ec9cc2802f0ff1bc6e4d80603719010431d2231018373d4dde10f9ccff9dadf5af checksum: 10c0/b76ebed15c000aee4678c3707e0860cb6abd4e680a598c0a26e17f0bfae723ec9cc2802f0ff1bc6e4d80603719010431d2231018373d4dde10f9ccff9dadf5af
@ -5994,21 +5983,14 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"cookie-signature@npm:1.0.6": "cookie-signature@npm:^1.2.1":
version: 1.0.6 version: 1.2.2
resolution: "cookie-signature@npm:1.0.6" resolution: "cookie-signature@npm:1.2.2"
checksum: 10c0/b36fd0d4e3fef8456915fcf7742e58fbfcc12a17a018e0eb9501c9d5ef6893b596466f03b0564b81af29ff2538fd0aa4b9d54fe5ccbfb4c90ea50ad29fe2d221 checksum: 10c0/54e05df1a293b3ce81589b27dddc445f462f6fa6812147c033350cd3561a42bc14481674e05ed14c7bd0ce1e8bb3dc0e40851bad75415733711294ddce0b7bc6
languageName: node languageName: node
linkType: hard linkType: hard
"cookie@npm:0.7.1": "cookie@npm:^0.7.1, cookie@npm:^0.7.2":
version: 0.7.1
resolution: "cookie@npm:0.7.1"
checksum: 10c0/5de60c67a410e7c8dc8a46a4b72eb0fe925871d057c9a5d2c0e8145c4270a4f81076de83410c4d397179744b478e33cd80ccbcc457abf40a9409ad27dcd21dde
languageName: node
linkType: hard
"cookie@npm:^0.7.2":
version: 0.7.2 version: 0.7.2
resolution: "cookie@npm:0.7.2" resolution: "cookie@npm:0.7.2"
checksum: 10c0/9596e8ccdbf1a3a88ae02cf5ee80c1c50959423e1022e4e60b91dd87c622af1da309253d8abdb258fb5e3eacb4f08e579dc58b4897b8087574eee0fd35dfa5d2 checksum: 10c0/9596e8ccdbf1a3a88ae02cf5ee80c1c50959423e1022e4e60b91dd87c622af1da309253d8abdb258fb5e3eacb4f08e579dc58b4897b8087574eee0fd35dfa5d2
@ -6032,9 +6014,9 @@ __metadata:
linkType: hard linkType: hard
"core-js@npm:^3.30.2, core-js@npm:^3.41.0": "core-js@npm:^3.30.2, core-js@npm:^3.41.0":
version: 3.43.0 version: 3.44.0
resolution: "core-js@npm:3.43.0" resolution: "core-js@npm:3.44.0"
checksum: 10c0/9d4ad66296e60380777de51d019b5c3e6cce023b7999750a5094f9a4b0ea53bf3600beb4ef11c56548f2c8791d43d4056e270d1cf55ba87273011aa7d4597871 checksum: 10c0/759bf3dc5f75068e9425dddf895fd5531c38794a11ea1c2b65e5ef7c527fe3652d59e8c287e574a211af9bab3c057c5c3fa6f6a773f4e142af895106efad38a4
languageName: node languageName: node
linkType: hard linkType: hard
@ -6272,16 +6254,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"debug@npm:2.6.9": "debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.3.6, debug@npm:^4.3.7, debug@npm:^4.4.0, debug@npm:^4.4.1":
version: 2.6.9
resolution: "debug@npm:2.6.9"
dependencies:
ms: "npm:2.0.0"
checksum: 10c0/121908fb839f7801180b69a7e218a40b5a0b718813b886b7d6bdb82001b931c938e2941d1e4450f33a1b1df1da653f5f7a0440c197f29fbf8a6e9d45ff6ef589
languageName: node
linkType: hard
"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.6, debug@npm:^4.3.7, debug@npm:^4.4.0, debug@npm:^4.4.1":
version: 4.4.1 version: 4.4.1
resolution: "debug@npm:4.4.1" resolution: "debug@npm:4.4.1"
dependencies: dependencies:
@ -6373,7 +6346,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"depd@npm:2.0.0": "depd@npm:2.0.0, depd@npm:^2.0.0":
version: 2.0.0 version: 2.0.0
resolution: "depd@npm:2.0.0" resolution: "depd@npm:2.0.0"
checksum: 10c0/58bd06ec20e19529b06f7ad07ddab60e504d9e0faca4bd23079fac2d279c3594334d736508dc350e06e510aba5e22e4594483b3a6562ce7c17dd797f4cc4ad2c checksum: 10c0/58bd06ec20e19529b06f7ad07ddab60e504d9e0faca4bd23079fac2d279c3594334d736508dc350e06e510aba5e22e4594483b3a6562ce7c17dd797f4cc4ad2c
@ -6387,13 +6360,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"destroy@npm:1.2.0":
version: 1.2.0
resolution: "destroy@npm:1.2.0"
checksum: 10c0/bd7633942f57418f5a3b80d5cb53898127bcf53e24cdf5d5f4396be471417671f0fee48a4ebe9a1e9defbde2a31280011af58a57e090ff822f589b443ed4e643
languageName: node
linkType: hard
"detect-it@npm:^4.0.1": "detect-it@npm:^4.0.1":
version: 4.0.1 version: 4.0.1
resolution: "detect-it@npm:4.0.1" resolution: "detect-it@npm:4.0.1"
@ -6589,14 +6555,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"encodeurl@npm:~1.0.2": "encodeurl@npm:^2.0.0":
version: 1.0.2
resolution: "encodeurl@npm:1.0.2"
checksum: 10c0/f6c2387379a9e7c1156c1c3d4f9cb7bb11cf16dd4c1682e1f6746512564b053df5781029b6061296832b59fb22f459dbe250386d217c2f6e203601abb2ee0bec
languageName: node
linkType: hard
"encodeurl@npm:~2.0.0":
version: 2.0.0 version: 2.0.0
resolution: "encodeurl@npm:2.0.0" resolution: "encodeurl@npm:2.0.0"
checksum: 10c0/5d317306acb13e6590e28e27924c754163946a2480de11865c991a3a7eed4315cd3fba378b543ca145829569eefe9b899f3d84bb09870f675ae60bc924b01ceb checksum: 10c0/5d317306acb13e6590e28e27924c754163946a2480de11865c991a3a7eed4315cd3fba378b543ca145829569eefe9b899f3d84bb09870f675ae60bc924b01ceb
@ -6916,7 +6875,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"escape-html@npm:^1.0.3, escape-html@npm:~1.0.3": "escape-html@npm:^1.0.3":
version: 1.0.3 version: 1.0.3
resolution: "escape-html@npm:1.0.3" resolution: "escape-html@npm:1.0.3"
checksum: 10c0/524c739d776b36c3d29fa08a22e03e8824e3b2fd57500e5e44ecf3cc4707c34c60f9ca0781c0e33d191f2991161504c295e98f68c78fe7baa6e57081ec6ac0a3 checksum: 10c0/524c739d776b36c3d29fa08a22e03e8824e3b2fd57500e5e44ecf3cc4707c34c60f9ca0781c0e33d191f2991161504c295e98f68c78fe7baa6e57081ec6ac0a3
@ -7280,7 +7239,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"etag@npm:~1.8.1": "etag@npm:^1.8.1":
version: 1.8.1 version: 1.8.1
resolution: "etag@npm:1.8.1" resolution: "etag@npm:1.8.1"
checksum: 10c0/12be11ef62fb9817314d790089a0a49fae4e1b50594135dcb8076312b7d7e470884b5100d249b28c18581b7fd52f8b485689ffae22a11ed9ec17377a33a08f84 checksum: 10c0/12be11ef62fb9817314d790089a0a49fae4e1b50594135dcb8076312b7d7e470884b5100d249b28c18581b7fd52f8b485689ffae22a11ed9ec17377a33a08f84
@ -7308,42 +7267,38 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"express@npm:^4.18.2": "express@npm:^5.0.0":
version: 4.21.2 version: 5.1.0
resolution: "express@npm:4.21.2" resolution: "express@npm:5.1.0"
dependencies: dependencies:
accepts: "npm:~1.3.8" accepts: "npm:^2.0.0"
array-flatten: "npm:1.1.1" body-parser: "npm:^2.2.0"
body-parser: "npm:1.20.3" content-disposition: "npm:^1.0.0"
content-disposition: "npm:0.5.4" content-type: "npm:^1.0.5"
content-type: "npm:~1.0.4" cookie: "npm:^0.7.1"
cookie: "npm:0.7.1" cookie-signature: "npm:^1.2.1"
cookie-signature: "npm:1.0.6" debug: "npm:^4.4.0"
debug: "npm:2.6.9" encodeurl: "npm:^2.0.0"
depd: "npm:2.0.0" escape-html: "npm:^1.0.3"
encodeurl: "npm:~2.0.0" etag: "npm:^1.8.1"
escape-html: "npm:~1.0.3" finalhandler: "npm:^2.1.0"
etag: "npm:~1.8.1" fresh: "npm:^2.0.0"
finalhandler: "npm:1.3.1" http-errors: "npm:^2.0.0"
fresh: "npm:0.5.2" merge-descriptors: "npm:^2.0.0"
http-errors: "npm:2.0.0" mime-types: "npm:^3.0.0"
merge-descriptors: "npm:1.0.3" on-finished: "npm:^2.4.1"
methods: "npm:~1.1.2" once: "npm:^1.4.0"
on-finished: "npm:2.4.1" parseurl: "npm:^1.3.3"
parseurl: "npm:~1.3.3" proxy-addr: "npm:^2.0.7"
path-to-regexp: "npm:0.1.12" qs: "npm:^6.14.0"
proxy-addr: "npm:~2.0.7" range-parser: "npm:^1.2.1"
qs: "npm:6.13.0" router: "npm:^2.2.0"
range-parser: "npm:~1.2.1" send: "npm:^1.1.0"
safe-buffer: "npm:5.2.1" serve-static: "npm:^2.2.0"
send: "npm:0.19.0" statuses: "npm:^2.0.1"
serve-static: "npm:1.16.2" type-is: "npm:^2.0.1"
setprototypeof: "npm:1.2.0" vary: "npm:^1.1.2"
statuses: "npm:2.0.1" checksum: 10c0/80ce7c53c5f56887d759b94c3f2283e2e51066c98d4b72a4cc1338e832b77f1e54f30d0239cc10815a0f849bdb753e6a284d2fa48d4ab56faf9c501f55d751d6
type-is: "npm:~1.6.18"
utils-merge: "npm:1.0.1"
vary: "npm:~1.1.2"
checksum: 10c0/38168fd0a32756600b56e6214afecf4fc79ec28eca7f7a91c2ab8d50df4f47562ca3f9dee412da7f5cea6b1a1544b33b40f9f8586dbacfbdada0fe90dbb10a1f
languageName: node languageName: node
linkType: hard linkType: hard
@ -7480,18 +7435,17 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"finalhandler@npm:1.3.1": "finalhandler@npm:^2.1.0":
version: 1.3.1 version: 2.1.0
resolution: "finalhandler@npm:1.3.1" resolution: "finalhandler@npm:2.1.0"
dependencies: dependencies:
debug: "npm:2.6.9" debug: "npm:^4.4.0"
encodeurl: "npm:~2.0.0" encodeurl: "npm:^2.0.0"
escape-html: "npm:~1.0.3" escape-html: "npm:^1.0.3"
on-finished: "npm:2.4.1" on-finished: "npm:^2.4.1"
parseurl: "npm:~1.3.3" parseurl: "npm:^1.3.3"
statuses: "npm:2.0.1" statuses: "npm:^2.0.1"
unpipe: "npm:~1.0.0" checksum: 10c0/da0bbca6d03873472ee890564eb2183f4ed377f25f3628a0fc9d16dac40bed7b150a0d82ebb77356e4c6d97d2796ad2dba22948b951dddee2c8768b0d1b9fb1f
checksum: 10c0/d38035831865a49b5610206a3a9a9aae4e8523cbbcd01175d0480ffbf1278c47f11d89be3ca7f617ae6d94f29cf797546a4619cd84dd109009ef33f12f69019f
languageName: node languageName: node
linkType: hard linkType: hard
@ -7594,10 +7548,10 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"fresh@npm:0.5.2": "fresh@npm:^2.0.0":
version: 0.5.2 version: 2.0.0
resolution: "fresh@npm:0.5.2" resolution: "fresh@npm:2.0.0"
checksum: 10c0/c6d27f3ed86cc5b601404822f31c900dd165ba63fff8152a3ef714e2012e7535027063bc67ded4cb5b3a49fa596495d46cacd9f47d6328459cf570f08b7d9e5a checksum: 10c0/0557548194cb9a809a435bf92bcfbc20c89e8b5eb38861b73ced36750437251e39a111fc3a18b98531be9dd91fe1411e4969f229dc579ec0251ce6c5d4900bbc
languageName: node languageName: node
linkType: hard linkType: hard
@ -8084,7 +8038,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"http-errors@npm:2.0.0": "http-errors@npm:2.0.0, http-errors@npm:^2.0.0":
version: 2.0.0 version: 2.0.0
resolution: "http-errors@npm:2.0.0" resolution: "http-errors@npm:2.0.0"
dependencies: dependencies:
@ -8133,16 +8087,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"iconv-lite@npm:0.4.24": "iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2, iconv-lite@npm:^0.6.3":
version: 0.4.24
resolution: "iconv-lite@npm:0.4.24"
dependencies:
safer-buffer: "npm:>= 2.1.2 < 3"
checksum: 10c0/c6886a24cc00f2a059767440ec1bc00d334a89f250db8e0f7feb4961c8727118457e27c495ba94d082e51d3baca378726cd110aaf7ded8b9bbfd6a44760cf1d4
languageName: node
linkType: hard
"iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2":
version: 0.6.3 version: 0.6.3
resolution: "iconv-lite@npm:0.6.3" resolution: "iconv-lite@npm:0.6.3"
dependencies: dependencies:
@ -8572,6 +8517,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"is-promise@npm:^4.0.0":
version: 4.0.0
resolution: "is-promise@npm:4.0.0"
checksum: 10c0/ebd5c672d73db781ab33ccb155fb9969d6028e37414d609b115cc534654c91ccd061821d5b987eefaa97cf4c62f0b909bb2f04db88306de26e91bfe8ddc01503
languageName: node
linkType: hard
"is-regex@npm:^1.2.1": "is-regex@npm:^1.2.1":
version: 1.2.1 version: 1.2.1
resolution: "is-regex@npm:1.2.1" resolution: "is-regex@npm:1.2.1"
@ -9368,10 +9320,10 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"media-typer@npm:0.3.0": "media-typer@npm:^1.1.0":
version: 0.3.0 version: 1.1.0
resolution: "media-typer@npm:0.3.0" resolution: "media-typer@npm:1.1.0"
checksum: 10c0/d160f31246907e79fed398470285f21bafb45a62869dc469b1c8877f3f064f5eabc4bcc122f9479b8b605bc5c76187d7871cf84c4ee3ecd3e487da1993279928 checksum: 10c0/7b4baa40b25964bb90e2121ee489ec38642127e48d0cc2b6baa442688d3fde6262bfdca86d6bbf6ba708784afcac168c06840c71facac70e390f5f759ac121b9
languageName: node languageName: node
linkType: hard linkType: hard
@ -9389,10 +9341,10 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"merge-descriptors@npm:1.0.3": "merge-descriptors@npm:^2.0.0":
version: 1.0.3 version: 2.0.0
resolution: "merge-descriptors@npm:1.0.3" resolution: "merge-descriptors@npm:2.0.0"
checksum: 10c0/866b7094afd9293b5ea5dcd82d71f80e51514bed33b4c4e9f516795dc366612a4cbb4dc94356e943a8a6914889a914530badff27f397191b9b75cda20b6bae93 checksum: 10c0/95389b7ced3f9b36fbdcf32eb946dc3dd1774c2fdf164609e55b18d03aa499b12bd3aae3a76c1c7185b96279e9803525550d3eb292b5224866060a288f335cb3
languageName: node languageName: node
linkType: hard linkType: hard
@ -9403,13 +9355,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"methods@npm:~1.1.2":
version: 1.1.2
resolution: "methods@npm:1.1.2"
checksum: 10c0/bdf7cc72ff0a33e3eede03708c08983c4d7a173f91348b4b1e4f47d4cdbf734433ad971e7d1e8c77247d9e5cd8adb81ea4c67b0a2db526b758b2233d7814b8b2
languageName: node
linkType: hard
"micromatch@npm:^4.0.5, micromatch@npm:^4.0.8": "micromatch@npm:^4.0.5, micromatch@npm:^4.0.8":
version: 4.0.8 version: 4.0.8
resolution: "micromatch@npm:4.0.8" resolution: "micromatch@npm:4.0.8"
@ -9427,7 +9372,14 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"mime-types@npm:^2.1.12, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": "mime-db@npm:^1.54.0":
version: 1.54.0
resolution: "mime-db@npm:1.54.0"
checksum: 10c0/8d907917bc2a90fa2df842cdf5dfeaf509adc15fe0531e07bb2f6ab15992416479015828d6a74200041c492e42cce3ebf78e5ce714388a0a538ea9c53eece284
languageName: node
linkType: hard
"mime-types@npm:^2.1.12":
version: 2.1.35 version: 2.1.35
resolution: "mime-types@npm:2.1.35" resolution: "mime-types@npm:2.1.35"
dependencies: dependencies:
@ -9436,12 +9388,12 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"mime@npm:1.6.0": "mime-types@npm:^3.0.0, mime-types@npm:^3.0.1":
version: 1.6.0 version: 3.0.1
resolution: "mime@npm:1.6.0" resolution: "mime-types@npm:3.0.1"
bin: dependencies:
mime: cli.js mime-db: "npm:^1.54.0"
checksum: 10c0/b92cd0adc44888c7135a185bfd0dddc42c32606401c72896a842ae15da71eb88858f17669af41e498b463cd7eb998f7b48939a25b08374c7924a9c8a6f8a81b0 checksum: 10c0/bd8c20d3694548089cf229016124f8f40e6a60bbb600161ae13e45f793a2d5bb40f96bbc61f275836696179c77c1d6bf4967b2a75e0a8ad40fe31f4ed5be4da5
languageName: node languageName: node
linkType: hard linkType: hard
@ -9600,14 +9552,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"ms@npm:2.0.0": "ms@npm:^2.1.1, ms@npm:^2.1.3":
version: 2.0.0
resolution: "ms@npm:2.0.0"
checksum: 10c0/f8fda810b39fd7255bbdc451c46286e549794fcc700dc9cd1d25658bbc4dc2563a5de6fe7c60f798a16a60c6ceb53f033cb353f493f0cf63e5199b702943159d
languageName: node
linkType: hard
"ms@npm:2.1.3, ms@npm:^2.1.1, ms@npm:^2.1.3":
version: 2.1.3 version: 2.1.3
resolution: "ms@npm:2.1.3" resolution: "ms@npm:2.1.3"
checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48
@ -9688,13 +9633,20 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"negotiator@npm:0.6.3, negotiator@npm:^0.6.3": "negotiator@npm:^0.6.3":
version: 0.6.3 version: 0.6.3
resolution: "negotiator@npm:0.6.3" resolution: "negotiator@npm:0.6.3"
checksum: 10c0/3ec9fd413e7bf071c937ae60d572bc67155262068ed522cf4b3be5edbe6ddf67d095ec03a3a14ebf8fc8e95f8e1d61be4869db0dbb0de696f6b837358bd43fc2 checksum: 10c0/3ec9fd413e7bf071c937ae60d572bc67155262068ed522cf4b3be5edbe6ddf67d095ec03a3a14ebf8fc8e95f8e1d61be4869db0dbb0de696f6b837358bd43fc2
languageName: node languageName: node
linkType: hard linkType: hard
"negotiator@npm:^1.0.0":
version: 1.0.0
resolution: "negotiator@npm:1.0.0"
checksum: 10c0/4c559dd52669ea48e1914f9d634227c561221dd54734070791f999c52ed0ff36e437b2e07d5c1f6e32909fc625fe46491c16e4a8f0572567d4dd15c3a4fda04b
languageName: node
linkType: hard
"no-case@npm:^3.0.4": "no-case@npm:^3.0.4":
version: 3.0.4 version: 3.0.4
resolution: "no-case@npm:3.0.4" resolution: "no-case@npm:3.0.4"
@ -9886,7 +9838,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"on-finished@npm:2.4.1": "on-finished@npm:^2.4.1":
version: 2.4.1 version: 2.4.1
resolution: "on-finished@npm:2.4.1" resolution: "on-finished@npm:2.4.1"
dependencies: dependencies:
@ -10046,7 +9998,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"parseurl@npm:~1.3.3": "parseurl@npm:^1.3.3":
version: 1.3.3 version: 1.3.3
resolution: "parseurl@npm:1.3.3" resolution: "parseurl@npm:1.3.3"
checksum: 10c0/90dd4760d6f6174adb9f20cf0965ae12e23879b5f5464f38e92fce8073354341e4b3b76fa3d878351efe7d01e617121955284cfd002ab087fba1a0726ec0b4f5 checksum: 10c0/90dd4760d6f6174adb9f20cf0965ae12e23879b5f5464f38e92fce8073354341e4b3b76fa3d878351efe7d01e617121955284cfd002ab087fba1a0726ec0b4f5
@ -10098,13 +10050,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"path-to-regexp@npm:0.1.12":
version: 0.1.12
resolution: "path-to-regexp@npm:0.1.12"
checksum: 10c0/1c6ff10ca169b773f3bba943bbc6a07182e332464704572962d277b900aeee81ac6aa5d060ff9e01149636c30b1f63af6e69dd7786ba6e0ddb39d4dee1f0645b
languageName: node
linkType: hard
"path-to-regexp@npm:^1.7.0": "path-to-regexp@npm:^1.7.0":
version: 1.8.0 version: 1.8.0
resolution: "path-to-regexp@npm:1.8.0" resolution: "path-to-regexp@npm:1.8.0"
@ -10121,6 +10066,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"path-to-regexp@npm:^8.0.0":
version: 8.2.0
resolution: "path-to-regexp@npm:8.2.0"
checksum: 10c0/ef7d0a887b603c0a142fad16ccebdcdc42910f0b14830517c724466ad676107476bba2fe9fffd28fd4c141391ccd42ea426f32bb44c2c82ecaefe10c37b90f5a
languageName: node
linkType: hard
"path-type@npm:^4.0.0": "path-type@npm:^4.0.0":
version: 4.0.0 version: 4.0.0
resolution: "path-type@npm:4.0.0" resolution: "path-type@npm:4.0.0"
@ -10906,7 +10858,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"proxy-addr@npm:~2.0.7": "proxy-addr@npm:^2.0.7":
version: 2.0.7 version: 2.0.7
resolution: "proxy-addr@npm:2.0.7" resolution: "proxy-addr@npm:2.0.7"
dependencies: dependencies:
@ -10956,12 +10908,12 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"qs@npm:6.13.0": "qs@npm:^6.14.0":
version: 6.13.0 version: 6.14.0
resolution: "qs@npm:6.13.0" resolution: "qs@npm:6.14.0"
dependencies: dependencies:
side-channel: "npm:^1.0.6" side-channel: "npm:^1.1.0"
checksum: 10c0/62372cdeec24dc83a9fb240b7533c0fdcf0c5f7e0b83343edd7310f0ab4c8205a5e7c56406531f2e47e1b4878a3821d652be4192c841de5b032ca83619d8f860 checksum: 10c0/8ea5d91bf34f440598ee389d4a7d95820e3b837d3fd9f433871f7924801becaa0cd3b3b4628d49a7784d06a8aea9bc4554d2b6d8d584e2d221dc06238a42909c
languageName: node languageName: node
linkType: hard linkType: hard
@ -10995,22 +10947,22 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"range-parser@npm:~1.2.1": "range-parser@npm:^1.2.1":
version: 1.2.1 version: 1.2.1
resolution: "range-parser@npm:1.2.1" resolution: "range-parser@npm:1.2.1"
checksum: 10c0/96c032ac2475c8027b7a4e9fe22dc0dfe0f6d90b85e496e0f016fbdb99d6d066de0112e680805075bd989905e2123b3b3d002765149294dce0c1f7f01fcc2ea0 checksum: 10c0/96c032ac2475c8027b7a4e9fe22dc0dfe0f6d90b85e496e0f016fbdb99d6d066de0112e680805075bd989905e2123b3b3d002765149294dce0c1f7f01fcc2ea0
languageName: node languageName: node
linkType: hard linkType: hard
"raw-body@npm:2.5.2": "raw-body@npm:^3.0.0":
version: 2.5.2 version: 3.0.0
resolution: "raw-body@npm:2.5.2" resolution: "raw-body@npm:3.0.0"
dependencies: dependencies:
bytes: "npm:3.1.2" bytes: "npm:3.1.2"
http-errors: "npm:2.0.0" http-errors: "npm:2.0.0"
iconv-lite: "npm:0.4.24" iconv-lite: "npm:0.6.3"
unpipe: "npm:1.0.0" unpipe: "npm:1.0.0"
checksum: 10c0/b201c4b66049369a60e766318caff5cb3cc5a900efd89bdac431463822d976ad0670912c931fdbdcf5543207daf6f6833bca57aa116e1661d2ea91e12ca692c4 checksum: 10c0/f8daf4b724064a4811d118745a781ca0fb4676298b8adadfd6591155549cfea0a067523cf7dd3baeb1265fecc9ce5dfb2fc788c12c66b85202a336593ece0f87
languageName: node languageName: node
linkType: hard linkType: hard
@ -11920,6 +11872,19 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"router@npm:^2.2.0":
version: 2.2.0
resolution: "router@npm:2.2.0"
dependencies:
debug: "npm:^4.4.0"
depd: "npm:^2.0.0"
is-promise: "npm:^4.0.0"
parseurl: "npm:^1.3.3"
path-to-regexp: "npm:^8.0.0"
checksum: 10c0/3279de7450c8eae2f6e095e9edacbdeec0abb5cb7249c6e719faa0db2dba43574b4fff5892d9220631c9abaff52dd3cad648cfea2aaace845e1a071915ac8867
languageName: node
linkType: hard
"rrweb-cssom@npm:^0.8.0": "rrweb-cssom@npm:^0.8.0":
version: 0.8.0 version: 0.8.0
resolution: "rrweb-cssom@npm:0.8.0" resolution: "rrweb-cssom@npm:0.8.0"
@ -11984,7 +11949,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": "safer-buffer@npm:>= 2.1.2 < 3.0.0":
version: 2.1.2 version: 2.1.2
resolution: "safer-buffer@npm:2.1.2" resolution: "safer-buffer@npm:2.1.2"
checksum: 10c0/7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 checksum: 10c0/7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4
@ -12068,24 +12033,22 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"send@npm:0.19.0": "send@npm:^1.1.0, send@npm:^1.2.0":
version: 0.19.0 version: 1.2.0
resolution: "send@npm:0.19.0" resolution: "send@npm:1.2.0"
dependencies: dependencies:
debug: "npm:2.6.9" debug: "npm:^4.3.5"
depd: "npm:2.0.0" encodeurl: "npm:^2.0.0"
destroy: "npm:1.2.0" escape-html: "npm:^1.0.3"
encodeurl: "npm:~1.0.2" etag: "npm:^1.8.1"
escape-html: "npm:~1.0.3" fresh: "npm:^2.0.0"
etag: "npm:~1.8.1" http-errors: "npm:^2.0.0"
fresh: "npm:0.5.2" mime-types: "npm:^3.0.1"
http-errors: "npm:2.0.0" ms: "npm:^2.1.3"
mime: "npm:1.6.0" on-finished: "npm:^2.4.1"
ms: "npm:2.1.3" range-parser: "npm:^1.2.1"
on-finished: "npm:2.4.1" statuses: "npm:^2.0.1"
range-parser: "npm:~1.2.1" checksum: 10c0/531bcfb5616948d3468d95a1fd0adaeb0c20818ba4a500f439b800ca2117971489e02074ce32796fd64a6772ea3e7235fe0583d8241dbd37a053dc3378eff9a5
statuses: "npm:2.0.1"
checksum: 10c0/ea3f8a67a8f0be3d6bf9080f0baed6d2c51d11d4f7b4470de96a5029c598a7011c497511ccc28968b70ef05508675cebff27da9151dd2ceadd60be4e6cf845e3
languageName: node languageName: node
linkType: hard linkType: hard
@ -12098,15 +12061,15 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"serve-static@npm:1.16.2": "serve-static@npm:^2.2.0":
version: 1.16.2 version: 2.2.0
resolution: "serve-static@npm:1.16.2" resolution: "serve-static@npm:2.2.0"
dependencies: dependencies:
encodeurl: "npm:~2.0.0" encodeurl: "npm:^2.0.0"
escape-html: "npm:~1.0.3" escape-html: "npm:^1.0.3"
parseurl: "npm:~1.3.3" parseurl: "npm:^1.3.3"
send: "npm:0.19.0" send: "npm:^1.2.0"
checksum: 10c0/528fff6f5e12d0c5a391229ad893910709bc51b5705962b09404a1d813857578149b8815f35d3ee5752f44cd378d0f31669d4b1d7e2d11f41e08283d5134bd1f checksum: 10c0/30e2ed1dbff1984836cfd0c65abf5d3f3f83bcd696c99d2d3c97edbd4e2a3ff4d3f87108a7d713640d290a7b6fe6c15ddcbc61165ab2eaad48ea8d3b52c7f913
languageName: node languageName: node
linkType: hard linkType: hard
@ -12212,7 +12175,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"side-channel@npm:^1.0.6, side-channel@npm:^1.1.0": "side-channel@npm:^1.1.0":
version: 1.1.0 version: 1.1.0
resolution: "side-channel@npm:1.1.0" resolution: "side-channel@npm:1.1.0"
dependencies: dependencies:
@ -13371,13 +13334,14 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"type-is@npm:~1.6.18": "type-is@npm:^2.0.0, type-is@npm:^2.0.1":
version: 1.6.18 version: 2.0.1
resolution: "type-is@npm:1.6.18" resolution: "type-is@npm:2.0.1"
dependencies: dependencies:
media-typer: "npm:0.3.0" content-type: "npm:^1.0.5"
mime-types: "npm:~2.1.24" media-typer: "npm:^1.1.0"
checksum: 10c0/a23daeb538591b7efbd61ecf06b6feb2501b683ffdc9a19c74ef5baba362b4347e42f1b4ed81f5882a8c96a3bfff7f93ce3ffaf0cbbc879b532b04c97a55db9d mime-types: "npm:^3.0.0"
checksum: 10c0/7f7ec0a060b16880bdad36824ab37c26019454b67d73e8a465ed5a3587440fbe158bc765f0da68344498235c877e7dbbb1600beccc94628ed05599d667951b99
languageName: node languageName: node
linkType: hard linkType: hard
@ -13602,7 +13566,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"unpipe@npm:1.0.0, unpipe@npm:~1.0.0": "unpipe@npm:1.0.0":
version: 1.0.0 version: 1.0.0
resolution: "unpipe@npm:1.0.0" resolution: "unpipe@npm:1.0.0"
checksum: 10c0/193400255bd48968e5c5383730344fbb4fa114cdedfab26e329e50dd2d81b134244bb8a72c6ac1b10ab0281a58b363d06405632c9d49ca9dfd5e90cbd7d0f32c checksum: 10c0/193400255bd48968e5c5383730344fbb4fa114cdedfab26e329e50dd2d81b134244bb8a72c6ac1b10ab0281a58b363d06405632c9d49ca9dfd5e90cbd7d0f32c
@ -13783,13 +13747,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"utils-merge@npm:1.0.1":
version: 1.0.1
resolution: "utils-merge@npm:1.0.1"
checksum: 10c0/02ba649de1b7ca8854bfe20a82f1dfbdda3fb57a22ab4a8972a63a34553cf7aa51bc9081cf7e001b035b88186d23689d69e71b510e610a09a4c66f68aa95b672
languageName: node
linkType: hard
"uuid@npm:^11.0.0": "uuid@npm:^11.0.0":
version: 11.1.0 version: 11.1.0
resolution: "uuid@npm:11.1.0" resolution: "uuid@npm:11.1.0"
@ -13806,7 +13763,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"vary@npm:^1, vary@npm:~1.1.2": "vary@npm:^1, vary@npm:^1.1.2":
version: 1.1.2 version: 1.1.2
resolution: "vary@npm:1.1.2" resolution: "vary@npm:1.1.2"
checksum: 10c0/f15d588d79f3675135ba783c91a4083dcd290a2a5be9fcb6514220a1634e23df116847b1cc51f66bfb0644cf9353b2abb7815ae499bab06e46dd33c1a6bf1f4f checksum: 10c0/f15d588d79f3675135ba783c91a4083dcd290a2a5be9fcb6514220a1634e23df116847b1cc51f66bfb0644cf9353b2abb7815ae499bab06e46dd33c1a6bf1f4f