Merge commit 'fa8e972722fb8fc056aa348dddaee4005b4a8ac4' into glitch-soc/merge-upstream

pull/2770/head
Claire 2024-07-08 19:41:14 +02:00
commit 6a55232988
100 changed files with 682 additions and 387 deletions

View File

@ -1,8 +1,10 @@
name: Bundler Audit name: Bundler Audit
on: on:
merge_group:
push: push:
branches-ignore: branches:
- 'dependabot/**' - 'main'
- 'stable-*'
paths: paths:
- 'Gemfile*' - 'Gemfile*'
- '.ruby-version' - '.ruby-version'

View File

@ -2,9 +2,13 @@ name: Check i18n
on: on:
push: push:
branches: [main] branches:
- 'main'
- 'stable-*'
pull_request: pull_request:
branches: [main] branches:
- 'main'
- 'stable-*'
env: env:
RAILS_ENV: test RAILS_ENV: test

View File

@ -1,11 +1,15 @@
name: 'CodeQL' name: 'CodeQL'
on: on:
merge_group:
push: push:
branches: ['main'] branches:
- 'main'
- 'stable-*'
pull_request: pull_request:
# The branches below must be a subset of the branches above branches:
branches: ['main'] - 'main'
- 'stable-*'
schedule: schedule:
- cron: '22 6 * * 1' - cron: '22 6 * * 1'

View File

@ -1,9 +1,11 @@
name: Crowdin / Upload translations name: Crowdin / Upload translations
on: on:
merge_group:
push: push:
branches: branches:
- main - 'main'
- 'stable-*'
paths: paths:
- crowdin-glitch.yml - crowdin-glitch.yml
- app/javascript/flavours/glitch/locales/en.json - app/javascript/flavours/glitch/locales/en.json

View File

@ -1,6 +1,10 @@
name: Check formatting name: Check formatting
on: on:
merge_group:
push: push:
branches:
- 'main'
- 'stable-*'
pull_request: pull_request:
jobs: jobs:

View File

@ -1,9 +1,10 @@
name: CSS Linting name: CSS Linting
on: on:
merge_group:
push: push:
branches-ignore: branches:
- 'dependabot/**' - 'main'
- 'renovate/**' - 'stable-*'
paths: paths:
- 'package.json' - 'package.json'
- 'yarn.lock' - 'yarn.lock'

View File

@ -1,9 +1,10 @@
name: Haml Linting name: Haml Linting
on: on:
merge_group:
push: push:
branches-ignore: branches:
- 'dependabot/**' - 'main'
- 'renovate/**' - 'stable-*'
paths: paths:
- '.github/workflows/haml-lint-problem-matcher.json' - '.github/workflows/haml-lint-problem-matcher.json'
- '.github/workflows/lint-haml.yml' - '.github/workflows/lint-haml.yml'

View File

@ -1,9 +1,10 @@
name: JavaScript Linting name: JavaScript Linting
on: on:
merge_group:
push: push:
branches-ignore: branches:
- 'dependabot/**' - 'main'
- 'renovate/**' - 'stable-*'
paths: paths:
- 'package.json' - 'package.json'
- 'yarn.lock' - 'yarn.lock'

View File

@ -1,9 +1,10 @@
name: Ruby Linting name: Ruby Linting
on: on:
merge_group:
push: push:
branches-ignore: branches:
- 'dependabot/**' - 'main'
- 'renovate/**' - 'stable-*'
paths: paths:
- 'Gemfile*' - 'Gemfile*'
- '.rubocop*.yml' - '.rubocop*.yml'

View File

@ -1,9 +1,10 @@
name: JavaScript Testing name: JavaScript Testing
on: on:
merge_group:
push: push:
branches-ignore: branches:
- 'dependabot/**' - 'main'
- 'renovate/**' - 'stable-*'
paths: paths:
- 'package.json' - 'package.json'
- 'yarn.lock' - 'yarn.lock'

View File

@ -1,29 +1,29 @@
name: Historical data migration test name: Historical data migration test
on: on:
merge_group:
push: push:
branches-ignore: branches:
- 'dependabot/**' - 'main'
- 'renovate/**' - 'stable-*'
paths:
- 'Gemfile*'
- '.ruby-version'
- '**/*.rb'
- '.github/workflows/test-migrations.yml'
- 'lib/tasks/tests.rake'
pull_request: pull_request:
paths:
- 'Gemfile*'
- '.ruby-version'
- '**/*.rb'
- '.github/workflows/test-migrations.yml'
- 'lib/tasks/tests.rake'
jobs: jobs:
pre_job:
runs-on: ubuntu-latest
outputs:
should_skip: ${{ steps.skip_check.outputs.should_skip }}
steps:
- id: skip_check
uses: fkirc/skip-duplicate-actions@v5
with:
paths: '["Gemfile*", ".ruby-version", "**/*.rb", ".github/workflows/test-migrations.yml", "lib/tasks/tests.rake"]'
test: test:
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: pre_job
if: needs.pre_job.outputs.should_skip != 'true'
strategy: strategy:
fail-fast: false fail-fast: false

View File

@ -1,10 +1,11 @@
name: Ruby Testing name: Ruby Testing
on: on:
merge_group:
push: push:
branches-ignore: branches:
- 'dependabot/**' - 'main'
- 'renovate/**' - 'stable-*'
pull_request: pull_request:
env: env:
@ -223,7 +224,7 @@ jobs:
- name: Load database schema - name: Load database schema
run: './bin/rails db:create db:schema:load db:seed' run: './bin/rails db:create db:schema:load db:seed'
- run: bin/rspec --tag paperclip_processing - run: bin/rspec --tag attachment_processing
- name: Upload coverage reports to Codecov - name: Upload coverage reports to Codecov
if: matrix.ruby-version == '.ruby-version' if: matrix.ruby-version == '.ruby-version'

View File

@ -346,7 +346,7 @@ GEM
activesupport (>= 3.0) activesupport (>= 3.0)
nokogiri (>= 1.6) nokogiri (>= 1.6)
io-console (0.7.2) io-console (0.7.2)
irb (1.13.2) irb (1.14.0)
rdoc (>= 4.0.0) rdoc (>= 4.0.0)
reline (>= 0.4.2) reline (>= 0.4.2)
jmespath (1.6.2) jmespath (1.6.2)

View File

@ -281,7 +281,7 @@ export function submitComposeFail(error) {
export function uploadCompose(files) { export function uploadCompose(files) {
return function (dispatch, getState) { return function (dispatch, getState) {
const uploadLimit = 4; const uploadLimit = getState().getIn(['server', 'server', 'configuration', 'statuses', 'max_media_attachments']);
const media = getState().getIn(['compose', 'media_attachments']); const media = getState().getIn(['compose', 'media_attachments']);
const pending = getState().getIn(['compose', 'pending_media_attachments']); const pending = getState().getIn(['compose', 'pending_media_attachments']);
const progress = new Array(files.length).fill(0); const progress = new Array(files.length).fill(0);
@ -301,7 +301,7 @@ export function uploadCompose(files) {
dispatch(uploadComposeRequest()); dispatch(uploadComposeRequest());
for (const [i, file] of Array.from(files).entries()) { for (const [i, file] of Array.from(files).entries()) {
if (media.size + i > 3) break; if (media.size + i > (uploadLimit - 1)) break;
const data = new FormData(); const data = new FormData();
data.append('file', file); data.append('file', file);

View File

@ -131,7 +131,7 @@ const Account = ({ size = 46, account, onFollow, onBlock, onMute, onMuteNotifica
return ( return (
<div className={classNames('account', { 'account--minimal': minimal })}> <div className={classNames('account', { 'account--minimal': minimal })}>
<div className='account__wrapper'> <div className='account__wrapper'>
<Link key={account.get('id')} className='account__display-name' title={account.get('acct')} to={`/@${account.get('acct')}`}> <Link key={account.get('id')} className='account__display-name' title={account.get('acct')} to={`/@${account.get('acct')}`} data-hover-card-account={account.get('id')}>
<div className='account__avatar-wrapper'> <div className='account__avatar-wrapper'>
<Avatar account={account} size={size} /> <Avatar account={account} size={size} />
</div> </div>

View File

@ -43,6 +43,7 @@ export const HoverCardController: React.FC = () => {
useEffect(() => { useEffect(() => {
let isScrolling = false; let isScrolling = false;
let currentAnchor: HTMLElement | null = null; let currentAnchor: HTMLElement | null = null;
let currentTitle: string | null = null;
const open = (target: HTMLElement) => { const open = (target: HTMLElement) => {
target.setAttribute('aria-describedby', 'hover-card'); target.setAttribute('aria-describedby', 'hover-card');
@ -75,6 +76,9 @@ export const HoverCardController: React.FC = () => {
currentAnchor?.removeAttribute('aria-describedby'); currentAnchor?.removeAttribute('aria-describedby');
currentAnchor = target; currentAnchor = target;
currentTitle = target.getAttribute('title');
target.removeAttribute('title');
setEnterTimeout(() => { setEnterTimeout(() => {
open(target); open(target);
}, enterDelay); }, enterDelay);
@ -90,11 +94,20 @@ export const HoverCardController: React.FC = () => {
}; };
const handleMouseLeave = (e: MouseEvent) => { const handleMouseLeave = (e: MouseEvent) => {
const { target } = e;
if (!currentAnchor) { if (!currentAnchor) {
return; return;
} }
if (e.target === currentAnchor || e.target === cardRef.current) { if (
currentTitle &&
target instanceof HTMLElement &&
target === currentAnchor
)
target.setAttribute('title', currentTitle);
if (target === currentAnchor || target === cardRef.current) {
cancelEnterTimeout(); cancelEnterTimeout();
setLeaveTimeout(() => { setLeaveTimeout(() => {

View File

@ -305,13 +305,13 @@ class MediaGallery extends PureComponent {
style.aspectRatio = '3 / 2'; style.aspectRatio = '3 / 2';
} }
const size = media.take(4).size; const size = media.size;
const uncached = media.every(attachment => attachment.get('type') === 'unknown'); const uncached = media.every(attachment => attachment.get('type') === 'unknown');
if (this.isFullSizeEligible()) { if (this.isFullSizeEligible()) {
children = <Item standalone autoplay={autoplay} onClick={this.handleClick} attachment={media.get(0)} lang={lang} displayWidth={width} visible={visible} />; children = <Item standalone autoplay={autoplay} onClick={this.handleClick} attachment={media.get(0)} lang={lang} displayWidth={width} visible={visible} />;
} else { } else {
children = media.take(4).map((attachment, i) => <Item key={attachment.get('id')} autoplay={autoplay} onClick={this.handleClick} attachment={attachment} index={i} lang={lang} size={size} displayWidth={width} visible={visible || uncached} />); children = media.map((attachment, i) => <Item key={attachment.get('id')} autoplay={autoplay} onClick={this.handleClick} attachment={attachment} index={i} lang={lang} size={size} displayWidth={width} visible={visible || uncached} />);
} }
if (uncached) { if (uncached) {

View File

@ -9,7 +9,7 @@ const mapStateToProps = state => {
const readyAttachmentsSize = state.getIn(['compose', 'media_attachments']).size ?? 0; const readyAttachmentsSize = state.getIn(['compose', 'media_attachments']).size ?? 0;
const pendingAttachmentsSize = state.getIn(['compose', 'pending_media_attachments']).size ?? 0; const pendingAttachmentsSize = state.getIn(['compose', 'pending_media_attachments']).size ?? 0;
const attachmentsSize = readyAttachmentsSize + pendingAttachmentsSize; const attachmentsSize = readyAttachmentsSize + pendingAttachmentsSize;
const isOverLimit = attachmentsSize > 3; const isOverLimit = attachmentsSize > state.getIn(['server', 'server', 'configuration', 'statuses', 'max_media_attachments'])-1;
const hasVideoOrAudio = state.getIn(['compose', 'media_attachments']).some(m => ['video', 'audio'].includes(m.get('type'))); const hasVideoOrAudio = state.getIn(['compose', 'media_attachments']).some(m => ['video', 'audio'].includes(m.get('type')));
return { return {

View File

@ -35,7 +35,9 @@
"account.follow_back": "Последване взаимно", "account.follow_back": "Последване взаимно",
"account.followers": "Последователи", "account.followers": "Последователи",
"account.followers.empty": "Още никой не следва потребителя.", "account.followers.empty": "Още никой не следва потребителя.",
"account.followers_counter": "{count, plural, one {{counter} последовател} other {{counter} последователи}}",
"account.following": "Последвано", "account.following": "Последвано",
"account.following_counter": "{count, plural, one {{counter} последван} other {{counter} последвани}}",
"account.follows.empty": "Потребителят още никого не следва.", "account.follows.empty": "Потребителят още никого не следва.",
"account.go_to_profile": "Към профила", "account.go_to_profile": "Към профила",
"account.hide_reblogs": "Скриване на подсилвания от @{name}", "account.hide_reblogs": "Скриване на подсилвания от @{name}",
@ -61,6 +63,7 @@
"account.requested_follow": "{name} поиска да ви последва", "account.requested_follow": "{name} поиска да ви последва",
"account.share": "Споделяне на профила на @{name}", "account.share": "Споделяне на профила на @{name}",
"account.show_reblogs": "Показване на подсилвания от @{name}", "account.show_reblogs": "Показване на подсилвания от @{name}",
"account.statuses_counter": "{count, plural, one {{counter} публикация} other {{counter} публикации}}",
"account.unblock": "Отблокиране на @{name}", "account.unblock": "Отблокиране на @{name}",
"account.unblock_domain": "Отблокиране на домейн {domain}", "account.unblock_domain": "Отблокиране на домейн {domain}",
"account.unblock_short": "Отблокиране", "account.unblock_short": "Отблокиране",

View File

@ -692,9 +692,11 @@
"server_banner.about_active_users": "過去30日間にこのサーバーを使用している人 (月間アクティブユーザー)", "server_banner.about_active_users": "過去30日間にこのサーバーを使用している人 (月間アクティブユーザー)",
"server_banner.active_users": "人のアクティブユーザー", "server_banner.active_users": "人のアクティブユーザー",
"server_banner.administered_by": "管理者", "server_banner.administered_by": "管理者",
"server_banner.is_one_of_many": "{domain} は、数々の独立したMastodonサーバーのうちのひとつです。サーバーに登録してFediverseのコミュニティに加わってみませんか。",
"server_banner.server_stats": "サーバーの情報", "server_banner.server_stats": "サーバーの情報",
"sign_in_banner.create_account": "アカウント作成", "sign_in_banner.create_account": "アカウント作成",
"sign_in_banner.follow_anyone": "連合内の誰でもフォローして投稿を時系列で見ることができます。アルゴリズム、広告、クリックベイトはありません。", "sign_in_banner.follow_anyone": "連合内の誰でもフォローして投稿を時系列で見ることができます。アルゴリズム、広告、クリックベイトはありません。",
"sign_in_banner.mastodon_is": "Mastodonに参加して、世界で起きていることを見つけよう。",
"sign_in_banner.sign_in": "ログイン", "sign_in_banner.sign_in": "ログイン",
"sign_in_banner.sso_redirect": "ログインまたは登録", "sign_in_banner.sso_redirect": "ログインまたは登録",
"status.admin_account": "@{name}さんのモデレーション画面を開く", "status.admin_account": "@{name}さんのモデレーション画面を開く",

View File

@ -1,6 +1,10 @@
{ {
"about.blocks": "Ulac agbur",
"about.contact": "Anermis:", "about.contact": "Anermis:",
"about.disclaimer": "Mastodon d aseɣẓan ilelli, d aseɣẓan n uɣbalu yeldin, d tnezzut n Mastodon gGmbH.", "about.disclaimer": "Mastodon d aseɣẓan ilelli, d aseɣẓan n uɣbalu yeldin, d tnezzut n Mastodon gGmbH.",
"about.domain_blocks.preamble": "Maṣṭudun s umata yeḍmen-ak ad teẓreḍ agbur, ad tesdemreḍ akked yimseqdacen-nniḍen seg yal aqeddac deg fedivers. Ha-tent-an ɣur-k tsuraf i yellan deg uqeddac-agi.",
"about.domain_blocks.silenced.title": "Ɣur-s talast",
"about.domain_blocks.suspended.title": "Yeḥbes",
"about.not_available": "Talɣut-a ur tettwabder ara deg uqeddac-a.", "about.not_available": "Talɣut-a ur tettwabder ara deg uqeddac-a.",
"about.powered_by": "Azeṭṭa inmetti yettwasɣelsen sɣur {mastodon}", "about.powered_by": "Azeṭṭa inmetti yettwasɣelsen sɣur {mastodon}",
"about.rules": "Ilugan n uqeddac", "about.rules": "Ilugan n uqeddac",
@ -166,6 +170,7 @@
"dismissable_banner.explore_tags": "D wiyi i d ihacṭagen i d-yettawin tamyigawt deg web anmetti ass-a. Ihacṭagen i sseqdacen ugar n medden, εlayit d imezwura.", "dismissable_banner.explore_tags": "D wiyi i d ihacṭagen i d-yettawin tamyigawt deg web anmetti ass-a. Ihacṭagen i sseqdacen ugar n medden, εlayit d imezwura.",
"domain_block_modal.block": "Sewḥel aqeddac", "domain_block_modal.block": "Sewḥel aqeddac",
"domain_block_modal.they_cant_follow": "Yiwen ur yezmir ad k·m-id-yeḍfer seg uqeddac-a.", "domain_block_modal.they_cant_follow": "Yiwen ur yezmir ad k·m-id-yeḍfer seg uqeddac-a.",
"domain_block_modal.title": "Sewḥel taɣult?",
"domain_pill.activitypub_like_language": "ActivityPub am tutlayt yettmeslay Mastodon d izeḍwan inmettiyen nniḍen.", "domain_pill.activitypub_like_language": "ActivityPub am tutlayt yettmeslay Mastodon d izeḍwan inmettiyen nniḍen.",
"domain_pill.server": "Aqeddac", "domain_pill.server": "Aqeddac",
"domain_pill.username": "Isem n useqdac", "domain_pill.username": "Isem n useqdac",
@ -214,6 +219,7 @@
"filter_modal.added.review_and_configure_title": "Iɣewwaṛen n imzizdig", "filter_modal.added.review_and_configure_title": "Iɣewwaṛen n imzizdig",
"filter_modal.added.settings_link": "asebter n yiɣewwaṛen", "filter_modal.added.settings_link": "asebter n yiɣewwaṛen",
"filter_modal.added.short_explanation": "Tasuffeɣt-a tettwarna ɣer taggayt-a n yimsizdegen: {title}.", "filter_modal.added.short_explanation": "Tasuffeɣt-a tettwarna ɣer taggayt-a n yimsizdegen: {title}.",
"filter_modal.added.title": "Yettwarna umsizdeg!",
"filter_modal.select_filter.expired": "yemmut", "filter_modal.select_filter.expired": "yemmut",
"filter_modal.select_filter.prompt_new": "Taggayt tamaynutt : {name}", "filter_modal.select_filter.prompt_new": "Taggayt tamaynutt : {name}",
"filter_modal.select_filter.search": "Nadi neɣ snulfu-d", "filter_modal.select_filter.search": "Nadi neɣ snulfu-d",
@ -224,9 +230,9 @@
"firehose.remote": "Iqeddacen nniḍen", "firehose.remote": "Iqeddacen nniḍen",
"follow_request.authorize": "Ssireg", "follow_request.authorize": "Ssireg",
"follow_request.reject": "Agi", "follow_request.reject": "Agi",
"follow_suggestions.dismiss": "Ur ttɛawad ara ad t-id-sekneṭ", "follow_suggestions.dismiss": "Dayen ur t-id-skan ara",
"follow_suggestions.view_all": "Wali-ten akk", "follow_suggestions.view_all": "Wali-ten akk",
"follow_suggestions.who_to_follow": "Menhu ara ḍefṛeḍ", "follow_suggestions.who_to_follow": "Ad tḍefreḍ?",
"followed_tags": "Ihacṭagen yettwaḍfaren", "followed_tags": "Ihacṭagen yettwaḍfaren",
"footer.about": "Ɣef", "footer.about": "Ɣef",
"footer.directory": "Akaram n imeɣna", "footer.directory": "Akaram n imeɣna",
@ -235,6 +241,7 @@
"footer.keyboard_shortcuts": "Inegzumen n unasiw", "footer.keyboard_shortcuts": "Inegzumen n unasiw",
"footer.privacy_policy": "Tasertit tabaḍnit", "footer.privacy_policy": "Tasertit tabaḍnit",
"footer.source_code": "Wali tangalt taɣbalut", "footer.source_code": "Wali tangalt taɣbalut",
"footer.status": "N tsuffeɣt",
"generic.saved": "Yettwasekles", "generic.saved": "Yettwasekles",
"getting_started.heading": "Bdu", "getting_started.heading": "Bdu",
"hashtag.column_header.tag_mode.all": "d {additional}", "hashtag.column_header.tag_mode.all": "d {additional}",
@ -313,11 +320,14 @@
"lightbox.previous": "Ɣer deffir", "lightbox.previous": "Ɣer deffir",
"limited_account_hint.action": "Wali amaɣnu akken yebɣu yili", "limited_account_hint.action": "Wali amaɣnu akken yebɣu yili",
"link_preview.author": "S-ɣur {name}", "link_preview.author": "S-ɣur {name}",
"link_preview.more_from_author": "Ugar sɣur {name}",
"link_preview.shares": "{count, plural, one {{counter} post} other {{counter} posts}}",
"lists.account.add": "Rnu ɣer tebdart", "lists.account.add": "Rnu ɣer tebdart",
"lists.account.remove": "Kkes seg tebdart", "lists.account.remove": "Kkes seg tebdart",
"lists.delete": "Kkes tabdart", "lists.delete": "Kkes tabdart",
"lists.edit": "Ẓreg tabdart", "lists.edit": "Ẓreg tabdart",
"lists.edit.submit": "Beddel azwel", "lists.edit.submit": "Beddel azwel",
"lists.exclusive": "Ffer tisuffaɣ-a seg ugejdan",
"lists.new.create": "Rnu tabdart", "lists.new.create": "Rnu tabdart",
"lists.new.title_placeholder": "Azwel amaynut n tebdart", "lists.new.title_placeholder": "Azwel amaynut n tebdart",
"lists.replies_policy.followed": "Kra n useqdac i yettwaḍefren", "lists.replies_policy.followed": "Kra n useqdac i yettwaḍefren",
@ -338,6 +348,7 @@
"navigation_bar.bookmarks": "Ticraḍ", "navigation_bar.bookmarks": "Ticraḍ",
"navigation_bar.community_timeline": "Tasuddemt tadigant", "navigation_bar.community_timeline": "Tasuddemt tadigant",
"navigation_bar.compose": "Aru tajewwiqt tamaynut", "navigation_bar.compose": "Aru tajewwiqt tamaynut",
"navigation_bar.direct": "Tibdarin tusligin",
"navigation_bar.discover": "Ẓer", "navigation_bar.discover": "Ẓer",
"navigation_bar.domain_blocks": "Tiɣula yeffren", "navigation_bar.domain_blocks": "Tiɣula yeffren",
"navigation_bar.explore": "Snirem", "navigation_bar.explore": "Snirem",
@ -357,9 +368,14 @@
"navigation_bar.search": "Nadi", "navigation_bar.search": "Nadi",
"navigation_bar.security": "Taɣellist", "navigation_bar.security": "Taɣellist",
"not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.",
"notification.admin.report": "Yemla-t-id {name} {target}",
"notification.admin.sign_up": "Ijerred {name}",
"notification.favourite": "{name} yesmenyaf addad-ik·im",
"notification.follow": "iṭṭafar-ik·em-id {name}", "notification.follow": "iṭṭafar-ik·em-id {name}",
"notification.follow_request": "{name} yessuter-d ad k·m-yeḍfeṛ", "notification.follow_request": "{name} yessuter-d ad k·m-yeḍfeṛ",
"notification.mention": "{name} yebder-ik-id", "notification.mention": "{name} yebder-ik-id",
"notification.moderation-warning.learn_more": "Issin ugar",
"notification.moderation_warning.action_suspend": "Yettwaseḥbes umiḍan-ik.",
"notification.own_poll": "Tafrant-ik·im tfuk", "notification.own_poll": "Tafrant-ik·im tfuk",
"notification.poll": "Tfukk tefrant ideg tettekkaḍ", "notification.poll": "Tfukk tefrant ideg tettekkaḍ",
"notification.reblog": "{name} yebḍa tajewwiqt-ik i tikelt-nniḍen", "notification.reblog": "{name} yebḍa tajewwiqt-ik i tikelt-nniḍen",
@ -370,6 +386,7 @@
"notification_requests.notifications_from": "Ilɣa sɣur {name}", "notification_requests.notifications_from": "Ilɣa sɣur {name}",
"notifications.clear": "Sfeḍ tilɣa", "notifications.clear": "Sfeḍ tilɣa",
"notifications.clear_confirmation": "Tebɣiḍ s tidet ad tekkseḍ akk tilɣa-inek·em i lebda?", "notifications.clear_confirmation": "Tebɣiḍ s tidet ad tekkseḍ akk tilɣa-inek·em i lebda?",
"notifications.column_settings.admin.report": "Ineqqisen imaynuten:",
"notifications.column_settings.alert": "Tilɣa n tnarit", "notifications.column_settings.alert": "Tilɣa n tnarit",
"notifications.column_settings.favourite": "Imenyafen:", "notifications.column_settings.favourite": "Imenyafen:",
"notifications.column_settings.filter_bar.advanced": "Sken-d akk taggayin", "notifications.column_settings.filter_bar.advanced": "Sken-d akk taggayin",
@ -384,6 +401,7 @@
"notifications.column_settings.sound": "Rmed imesli", "notifications.column_settings.sound": "Rmed imesli",
"notifications.column_settings.status": "Tisuffaɣ timaynutin :", "notifications.column_settings.status": "Tisuffaɣ timaynutin :",
"notifications.column_settings.unread_notifications.category": "Ilɣa ur nettwaɣra", "notifications.column_settings.unread_notifications.category": "Ilɣa ur nettwaɣra",
"notifications.column_settings.update": "Iẓreg:",
"notifications.filter.all": "Akk", "notifications.filter.all": "Akk",
"notifications.filter.boosts": "Seǧhed", "notifications.filter.boosts": "Seǧhed",
"notifications.filter.favourites": "Imenyafen", "notifications.filter.favourites": "Imenyafen",
@ -413,6 +431,7 @@
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!", "onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Ttwassnen deg Mastodon", "onboarding.follows.title": "Ttwassnen deg Mastodon",
"onboarding.profile.display_name": "Isem ara d-yettwaskanen", "onboarding.profile.display_name": "Isem ara d-yettwaskanen",
"onboarding.profile.display_name_hint": "Isem-ik·im ummid neɣ isem-ik·im n uqeṣṣer…",
"onboarding.profile.note": "Tameddurt", "onboarding.profile.note": "Tameddurt",
"onboarding.profile.note_hint": "Tzemreḍ ad d-@tbedreḍ imdanen niḍen neɣ #ihacṭagen …", "onboarding.profile.note_hint": "Tzemreḍ ad d-@tbedreḍ imdanen niḍen neɣ #ihacṭagen …",
"onboarding.profile.save_and_continue": "Sekles, tkemmleḍ", "onboarding.profile.save_and_continue": "Sekles, tkemmleḍ",
@ -441,6 +460,7 @@
"poll.total_votes": "{count, plural, one {# n udɣaṛ} other {# n yedɣaṛen}}", "poll.total_votes": "{count, plural, one {# n udɣaṛ} other {# n yedɣaṛen}}",
"poll.vote": "Dɣeṛ", "poll.vote": "Dɣeṛ",
"poll.voted": "Tdeɣṛeḍ ɣef tririt-ayi", "poll.voted": "Tdeɣṛeḍ ɣef tririt-ayi",
"poll.votes": "{votes, plural, one {# n udɣaṛ} other {# n yedɣaṛen}}",
"poll_button.add_poll": "Rnu asenqed", "poll_button.add_poll": "Rnu asenqed",
"poll_button.remove_poll": "Kkes asenqed", "poll_button.remove_poll": "Kkes asenqed",
"privacy.change": "Seggem tabaḍnit n yizen", "privacy.change": "Seggem tabaḍnit n yizen",
@ -465,9 +485,12 @@
"relative_time.seconds": "{number}tas", "relative_time.seconds": "{number}tas",
"relative_time.today": "assa", "relative_time.today": "assa",
"reply_indicator.cancel": "Sefsex", "reply_indicator.cancel": "Sefsex",
"reply_indicator.poll": "Afmiḍi",
"report.block": "Sewḥel", "report.block": "Sewḥel",
"report.categories.legal": "Azerfan",
"report.categories.other": "Tiyyaḍ", "report.categories.other": "Tiyyaḍ",
"report.categories.spam": "Aspam", "report.categories.spam": "Aspam",
"report.category.subtitle": "Fren amṣada akk ufrin",
"report.category.title_account": "ameɣnu", "report.category.title_account": "ameɣnu",
"report.category.title_status": "tasuffeɣt", "report.category.title_status": "tasuffeɣt",
"report.close": "Immed", "report.close": "Immed",
@ -476,13 +499,25 @@
"report.next": "Uḍfiṛ", "report.next": "Uḍfiṛ",
"report.placeholder": "Iwenniten-nniḍen", "report.placeholder": "Iwenniten-nniḍen",
"report.reasons.dislike": "Ur t-ḥemmleɣ ara", "report.reasons.dislike": "Ur t-ḥemmleɣ ara",
"report.reasons.dislike_description": "D ayen akk ur bɣiɣ ara ad waliɣ",
"report.reasons.other": "D ayen nniḍen", "report.reasons.other": "D ayen nniḍen",
"report.reasons.other_description": "Ugur ur yemṣada ara akk d taggayin-nniḍen",
"report.reasons.spam": "D aspam", "report.reasons.spam": "D aspam",
"report.reasons.spam_description": "Yir iseɣwan, yir agman d tririyin i d-yettuɣalen",
"report.reasons.violation": "Truẓi n yilugan n uqeddac",
"report.reasons.violation_description": "Teẓriḍ y·tettruẓu kra n yilugan",
"report.rules.subtitle": "Fren ayen akk yemṣadan",
"report.rules.title": "Acu n yilugan i yettwarẓan?",
"report.statuses.subtitle": "Fren ayen akk yemṣadan",
"report.statuses.title": "Llant tsuffaɣ ara isdemren aneqqis-a?",
"report.submit": "Azen", "report.submit": "Azen",
"report.target": "Mmel {target}", "report.target": "Mmel {target}",
"report.thanks.take_action_actionable": "Ideg nekkni nessenqad tuttra-inek•inem, tzemreḍ ad tḥadreḍ mgal @{name}:",
"report.thanks.title": "Ur tebɣiḍ ara ad twaliḍ aya?", "report.thanks.title": "Ur tebɣiḍ ara ad twaliḍ aya?",
"report.thanks.title_actionable": "Tanemmirt ɣef uneqqis, ad nwali deg waya.",
"report.unfollow": "Seḥbes aḍfar n @{name}", "report.unfollow": "Seḥbes aḍfar n @{name}",
"report_notification.attached_statuses": "{count, plural, one {# post} other {# posts}} attached", "report_notification.attached_statuses": "{count, plural, one {# post} other {# posts}} attached",
"report_notification.categories.legal": "Azerfan",
"report_notification.categories.other": "Ayen nniḍen", "report_notification.categories.other": "Ayen nniḍen",
"report_notification.categories.spam": "Aspam", "report_notification.categories.spam": "Aspam",
"report_notification.open": "Ldi aneqqis", "report_notification.open": "Ldi aneqqis",
@ -497,6 +532,7 @@
"search_popout.full_text_search_disabled_message": "Ur yelli ara deg {domain}.", "search_popout.full_text_search_disabled_message": "Ur yelli ara deg {domain}.",
"search_popout.language_code": "Tangalt ISO n tutlayt", "search_popout.language_code": "Tangalt ISO n tutlayt",
"search_popout.options": "Iwellihen n unadi", "search_popout.options": "Iwellihen n unadi",
"search_popout.quick_actions": "Tigawin tiruradin",
"search_popout.recent": "Inadiyen ineggura", "search_popout.recent": "Inadiyen ineggura",
"search_popout.user": "amseqdac", "search_popout.user": "amseqdac",
"search_results.accounts": "Imeɣna", "search_results.accounts": "Imeɣna",
@ -505,7 +541,9 @@
"search_results.see_all": "Wali-ten akk", "search_results.see_all": "Wali-ten akk",
"search_results.statuses": "Tisuffaɣ", "search_results.statuses": "Tisuffaɣ",
"search_results.title": "Anadi ɣef {q}", "search_results.title": "Anadi ɣef {q}",
"server_banner.active_users": "iseqdacen urmiden",
"server_banner.administered_by": "Yettwadbel sɣur :", "server_banner.administered_by": "Yettwadbel sɣur :",
"server_banner.server_stats": "Tidaddanin n uqeddac:",
"sign_in_banner.create_account": "Snulfu-d amiḍan", "sign_in_banner.create_account": "Snulfu-d amiḍan",
"sign_in_banner.sign_in": "Qqen", "sign_in_banner.sign_in": "Qqen",
"sign_in_banner.sso_redirect": "Qqen neɣ jerred", "sign_in_banner.sso_redirect": "Qqen neɣ jerred",
@ -516,13 +554,20 @@
"status.cannot_reblog": "Tasuffeɣt-a ur tezmir ara ad tettwabḍu tikelt-nniḍen", "status.cannot_reblog": "Tasuffeɣt-a ur tezmir ara ad tettwabḍu tikelt-nniḍen",
"status.copy": "Nɣel assaɣ ɣer tasuffeɣt", "status.copy": "Nɣel assaɣ ɣer tasuffeɣt",
"status.delete": "Kkes", "status.delete": "Kkes",
"status.direct": "Bder-d @{name} weḥd-s",
"status.direct_indicator": "Abdar uslig",
"status.edit": "Ẓreg", "status.edit": "Ẓreg",
"status.edited_x_times": "Tettwaẓreg {count, plural, one {{count} n tikkelt} other {{count} n tikkal}}", "status.edited_x_times": "Tettwaẓreg {count, plural, one {{count} n tikkelt} other {{count} n tikkal}}",
"status.embed": "Seddu", "status.embed": "Seddu",
"status.favourite": "Amenyaf",
"status.filter": "Sizdeg tassufeɣt-a", "status.filter": "Sizdeg tassufeɣt-a",
"status.filtered": "Yettwasizdeg", "status.filtered": "Yettwasizdeg",
"status.hide": "Ffer tasuffeɣt", "status.hide": "Ffer tasuffeɣt",
"status.history.created": "Yerna-t {name} {date}",
"status.history.edited": "Ibeddel-it {name} {date}",
"status.load_more": "Sali ugar", "status.load_more": "Sali ugar",
"status.media.open": "Sit i ulday",
"status.media.show": "Sit i uskan",
"status.media_hidden": "Amidya yettwaffer", "status.media_hidden": "Amidya yettwaffer",
"status.mention": "Bder-d @{name}", "status.mention": "Bder-d @{name}",
"status.more": "Ugar", "status.more": "Ugar",
@ -548,6 +593,7 @@
"status.show_less_all": "Semẓi akk tisuffɣin", "status.show_less_all": "Semẓi akk tisuffɣin",
"status.show_more": "Ssken-d ugar", "status.show_more": "Ssken-d ugar",
"status.show_more_all": "Ẓerr ugar lebda", "status.show_more_all": "Ẓerr ugar lebda",
"status.show_original": "Sken aɣbalu",
"status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}", "status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}",
"status.translate": "Suqel", "status.translate": "Suqel",
"status.translated_from_with": "Yettwasuqel seg {lang} s {provider}", "status.translated_from_with": "Yettwasuqel seg {lang} s {provider}",
@ -582,6 +628,7 @@
"upload_form.video_description": "Glem-d i yemdanen i yesɛan ugur deg tmesliwt neɣ deg yiẓri", "upload_form.video_description": "Glem-d i yemdanen i yesɛan ugur deg tmesliwt neɣ deg yiẓri",
"upload_modal.analyzing_picture": "Tasleḍt n tugna tetteddu…", "upload_modal.analyzing_picture": "Tasleḍt n tugna tetteddu…",
"upload_modal.apply": "Snes", "upload_modal.apply": "Snes",
"upload_modal.applying": "Asnas…",
"upload_modal.choose_image": "Fren tugna", "upload_modal.choose_image": "Fren tugna",
"upload_modal.description_placeholder": "Aberraɣ arurad ineggez nnig n uqjun amuṭṭis", "upload_modal.description_placeholder": "Aberraɣ arurad ineggez nnig n uqjun amuṭṭis",
"upload_modal.detect_text": "Sefru-d aḍris seg tugna", "upload_modal.detect_text": "Sefru-d aḍris seg tugna",
@ -589,6 +636,7 @@
"upload_modal.preparing_ocr": "Aheyyi n OCR…", "upload_modal.preparing_ocr": "Aheyyi n OCR…",
"upload_modal.preview_label": "Taskant ({ratio})", "upload_modal.preview_label": "Taskant ({ratio})",
"upload_progress.label": "Asali iteddu...", "upload_progress.label": "Asali iteddu...",
"upload_progress.processing": "Asesfer…",
"username.taken": "Yettwaṭṭef yisem-a n useqdac. Ɛreḍ wayeḍ", "username.taken": "Yettwaṭṭef yisem-a n useqdac. Ɛreḍ wayeḍ",
"video.close": "Mdel tabidyutt", "video.close": "Mdel tabidyutt",
"video.download": "Sidered afaylu", "video.download": "Sidered afaylu",

View File

@ -35,6 +35,7 @@
"account.follow_back": "Sekot atpakaļ", "account.follow_back": "Sekot atpakaļ",
"account.followers": "Sekotāji", "account.followers": "Sekotāji",
"account.followers.empty": "Šim lietotājam vēl nav sekotāju.", "account.followers.empty": "Šim lietotājam vēl nav sekotāju.",
"account.followers_counter": "{count, plural, zero {{count} sekotāju} one {{count} sekotājs} other {{count} sekotāji}}",
"account.following": "Seko", "account.following": "Seko",
"account.follows.empty": "Šis lietotājs pagaidām nevienam neseko.", "account.follows.empty": "Šis lietotājs pagaidām nevienam neseko.",
"account.go_to_profile": "Doties uz profilu", "account.go_to_profile": "Doties uz profilu",
@ -312,9 +313,9 @@
"home.column_settings.show_reblogs": "Rādīt pastiprinātos ierakstus", "home.column_settings.show_reblogs": "Rādīt pastiprinātos ierakstus",
"home.column_settings.show_replies": "Rādīt atbildes", "home.column_settings.show_replies": "Rādīt atbildes",
"home.hide_announcements": "Slēpt paziņojumus", "home.hide_announcements": "Slēpt paziņojumus",
"home.pending_critical_update.body": "Lūdzu, pēc iespējas ātrāk atjaunini savu Mastodon serveri!", "home.pending_critical_update.body": "Lūgums pēc iespējas drīzāk atjaunināt savu Mastodon serveri.",
"home.pending_critical_update.link": "Skatīt jauninājumus", "home.pending_critical_update.link": "Skatīt jauninājumus",
"home.pending_critical_update.title": "Pieejams kritisks drošības jauninājums!", "home.pending_critical_update.title": "Ir pieejams būtisks drošības atjauninājums.",
"home.show_announcements": "Rādīt paziņojumus", "home.show_announcements": "Rādīt paziņojumus",
"interaction_modal.description.favourite": "Ar Mastodon kontu tu vari pievienot šo ziņu izlasei, lai informētu autoru, ka to novērtē, un saglabātu to vēlākai lasīšanai.", "interaction_modal.description.favourite": "Ar Mastodon kontu tu vari pievienot šo ziņu izlasei, lai informētu autoru, ka to novērtē, un saglabātu to vēlākai lasīšanai.",
"interaction_modal.description.follow": "Ar Mastodon kontu Tu vari sekot {name}, lai saņemtu lietotāja ierakstus savā mājas plūsmā.", "interaction_modal.description.follow": "Ar Mastodon kontu Tu vari sekot {name}, lai saņemtu lietotāja ierakstus savā mājas plūsmā.",

View File

@ -217,18 +217,18 @@
"domain_block_modal.title": "Заблокувати домен?", "domain_block_modal.title": "Заблокувати домен?",
"domain_block_modal.you_will_lose_followers": "Усіх ваших підписників з цього сервера буде вилучено.", "domain_block_modal.you_will_lose_followers": "Усіх ваших підписників з цього сервера буде вилучено.",
"domain_block_modal.you_wont_see_posts": "Ви не бачитимете дописів і сповіщень від користувачів на цьому сервері.", "domain_block_modal.you_wont_see_posts": "Ви не бачитимете дописів і сповіщень від користувачів на цьому сервері.",
"domain_pill.activitypub_lets_connect": "Це дозволяє вам спілкуватися та взаємодіяти з людьми не лише на Mastodon, але й у різних соціальних додатках.", "domain_pill.activitypub_lets_connect": "Це дозволяє вам спілкуватися та взаємодіяти з людьми не лише на Mastodon, але й у різних соціальних застосунках.",
"domain_pill.activitypub_like_language": "ActivityPub - це як мова, якою Мастодонт розмовляє з іншими соціальними мережами.", "domain_pill.activitypub_like_language": "ActivityPub - це як мова, якою Mastodon розмовляє з іншими соціальними мережами.",
"domain_pill.server": "Сервер", "domain_pill.server": "Сервер",
"domain_pill.their_handle": "Їхня адреса:", "domain_pill.their_handle": "Їхня адреса:",
"domain_pill.their_server": "Їхній цифровий дім, де живуть усі їхні пости.", "domain_pill.their_server": "Їхній цифровий дім, де живуть усі їхні дописи.",
"domain_pill.their_username": "Їхній унікальний ідентифікатор на їхньому сервері. Ви можете знайти користувачів з однаковими іменами на різних серверах.", "domain_pill.their_username": "Їхній унікальний ідентифікатор на їхньому сервері. Ви можете знайти користувачів з однаковими іменами на різних серверах.",
"domain_pill.username": "Ім'я користувача", "domain_pill.username": "Ім'я користувача",
"domain_pill.whats_in_a_handle": "Що є в адресі?", "domain_pill.whats_in_a_handle": "Що є в адресі?",
"domain_pill.who_they_are": "Оскільки дескриптори вказують, хто це і де він знаходиться, ви можете взаємодіяти з людьми через соціальну мережу платформ на основі <button>ActivityPub</button>.", "domain_pill.who_they_are": "Оскільки дескриптори вказують, хто це і де він знаходиться, ви можете взаємодіяти з людьми через соціальну мережу платформ на основі <button>ActivityPub</button>.",
"domain_pill.who_you_are": "Оскільки ваш нікнейм вказує, хто ви та де ви, люди можуть взаємодіяти з вами через соціальну мережу платформ на основі <button>ActivityPub</button>.", "domain_pill.who_you_are": "Оскільки ваш нікнейм вказує, хто ви та де ви, люди можуть взаємодіяти з вами через соціальну мережу платформ на основі <button>ActivityPub</button>.",
"domain_pill.your_handle": "Ваша адреса:", "domain_pill.your_handle": "Ваша адреса:",
"domain_pill.your_server": "Ваш цифровий дім, де живуть усі ваші публікації. Не подобається цей? Перенесіть сервери в будь-який час і залучайте своїх підписників.", "domain_pill.your_server": "Ваш цифровий дім, де живуть усі ваші дописи. Не подобається цей? Перенесіть сервери в будь-який час і залучайте своїх підписників.",
"domain_pill.your_username": "Ваш унікальний ідентифікатор на цьому сервері. Ви можете знайти користувачів з однаковими іменами на різних серверах.", "domain_pill.your_username": "Ваш унікальний ідентифікатор на цьому сервері. Ви можете знайти користувачів з однаковими іменами на різних серверах.",
"embed.instructions": "Вбудуйте цей допис до вашого вебсайту, скопіювавши код нижче.", "embed.instructions": "Вбудуйте цей допис до вашого вебсайту, скопіювавши код нижче.",
"embed.preview": "Ось який вигляд це матиме:", "embed.preview": "Ось який вигляд це матиме:",
@ -489,9 +489,9 @@
"notification.reblog": "{name} поширює ваш допис", "notification.reblog": "{name} поширює ваш допис",
"notification.relationships_severance_event": "Втрачено з'єднання з {name}", "notification.relationships_severance_event": "Втрачено з'єднання з {name}",
"notification.relationships_severance_event.account_suspension": "Адміністратор з {from} призупинив {target}, що означає, що ви більше не можете отримувати оновлення від них або взаємодіяти з ними.", "notification.relationships_severance_event.account_suspension": "Адміністратор з {from} призупинив {target}, що означає, що ви більше не можете отримувати оновлення від них або взаємодіяти з ними.",
"notification.relationships_severance_event.domain_block": "Адміністратор з {from} заблокував {target}, включаючи {followersCount} ваших підписників і {{followingCount, plural, one {# account} other {# accounts}}, на які ви підписані.", "notification.relationships_severance_event.domain_block": "Адміністратор з {from} заблокував {target}, включаючи {followersCount} ваших підписників і {followingCount , plural, one {# обліковий запис} few {# облікові записи} many {# облікових записів} other {# обліковий запис}}, на які ви підписані.",
"notification.relationships_severance_event.learn_more": ізнатися більше", "notification.relationships_severance_event.learn_more": окладніше",
"notification.relationships_severance_event.user_domain_block": "Ви заблокували {target}, видаливши {followersCount} ваших підписників і {followingCount, plural, one {# account} other {# accounts}}, за якими ви стежите.", "notification.relationships_severance_event.user_domain_block": "Ви заблокували {target}, видаливши {followersCount} ваших підписників і {followingCount, plural, one {# обліковий запис} few {# облікові записи} many {# облікових записів} other {# обліковий запис}}, за якими ви стежите.",
"notification.status": "{name} щойно дописує", "notification.status": "{name} щойно дописує",
"notification.update": "{name} змінює допис", "notification.update": "{name} змінює допис",
"notification_requests.accept": "Прийняти", "notification_requests.accept": "Прийняти",

View File

@ -62,7 +62,8 @@ class LinkDetailsExtractor
end end
def author_name def author_name
author['name'] name = author['name']
name.is_a?(Array) ? name.join(', ') : name
end end
def author_url def author_url
@ -294,7 +295,7 @@ class LinkDetailsExtractor
def html_entities_decode(string) def html_entities_decode(string)
return if string.nil? return if string.nil?
unicode_string = string.encode('UTF-8') unicode_string = string.to_s.encode('UTF-8')
raise EncodingError, 'cannot convert string to valid UTF-8' unless unicode_string.valid_encoding? raise EncodingError, 'cannot convert string to valid UTF-8' unless unicode_string.valid_encoding?
html_entities.decode(unicode_string) html_entities.decode(unicode_string)

View File

@ -295,7 +295,7 @@ class Status < ApplicationRecord
else else
map = media_attachments.index_by(&:id) map = media_attachments.index_by(&:id)
ordered_media_attachment_ids.filter_map { |media_attachment_id| map[media_attachment_id] } ordered_media_attachment_ids.filter_map { |media_attachment_id| map[media_attachment_id] }
end end.take(MEDIA_ATTACHMENTS_LIMIT)
end end
def replies_count def replies_count

View File

@ -54,12 +54,14 @@ class StatusEdit < ApplicationRecord
def ordered_media_attachments def ordered_media_attachments
return @ordered_media_attachments if defined?(@ordered_media_attachments) return @ordered_media_attachments if defined?(@ordered_media_attachments)
@ordered_media_attachments = if ordered_media_attachment_ids.nil? @ordered_media_attachments = begin
[] if ordered_media_attachment_ids.nil?
else []
map = status.media_attachments.index_by(&:id) else
ordered_media_attachment_ids.map.with_index { |media_attachment_id, index| PreservedMediaAttachment.new(media_attachment: map[media_attachment_id], description: media_descriptions[index]) } map = status.media_attachments.index_by(&:id)
end ordered_media_attachment_ids.map.with_index { |media_attachment_id, index| PreservedMediaAttachment.new(media_attachment: map[media_attachment_id], description: media_descriptions[index]) }
end
end.take(Status::MEDIA_ATTACHMENTS_LIMIT)
end end
def proper def proper

View File

@ -21,6 +21,18 @@ kab:
username: username:
invalid: ilaq ad ilin isekkilen, uṭṭunen d yijerriden n wadda kan invalid: ilaq ad ilin isekkilen, uṭṭunen d yijerriden n wadda kan
reserved: yettwaṭṭef reserved: yettwaṭṭef
admin/webhook:
attributes:
url:
invalid: mačči d URL ameɣtu
doorkeeper/application:
attributes:
website:
invalid: mačči d URL ameɣtu
import:
attributes:
data:
malformed: yir amsal
status: status:
attributes: attributes:
reblog: reblog:
@ -28,4 +40,20 @@ kab:
user: user:
attributes: attributes:
email: email:
blocked: isseqdac asaǧǧaw n yimayl ur yettusirgen ara
unreachable: ur d-ttban ara d akken yella unreachable: ur d-ttban ara d akken yella
role_id:
elevated: ur yezmir ara ad iεeddi tamlilt-ik tamirant
user_role:
attributes:
permissions_as_keys:
dangerous: deg-s tisirag tiriɣelsanin i temlilt tazadurt
elevated: ur yezmir ara ad yesεu tirirag ur nelli ara deg temlilit-ik tamirant
own_role: ur yezmir ara ad yettwabeddel s temlilt-ik tamirant
position:
elevated: ur yezmir ara ad iεeddi tamlilt-ik tamirant
own_role: ur yezmir ara ad yettwabeddel s temlilt-ik tamirant
webhook:
attributes:
events:
invalid_permissions: ur yezmir ara ad yesεu tidyanin iwumi ur tesεiḍ ara tisirag

View File

@ -12,6 +12,7 @@ kab:
last_attempt: Γur-k yiwen n uɛraḍ-nniḍen kan send ad yettucekkel umiḍan-ik. last_attempt: Γur-k yiwen n uɛraḍ-nniḍen kan send ad yettucekkel umiḍan-ik.
locked: Amiḍan-ik yettwargel. locked: Amiḍan-ik yettwargel.
not_found_in_database: Tella tuccḍa deg %{authentication_keys} neγ deg wawal uffir. not_found_in_database: Tella tuccḍa deg %{authentication_keys} neγ deg wawal uffir.
omniauth_user_creation_failure: Tuccḍa lawan n tmerna n umiḍan i timagit-a.
pending: Amiḍan-inek mazal-it deg ɛiwed n tmuγli. pending: Amiḍan-inek mazal-it deg ɛiwed n tmuγli.
timeout: Tiɣimit n tuqqna tezri. Ma ulac aɣilif ɛiwed tuqqna akken ad tkemmleḍ. timeout: Tiɣimit n tuqqna tezri. Ma ulac aɣilif ɛiwed tuqqna akken ad tkemmleḍ.
unauthenticated: Ilaq ad teqqneḍ neɣ ad tjerrḍeḍ akken ad tkemmelḍ. unauthenticated: Ilaq ad teqqneḍ neɣ ad tjerrḍeḍ akken ad tkemmelḍ.
@ -47,21 +48,41 @@ kab:
subject: 'Mastodon: Iwellihen n uwennez n wawal uffir' subject: 'Mastodon: Iwellihen n uwennez n wawal uffir'
title: Aɛiwed n wawal uffir title: Aɛiwed n wawal uffir
two_factor_disabled: two_factor_disabled:
explanation: Tuqqna tella tura s useqdec n tansa n yimayl tasuft d wawal n uεeddi.
subject: 'Mastodon: Asesteb s snat n tarrayin yensa' subject: 'Mastodon: Asesteb s snat n tarrayin yensa'
subtitle: Asesteb s snat tarrayin i umiḍan-ik yensan.
title: Asesteb s snat n tarrayin insa title: Asesteb s snat n tarrayin insa
two_factor_enabled: two_factor_enabled:
explanation: Ajuṭu yettusirwen s usnas TOTP yeqqnen ilaq i wakken ad teqqneḍ.
subject: 'Mastodon: Asesteb s snat n tarrayin yermed' subject: 'Mastodon: Asesteb s snat n tarrayin yermed'
subtitle: Asesteb s snat tarrayin yettwarmed i umiḍan-ik.
title: Asesteb s snat n tarrayin irmed title: Asesteb s snat n tarrayin irmed
two_factor_recovery_codes_changed: two_factor_recovery_codes_changed:
explanation: Tangalt n tuɣalin tettwaḥbes sakin nesnulfa-d yiwet d tamaynut. explanation: Tangalt n tuɣalin tettwaḥbes sakin nesnulfa-d yiwet d tamaynut.
subject: 'Mastodon: Tingalin n tuɣalin n snat n tarayin ttwarnanat i tikkelt-nniḍen' subject: 'Mastodon: Tingalin n tuɣalin n snat n tarayin ttwarnanat i tikkelt-nniḍen'
subtitle: Tangalt n tuɣalin tettwaḥbes sakin nesnulfa-d yiwet d tamaynut.
title: Tangalt n tuɣalin 2FA tettwabeddel title: Tangalt n tuɣalin 2FA tettwabeddel
unlock_instructions: unlock_instructions:
subject: 'Mastodon: iwelihhen n userreḥ' subject: 'Mastodon: iwelihhen n userreḥ'
webauthn_credential: webauthn_credential:
added: added:
explanation: Tasarut-a n tɣellist tettwarna ɣer umiḍan-ik·im
subject: 'Maṣṭudun : Tasarutt tamaynutt n tɣellist' subject: 'Maṣṭudun : Tasarutt tamaynutt n tɣellist'
title: Tasarut tamaynutt n tɣellist tamaynut tettwarna title: Tasarut tamaynutt n tɣellist tamaynut tettwarna
deleted:
explanation: Tasarut-a n tɣellist tettwakkes seg umiḍan-ik·im
subject: 'Mastodon: Tasarut n tɣellsit tettwakkes'
title: Yiwet seg tsura-k·m n tɣellist tettwakkes
webauthn_disabled:
explanation: Yensa usesteb s tsura n tɣellist i umiḍan-ik.
extra: Tzemreḍ ad tkecmeḍ tura s useqdec asuf n ujuṭu yettwasran s usnas TOPTP yeqqnen.
subject: 'Mastodon: Asesteb s tsura n tɣellist yensa'
title: Tisura n tɣellist nsant
webauthn_enabled:
explanation: Asesteb n tsarut n tɣellist tettwarmed i umiḍan-ik.
extra: Tasarut-ik n tɣellist tezmer tura ad tettuseqdec i unekcum.
subject: 'Mastodon: Asesteb n tsarut n tɣellist yermed'
title: Tisura n tɣellist remdent
omniauth_callbacks: omniauth_callbacks:
failure: Ur nezmir ara ad ak·akem-nsesṭeb seg %{kind} acku "%{reason}". failure: Ur nezmir ara ad ak·akem-nsesṭeb seg %{kind} acku "%{reason}".
success: Asesṭeb idda akken iwata seg umiḍan %{kind}. success: Asesṭeb idda akken iwata seg umiḍan %{kind}.

View File

@ -5,6 +5,7 @@ kab:
doorkeeper/application: doorkeeper/application:
name: Isem n usnas name: Isem n usnas
redirect_uri: URI n uwelleh redirect_uri: URI n uwelleh
scopes: Tinerfadin
website: Asmel web n usnas website: Asmel web n usnas
errors: errors:
models: models:
@ -39,6 +40,7 @@ kab:
empty: Ulac ɣur-k·m isnasen. empty: Ulac ɣur-k·m isnasen.
name: Isem name: Isem
new: Asnas amaynut new: Asnas amaynut
scopes: Tinerfadin
show: Ẓer show: Ẓer
title: Isnasen-ik·im title: Isnasen-ik·im
new: new:
@ -47,6 +49,8 @@ kab:
actions: Tigawin actions: Tigawin
application_id: ID n usnas application_id: ID n usnas
callback_urls: URL n tririt n wawal callback_urls: URL n tririt n wawal
scopes: Tinerfadin
secret: Tuffirt n umsaɣ
title: 'Asnas: %{name}' title: 'Asnas: %{name}'
authorizations: authorizations:
buttons: buttons:
@ -55,6 +59,7 @@ kab:
error: error:
title: Tella-d tuccḍa title: Tella-d tuccḍa
new: new:
review_permissions: Asenqed n tsirag
title: Tlaq tsiregt title: Tlaq tsiregt
show: show:
title: Nɣel tangalt n wurag sakkin senteḍ-itt deg usnas. title: Nɣel tangalt n wurag sakkin senteḍ-itt deg usnas.
@ -64,8 +69,12 @@ kab:
confirmations: confirmations:
revoke: Tetḥeqqeḍ? revoke: Tetḥeqqeḍ?
index: index:
authorized_at: Yettwasireg ɣef %{date}
description_html: Ha-t-an yisnasen i izemren ad kecmen ɣer umiḍan-ik·im, s useqdec n API. Ma llan yisnasen ur teεqileḍ ara da, neɣ kra n wesnas ur iteddu ara akken ilaq, tzemreḍ ad tekkseḍ anekcum-is. description_html: Ha-t-an yisnasen i izemren ad kecmen ɣer umiḍan-ik·im, s useqdec n API. Ma llan yisnasen ur teεqileḍ ara da, neɣ kra n wesnas ur iteddu ara akken ilaq, tzemreḍ ad tekkseḍ anekcum-is.
last_used_at: Yettwaseqdec i tikkelt taneggarut ass n %{date} last_used_at: Yettwaseqdec i tikkelt taneggarut ass n %{date}
never_used: Urǧin yettwaseqdac
scopes: Tisirag
superapp: Adigan
title: Isnasen-ik·im yettusirgen title: Isnasen-ik·im yettusirgen
errors: errors:
messages: messages:
@ -82,13 +91,28 @@ kab:
destroy: destroy:
notice: Yettwaḥwi wesnas. notice: Yettwaḥwi wesnas.
grouped_scopes: grouped_scopes:
access:
read: Anekcum i tɣuri kan
read/write: Anekcum i tɣuri d tira
write: Anekcum i tira kan
title: title:
accounts: Imiḍanen accounts: Imiḍanen
admin/accounts: Tadbelt n imiḍan admin/accounts: Tadbelt n imiḍan
admin/all: Akk timahilin tinebdalin
admin/reports: Tadbelt n yineqqisen
blocks: Yewḥel
bookmarks: Ticraḍ
conversations: Idiwenniyen
crypto: Awgelhen seg yixef ɣer yixef crypto: Awgelhen seg yixef ɣer yixef
favourites: Imenyafen
filters: Imzizdigen filters: Imzizdigen
follow: Aḍfar, asgugem akked usewḥel
follows: Aḍfar
lists: Tibdarin lists: Tibdarin
media: Imeddayen n umidya
mutes: Yeggugem
notifications: Tilɣa notifications: Tilɣa
profile: Amaɣnu-k Mastodon
push: Tilɣa yettudemmren push: Tilɣa yettudemmren
reports: Ineqqisen reports: Ineqqisen
search: Nadi search: Nadi

View File

@ -31,7 +31,7 @@ ko:
form: form:
error: 이런! 오류를 확인하세요 error: 이런! 오류를 확인하세요
help: help:
native_redirect_uri: "%{native_redirect_uri}에서 로컬 테스트를 할 수 있습니다." native_redirect_uri: "%{native_redirect_uri}를 이용해 로컬 테스트를 할 수 있습니다"
redirect_uri: 한 줄에 하나의 URI를 작성하세요 redirect_uri: 한 줄에 하나의 URI를 작성하세요
scopes: 스페이스로 범위를 구분하세요. 빈 칸으로 놔두면 기본 범위를 사용합니다. scopes: 스페이스로 범위를 구분하세요. 빈 칸으로 놔두면 기본 범위를 사용합니다.
index: index:

View File

@ -1741,7 +1741,7 @@ ko:
contrast: 마스토돈 (고대비) contrast: 마스토돈 (고대비)
default: 마스토돈 (어두움) default: 마스토돈 (어두움)
mastodon-light: 마스토돈 (밝음) mastodon-light: 마스토돈 (밝음)
system: 자동 선택 (시스템 테마 이용) system: 자동 (시스템 테마 사용)
time: time:
formats: formats:
default: "%Y-%m-%d %H:%M" default: "%Y-%m-%d %H:%M"

View File

@ -116,6 +116,8 @@ ro:
redownloaded_msg: S-a reîmprospătat cu succes profilul %{username} de la origine redownloaded_msg: S-a reîmprospătat cu succes profilul %{username} de la origine
reject: Respinge reject: Respinge
rejected_msg: S-a respins cu succes cererea de înregistrare a utilizatorului %{username} rejected_msg: S-a respins cu succes cererea de înregistrare a utilizatorului %{username}
remote_suspension_irreversible: Datele acestui cont au fost șterse în mod ireversibil.
remote_suspension_reversible_hint_html: Contul a fost suspendat pe server-ul respectiv, iar datele vor fi șterse complet pe %{date}. Până atunci, server-ul remote poate restabili acest cont fără consecințe negative. Dacă dorești să elimini toate datele contului numaidecât, poți face acest lucru mai jos.
remove_avatar: Elimină avatar remove_avatar: Elimină avatar
remove_header: Elimină antet remove_header: Elimină antet
removed_avatar_msg: S-a îndepărtat cu succes poza de profil a utilizatorului %{username} removed_avatar_msg: S-a îndepărtat cu succes poza de profil a utilizatorului %{username}

View File

@ -5,6 +5,7 @@ kab:
account: account:
display_name: Isem-ik·im ummid neɣ isem-ik·im n uqeṣṣer. display_name: Isem-ik·im ummid neɣ isem-ik·im n uqeṣṣer.
fields: Asebter-ik·im agejdan, imqimen, leεmer, ayen tebɣiḍ. fields: Asebter-ik·im agejdan, imqimen, leεmer, ayen tebɣiḍ.
note: 'Tzemreḍ ad d-@tbedreḍ imdanen niḍen neɣ #ihacṭagen.'
account_alias: account_alias:
acct: Sekcem isem n umseqdac@domain n umiḍan s wansa itebγiḍ ad gujjeḍ acct: Sekcem isem n umseqdac@domain n umiḍan s wansa itebγiḍ ad gujjeḍ
account_migration: account_migration:
@ -27,6 +28,8 @@ kab:
name: 'Ha-t-an kra seg ihacṭagen i tesseqdaceḍ ussan-a ineggura maḍi :' name: 'Ha-t-an kra seg ihacṭagen i tesseqdaceḍ ussan-a ineggura maḍi :'
imports: imports:
data: Afaylu CSV id yusan seg uqeddac-nniḍen n Maṣṭudun data: Afaylu CSV id yusan seg uqeddac-nniḍen n Maṣṭudun
invite_request:
text: Aya ad aɣ-iɛiwen ad nessenqed tuttra-k•m
ip_block: ip_block:
comment: D afrayan. Cfu ɣef wayɣer i terniḍ alugen-a. comment: D afrayan. Cfu ɣef wayɣer i terniḍ alugen-a.
severities: severities:
@ -36,6 +39,8 @@ kab:
fields: fields:
name: Tabzimt name: Tabzimt
value: Agbur value: Agbur
account_alias:
acct: Tansa n umiḍan aqbur
account_migration: account_migration:
acct: Tansa n umiḍan amaynut acct: Tansa n umiḍan amaynut
account_warning_preset: account_warning_preset:
@ -51,6 +56,7 @@ kab:
suspend: Ḥbes di leεḍil suspend: Ḥbes di leεḍil
announcement: announcement:
ends_at: Tagara n tedyant ends_at: Tagara n tedyant
starts_at: Tazwara n tedyant
text: Alɣu text: Alɣu
defaults: defaults:
autofollow: Ɛreḍ-it-id ad yeḍfer amiḍan-ik·im autofollow: Ɛreḍ-it-id ad yeḍfer amiḍan-ik·im
@ -59,18 +65,25 @@ kab:
chosen_languages: Sizdeg tutlayin chosen_languages: Sizdeg tutlayin
confirm_new_password: Sentem awal uffir amaynut confirm_new_password: Sentem awal uffir amaynut
confirm_password: Sentem awal uffir confirm_password: Sentem awal uffir
context: Isatalen n umsizdeg
current_password: Awal uffir n tura current_password: Awal uffir n tura
data: Isefka data: Isefka
display_name: Isem ara d-yettwaskanen display_name: Isem ara d-yettwaskanen
email: Tansa imayl email: Tansa imayl
expires_in: Ad yemmet expires_in: Ad yemmet
fields: Urtiyen niḍen
header: Ixef header: Ixef
honeypot: "%{label} (ur tettaččar ara)"
inbox_url: URL n tbewwaḍt n urmas yettwacudden
irreversible: Kkes deg wadeg n tuffra
locale: Tutlayt n wegrudem locale: Tutlayt n wegrudem
max_uses: Amḍan afellay n iseqdacen max_uses: Amḍan afellay n iseqdacen
new_password: Awal uffir amaynut new_password: Awal uffir amaynut
note: Tameddurt note: Tameddurt
otp_attempt: Tangalt n snat n tarayin otp_attempt: Tangalt n snat n tarayin
password: Awal uffir password: Awal uffir
phrase: Awal n tsarut neɣ tafyirt
setting_advanced_layout: Rmed agrudem n web leqqayen
setting_default_language: Tutlayt n tira setting_default_language: Tutlayt n tira
setting_default_privacy: Tabaḍnit n tira setting_default_privacy: Tabaḍnit n tira
setting_display_media_default: Akk-a kan setting_display_media_default: Akk-a kan
@ -88,8 +101,15 @@ kab:
featured_tag: featured_tag:
name: Ahacṭag name: Ahacṭag
form_admin_settings: form_admin_settings:
custom_css: CSS udmawan
profile_directory: Rmed akaram n imaγnuten
site_contact_email: Imayl n unermas
site_short_description: Aglam n uqeddac
site_terms: Tasertit tabaḍnit site_terms: Tasertit tabaḍnit
site_title: Isem n uqeddac site_title: Isem n uqeddac
status_page_url: URL n uusebter n waddaden
theme: Asentel amezwer
thumbnail: Tanfult n uqeddac
interactions: interactions:
must_be_follower: Ssewḥel ilɣa sɣur wid akked tid ur yellin ara d imeḍfaren-ik·im must_be_follower: Ssewḥel ilɣa sɣur wid akked tid ur yellin ara d imeḍfaren-ik·im
must_be_following: Ssewḥel ilɣa sɣur wid akked tid ur tettḍafareḍ ara must_be_following: Ssewḥel ilɣa sɣur wid akked tid ur tettḍafareḍ ara
@ -109,18 +129,25 @@ kab:
follow: Yeḍfer-ik·im-id walbɛaḍ follow: Yeḍfer-ik·im-id walbɛaḍ
follow_request: Ma yella win i d-yessutren ad k·em-yeḍfer follow_request: Ma yella win i d-yessutren ad k·em-yeḍfer
mention: Yuder-ik·em-id walbɛaḍ mention: Yuder-ik·em-id walbɛaḍ
pending_account: Amiḍan amaynut yesran asenqed
reblog: Yella win yesselhan adda-dik·im reblog: Yella win yesselhan adda-dik·im
report: Aneqis amaynut yettwazen
rule: rule:
hint: Isallen-nniḍen hint: Isallen-nniḍen
text: Alugen text: Alugen
tag: tag:
name: Ahacṭag name: Ahacṭag
user: user:
role: Tamlilt
time_zone: Tamnaḍt tasragant time_zone: Tamnaḍt tasragant
user_role: user_role:
name: Isem name: Isem
permissions_as_keys: Tisirag permissions_as_keys: Tisirag
webhook:
events: Tidyanin turmidin
'no': Ala 'no': Ala
not_recommended: Ur yettuwelleh ara
overridden: Yeččur
recommended: Yettuwelleh recommended: Yettuwelleh
required: required:
mark: "*" mark: "*"

View File

@ -2,6 +2,12 @@
ro: ro:
simple_form: simple_form:
hints: hints:
account:
discoverable: Este posibil ca postările și profilul tău să fie recomandate în diferite zone ale Mastodon, iar profilul tău ar poate fi sugerat altor utilizatori.
fields: Pagina ta principală, pronumele tale, vârsta, sau orice îți dorești.
indexable: Postările tale publice pot apărea în rezultatele căutărilor pe Mastodon. Persoanele care au interacționat cu postările tale vor putea să le caute oricând.
note: 'Poți @menționa alte persoane sau #hashtag-uri.'
unlocked: Alte persoane vă vor putea urmări fără a solicita aprobare. Debifați dacă doriți să revizuiți cererile și să alegeți dacă doriți să acceptați sau să respingeți noii urmăritori.
account_alias: account_alias:
acct: Specificați numele de utilizator@domeniu al contului de la care doriți să treceți acct: Specificați numele de utilizator@domeniu al contului de la care doriți să treceți
account_migration: account_migration:
@ -23,12 +29,14 @@ ro:
text: Poți folosi sintaxa de postare. Te rugăm să fii atent la spațiul pe care anunțul îl va ocupa pe ecranul utilizatorului text: Poți folosi sintaxa de postare. Te rugăm să fii atent la spațiul pe care anunțul îl va ocupa pe ecranul utilizatorului
defaults: defaults:
autofollow: Persoanele care se înregistrează datorită invitației tale te vor urmări automat autofollow: Persoanele care se înregistrează datorită invitației tale te vor urmări automat
avatar: WEBP, PNG, GIF sau JPG. Cel mult %{size}. Va fi redimensionată la %{dimensions}px
bot: Acest cont performează în cea mai mare parte acțiuni automate și nu poate fi monitorizat bot: Acest cont performează în cea mai mare parte acțiuni automate și nu poate fi monitorizat
context: Contextele în care filtrul trebuie aplicat context: Contextele în care filtrul trebuie aplicat
current_password: În scopuri de securitate, vă rugăm să introduceţi parola contului curent current_password: În scopuri de securitate, vă rugăm să introduceţi parola contului curent
current_username: Pentru a confirma, vă rugăm să introduceţi numele de utilizator al contului curent current_username: Pentru a confirma, vă rugăm să introduceţi numele de utilizator al contului curent
digest: Este trimis doar după o lungă perioadă de inactivitate și numai dacă primești mesaje personale în perioada de absență digest: Este trimis doar după o lungă perioadă de inactivitate și numai dacă primești mesaje personale în perioada de absență
email: Vei primi un e-mail de confirmare email: Vei primi un e-mail de confirmare
header: WEBP, PNG, GIF sau JPG. Cel mult %{size}. Va fi redimensionată la %{dimensions}px
inbox_url: Copiază adresa URL de pe prima pagină a reului pe care vrei să îl utilizezi inbox_url: Copiază adresa URL de pe prima pagină a reului pe care vrei să îl utilizezi
irreversible: Postările sortate vor dispărea ireversibil, chiar dacă filtrul este ulterior șters irreversible: Postările sortate vor dispărea ireversibil, chiar dacă filtrul este ulterior șters
locale: Limba interfaței de utilizator, e-mailurile si notificările push locale: Limba interfaței de utilizator, e-mailurile si notificările push
@ -36,17 +44,27 @@ ro:
phrase: Vor fi potrivite indiferent de textul din casetă sau advertismentul unei postări phrase: Vor fi potrivite indiferent de textul din casetă sau advertismentul unei postări
scopes: La care API-uri aplicația are nevoie de acces. Dacă selectezi un scop principal nu mai e nevoie să selectezi fiecare sub-scop al acestuia. scopes: La care API-uri aplicația are nevoie de acces. Dacă selectezi un scop principal nu mai e nevoie să selectezi fiecare sub-scop al acestuia.
setting_aggregate_reblogs: Nu afișa impulsurile noi pentru postările care au fost deja recent impulsionate (afectează doar noile impulsuri primite) setting_aggregate_reblogs: Nu afișa impulsurile noi pentru postările care au fost deja recent impulsionate (afectează doar noile impulsuri primite)
setting_always_send_emails: În mod normal, notificările prin e-mail nu vor fi trimise când utilizați în mod activ Mastodon
setting_default_sensitive: Fișierele media sensibile sunt ascunse implicit și pot fi dezvăluite cu un clic setting_default_sensitive: Fișierele media sensibile sunt ascunse implicit și pot fi dezvăluite cu un clic
setting_display_media_default: Ascunde conținutul media marcat ca sensibil (NSFW) setting_display_media_default: Ascunde conținutul media marcat ca sensibil (NSFW)
setting_display_media_hide_all: Întotdeauna ascunde tot conținutul media setting_display_media_hide_all: Întotdeauna ascunde tot conținutul media
setting_display_media_show_all: Întotdeauna afișează conținutul media marcat ca sensibil setting_display_media_show_all: Întotdeauna afișează conținutul media marcat ca sensibil
setting_use_blurhash: Gradienții sunt bazați pe culorile vizualelor ascunse, dar ofuscă orice detalii setting_use_blurhash: Gradienții sunt bazați pe culorile vizualelor ascunse, dar ofuscă orice detalii
setting_use_pending_items: Ascunde actualizările cronologice din spatele unui click în loc de a derula automat fluxul setting_use_pending_items: Ascunde actualizările cronologice din spatele unui click în loc de a derula automat fluxul
username: Poți folosi litere, numere sau liniuțe de subliniere
whole_word: Când fraza sau cuvântul este doar alfanumeric, acesta se aplică doar dacă există o potrivire completă whole_word: Când fraza sau cuvântul este doar alfanumeric, acesta se aplică doar dacă există o potrivire completă
domain_allow: domain_allow:
domain: Acest domeniu va putea prelua date de pe acest server și datele primite de la el vor fi procesate și stocate domain: Acest domeniu va putea prelua date de pe acest server și datele primite de la el vor fi procesate și stocate
email_domain_block: email_domain_block:
domain: Acesta poate fi numele de domeniu care apare în adresa de e-mail sau în înregistrarea MX pe care o utilizează. Acestea vor fi verificate la înscriere.
with_dns_records: Se va face o încercare de a rezolva înregistrările DNS ale domeniului dat și rezultatele vor fi de asemenea afișate pe lista neagră with_dns_records: Se va face o încercare de a rezolva înregistrările DNS ale domeniului dat și rezultatele vor fi de asemenea afișate pe lista neagră
featured_tag:
name: 'Iată câteva dintre hashtag-urile pe care le-ai folosit cel mai recent:'
filters:
action: Alege ce acţiune va fi efectuată atunci când o postare corespunde filtrului
actions:
hide: Ascunde complet conținutul filtrat, ca și cum nu ar exista
warn: Ascunde conținutul filtrat în spatele unui avertisment care menționează titlul filtrului
form_challenge: form_challenge:
current_password: Ați intrat într-o zonă securizată current_password: Ați intrat într-o zonă securizată
imports: imports:

View File

@ -205,9 +205,11 @@ namespace :api, format: false do
post :unmute post :unmute
end end
resource :pin, only: :create, controller: 'accounts/pins' scope module: :accounts do
post :unpin, to: 'accounts/pins#destroy' resource :pin, only: :create
resource :note, only: :create, controller: 'accounts/notes' post :unpin, to: 'pins#destroy'
resource :note, only: :create
end
end end
resources :tags, only: [:show] do resources :tags, only: [:show] do
@ -220,7 +222,7 @@ namespace :api, format: false do
resources :followed_tags, only: [:index] resources :followed_tags, only: [:index]
resources :lists, only: [:index, :create, :show, :update, :destroy] do resources :lists, only: [:index, :create, :show, :update, :destroy] do
resource :accounts, only: [:show, :create, :destroy], controller: 'lists/accounts' resource :accounts, only: [:show, :create, :destroy], module: :lists
end end
namespace :featured_tags do namespace :featured_tags do
@ -230,7 +232,7 @@ namespace :api, format: false do
resources :featured_tags, only: [:index, :create, :destroy] resources :featured_tags, only: [:index, :create, :destroy]
resources :polls, only: [:create, :show] do resources :polls, only: [:create, :show] do
resources :votes, only: :create, controller: 'polls/votes' resources :votes, only: :create, module: :polls
end end
namespace :push do namespace :push do
@ -316,8 +318,10 @@ namespace :api, format: false do
resources :suggestions, only: [:index] resources :suggestions, only: [:index]
resource :instance, only: [:show] resource :instance, only: [:show]
resources :filters, only: [:index, :create, :show, :update, :destroy] do resources :filters, only: [:index, :create, :show, :update, :destroy] do
resources :keywords, only: [:index, :create], controller: 'filters/keywords' scope module: :filters do
resources :statuses, only: [:index, :create], controller: 'filters/statuses' resources :keywords, only: [:index, :create]
resources :statuses, only: [:index, :create]
end
end end
namespace :filters do namespace :filters do

View File

@ -34,7 +34,7 @@ RSpec.describe Admin::Disputes::AppealsController do
let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
it 'redirects back to the strike page and notifies target account about approved appeal', :sidekiq_inline do it 'redirects back to the strike page and notifies target account about approved appeal', :inline_jobs do
emails = capture_emails { subject } emails = capture_emails { subject }
expect(response) expect(response)
@ -58,7 +58,7 @@ RSpec.describe Admin::Disputes::AppealsController do
let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
it 'redirects back to the strike page and notifies target account about rejected appeal', :sidekiq_inline do it 'redirects back to the strike page and notifies target account about rejected appeal', :inline_jobs do
emails = capture_emails { subject } emails = capture_emails { subject }
expect(response) expect(response)

View File

@ -176,7 +176,7 @@ RSpec.describe Admin::DomainBlocksController do
end end
end end
describe 'PUT #update', :sidekiq_inline do describe 'PUT #update', :inline_jobs do
subject do subject do
post :update, params: { :id => domain_block.id, :domain_block => { domain: 'example.com', severity: new_severity }, 'confirm' => '' } post :update, params: { :id => domain_block.id, :domain_block => { domain: 'example.com', severity: new_severity }, 'confirm' => '' }
end end

View File

@ -13,7 +13,7 @@ describe Admin::ResetsController do
sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user
end end
describe 'POST #create', :sidekiq_inline do describe 'POST #create', :inline_jobs do
it 'redirects to admin accounts page' do it 'redirects to admin accounts page' do
emails = capture_emails { subject } emails = capture_emails { subject }

View File

@ -123,7 +123,7 @@ RSpec.describe Auth::SessionsController do
user.update(current_sign_in_at: 1.month.ago) user.update(current_sign_in_at: 1.month.ago)
end end
it 'logs the user in and sends suspicious email and redirects home', :sidekiq_inline do it 'logs the user in and sends suspicious email and redirects home', :inline_jobs do
emails = capture_emails { subject } emails = capture_emails { subject }
expect(response) expect(response)
@ -263,7 +263,7 @@ RSpec.describe Auth::SessionsController do
travel_to '2023-12-20T10:00:00Z' travel_to '2023-12-20T10:00:00Z'
end end
it 'does not log the user in, sets a flash message, and sends a suspicious sign in email', :sidekiq_inline do it 'does not log the user in, sets a flash message, and sends a suspicious sign in email', :inline_jobs do
emails = capture_emails do emails = capture_emails do
Auth::SessionsController::MAX_2FA_ATTEMPTS_PER_HOUR.times do Auth::SessionsController::MAX_2FA_ATTEMPTS_PER_HOUR.times do
post :create, params: { user: { otp_attempt: '1234' } }, session: { attempt_user_id: user.id, attempt_user_updated_at: user.updated_at.to_s } post :create, params: { user: { otp_attempt: '1234' } }, session: { attempt_user_id: user.id, attempt_user_updated_at: user.updated_at.to_s }

View File

@ -75,7 +75,7 @@ describe UserTrackingConcern do
expect(redis.ttl("account:#{user.account_id}:regeneration")).to be >= 0 expect(redis.ttl("account:#{user.account_id}:regeneration")).to be >= 0
end end
it 'regenerates feed when sign in is older than two weeks', :sidekiq_inline do it 'regenerates feed when sign in is older than two weeks', :inline_jobs do
get :show get :show
expect_updated_sign_in_at(user) expect_updated_sign_in_at(user)

View File

@ -17,7 +17,7 @@ RSpec.describe Disputes::AppealsController do
let(:strike) { Fabricate(:account_warning, target_account: current_user.account) } let(:strike) { Fabricate(:account_warning, target_account: current_user.account) }
let(:params) { { strike_id: strike.id, appeal: { text: 'Foo' } } } let(:params) { { strike_id: strike.id, appeal: { text: 'Foo' } } }
it 'notifies staff about new appeal and redirects back to strike page', :sidekiq_inline do it 'notifies staff about new appeal and redirects back to strike page', :inline_jobs do
emails = capture_emails { subject } emails = capture_emails { subject }
expect(emails.size) expect(emails.size)
@ -36,7 +36,7 @@ RSpec.describe Disputes::AppealsController do
let(:strike) { Fabricate(:account_warning, target_account: current_user.account) } let(:strike) { Fabricate(:account_warning, target_account: current_user.account) }
let(:params) { { strike_id: strike.id, appeal: { text: '' } } } let(:params) { { strike_id: strike.id, appeal: { text: '' } } }
it 'does not send email and renders strike show page', :sidekiq_inline do it 'does not send email and renders strike show page', :inline_jobs do
emails = capture_emails { subject } emails = capture_emails { subject }
expect(emails).to be_empty expect(emails).to be_empty

View File

@ -50,7 +50,7 @@ describe Settings::DeletesController do
delete :destroy, params: { form_delete_confirmation: { password: 'petsmoldoggos' } } delete :destroy, params: { form_delete_confirmation: { password: 'petsmoldoggos' } }
end end
it 'removes user record and redirects', :aggregate_failures, :sidekiq_inline do it 'removes user record and redirects', :aggregate_failures, :inline_jobs do
expect(response).to redirect_to '/auth/sign_in' expect(response).to redirect_to '/auth/sign_in'
expect(User.find_by(id: user.id)).to be_nil expect(User.find_by(id: user.id)).to be_nil
expect(user.account.reload).to be_suspended expect(user.account.reload).to be_suspended

View File

@ -47,7 +47,7 @@ RSpec.describe ActivityPub::Activity::Delete do
expect(Status.find_by(id: status.id)).to be_nil expect(Status.find_by(id: status.id)).to be_nil
end 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 expect(a_request(:post, 'http://example.com/inbox')).to have_been_made.once
end end

View File

@ -38,7 +38,7 @@ RSpec.describe ActivityPub::Activity::Move do
subject.perform subject.perform
end 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 it 'sets moved account on old account' do
expect(old_account.reload.moved_to_account_id).to eq new_account.id expect(old_account.reload.moved_to_account_id).to eq new_account.id
end end

View File

@ -192,6 +192,35 @@ RSpec.describe LinkDetailsExtractor do
include_examples 'structured data' include_examples 'structured data'
end 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 }
<!doctype html>
<html>
<body>
<script type="application/ld+json">
#{ld_json}
</script>
</body>
</html>
HTML
it 'joins author names' do
expect(subject.author_name).to eq 'Author 1, Author 2'
end
end
end end
context 'when Open Graph protocol data is present' do context 'when Open Graph protocol data is present' do

View File

@ -69,7 +69,7 @@ RSpec.describe Admin::AccountAction do
end end
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 } emails = capture_emails { subject }
expect(emails).to contain_exactly( expect(emails).to contain_exactly(

View File

@ -2,7 +2,7 @@
require 'rails_helper' require 'rails_helper'
RSpec.describe CustomEmoji, :paperclip_processing do RSpec.describe CustomEmoji, :attachment_processing do
describe '#search' do describe '#search' do
subject { described_class.search(search_term) } subject { described_class.search(search_term) }

View File

@ -2,7 +2,7 @@
require 'rails_helper' require 'rails_helper'
RSpec.describe MediaAttachment, :paperclip_processing do RSpec.describe MediaAttachment, :attachment_processing do
describe 'local?' do describe 'local?' do
subject { media_attachment.local? } subject { media_attachment.local? }

View File

@ -284,6 +284,41 @@ RSpec.describe Status do
end end
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 describe '.mutes_map' do
subject { described_class.mutes_map([status.conversation.id], account) } subject { described_class.mutes_map([status.conversation.id], account) }

View File

@ -101,7 +101,7 @@ RSpec.describe User do
end end
end end
describe 'scopes', :sidekiq_inline do describe 'scopes', :inline_jobs do
describe 'recent' do describe 'recent' do
it 'returns an array of recent users ordered by id' do it 'returns an array of recent users ordered by id' do
first_user = Fabricate(:user) first_user = Fabricate(:user)
@ -507,7 +507,7 @@ RSpec.describe User do
context 'when user is new' do context 'when user is new' do
let(:confirmed_at) { nil } 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 } emails = capture_emails { subject }
expect(user.confirmed_at).to be_present expect(user.confirmed_at).to be_present

View File

@ -120,7 +120,7 @@ RSpec.configure do |config|
end end
config.around do |example| config.around do |example|
if example.metadata[:sidekiq_inline] == true if example.metadata[:inline_jobs] == true
Sidekiq::Testing.inline! Sidekiq::Testing.inline!
else else
Sidekiq::Testing.fake! Sidekiq::Testing.fake!
@ -137,7 +137,7 @@ RSpec.configure do |config|
end end
config.before do |example| 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 allow_any_instance_of(Paperclip::Attachment).to receive(:post_process).and_return(true) # rubocop:disable RSpec/AnyInstance
end end
end end

View File

@ -10,7 +10,7 @@ RSpec.describe 'Account actions' do
let(:headers) { { 'Authorization' => "Bearer #{token.token}" } } let(:headers) { { 'Authorization' => "Bearer #{token.token}" } }
shared_examples 'a successful notification delivery' do 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 } emails = capture_emails { subject }
expect(emails.size) expect(emails.size)

View File

@ -10,7 +10,7 @@ RSpec.describe 'API V1 Conversations' do
let(:other) { Fabricate(:user) } let(:other) { Fabricate(:user) }
describe 'GET /api/v1/conversations', :sidekiq_inline do describe 'GET /api/v1/conversations', :inline_jobs do
before do before do
user.account.follow!(other.account) user.account.follow!(other.account)
PostStatusService.new.call(other.account, text: 'Hey @alice', visibility: 'direct') PostStatusService.new.call(other.account, text: 'Hey @alice', visibility: 'direct')

View File

@ -147,7 +147,7 @@ RSpec.describe 'FeaturedTags' do
expect(body).to be_empty expect(body).to be_empty
end 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 delete "/api/v1/featured_tags/#{id}", headers: headers
featured_tag = FeaturedTag.find_by(id: id) featured_tag = FeaturedTag.find_by(id: id)

View File

@ -121,19 +121,19 @@ RSpec.describe 'Media' do
end end
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' } } let(:params) { { file: fixture_file_upload('attachment.jpg', 'image/jpeg'), description: 'jpeg image' } }
it_behaves_like 'a successful media upload', 'image' it_behaves_like 'a successful media upload', 'image'
end 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') } } let(:params) { { file: fixture_file_upload('attachment.gif', 'image/gif') } }
it_behaves_like 'a successful media upload', 'image' it_behaves_like 'a successful media upload', 'image'
end 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') } } let(:params) { { file: fixture_file_upload('attachment.webm', 'video/webm') } }
it_behaves_like 'a successful media upload', 'gifv' it_behaves_like 'a successful media upload', 'gifv'

View File

@ -8,7 +8,7 @@ RSpec.describe 'Policies' do
let(:scopes) { 'read:notifications write:notifications' } let(:scopes) { 'read:notifications write:notifications' }
let(:headers) { { 'Authorization' => "Bearer #{token.token}" } } 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 subject do
get '/api/v1/notifications/policy', headers: headers, params: params get '/api/v1/notifications/policy', headers: headers, params: params
end end

View File

@ -8,7 +8,7 @@ RSpec.describe 'Requests' do
let(:scopes) { 'read:notifications write:notifications' } let(:scopes) { 'read:notifications write:notifications' }
let(:headers) { { 'Authorization' => "Bearer #{token.token}" } } 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 subject do
get '/api/v1/notifications/requests', headers: headers, params: params get '/api/v1/notifications/requests', headers: headers, params: params
end end

View File

@ -8,7 +8,7 @@ RSpec.describe 'Notifications' do
let(:scopes) { 'read:notifications write:notifications' } let(:scopes) { 'read:notifications write:notifications' }
let(:headers) { { 'Authorization' => "Bearer #{token.token}" } } let(:headers) { { 'Authorization' => "Bearer #{token.token}" } }
describe 'GET /api/v1/notifications', :sidekiq_inline do describe 'GET /api/v1/notifications', :inline_jobs do
subject do subject do
get '/api/v1/notifications', headers: headers, params: params get '/api/v1/notifications', headers: headers, params: params
end end

View File

@ -33,7 +33,7 @@ RSpec.describe 'Reports' do
it_behaves_like 'forbidden for wrong scope', 'read read:reports' 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 } emails = capture_emails { subject }
expect(response).to have_http_status(200) expect(response).to have_http_status(200)

View File

@ -2,7 +2,7 @@
require 'rails_helper' require 'rails_helper'
RSpec.describe 'Favourites', :sidekiq_inline do RSpec.describe 'Favourites', :inline_jobs do
let(:user) { Fabricate(:user) } let(:user) { Fabricate(:user) }
let(:scopes) { 'write:favourites' } let(:scopes) { 'write:favourites' }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) } let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }

View File

@ -41,7 +41,7 @@ describe 'API V1 Statuses Reblogs' do
end end
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 context 'with public status' do
let(:status) { Fabricate(:status, account: user.account) } let(:status) { Fabricate(:status, account: user.account) }

View File

@ -2,7 +2,7 @@
require 'rails_helper' require 'rails_helper'
describe 'Home', :sidekiq_inline do describe 'Home', :inline_jobs do
let(:user) { Fabricate(:user) } let(:user) { Fabricate(:user) }
let(:scopes) { 'read:statuses' } let(:scopes) { 'read:statuses' }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) } let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }

View File

@ -2,7 +2,7 @@
require 'rails_helper' require 'rails_helper'
RSpec.describe 'Media API', :paperclip_processing do RSpec.describe 'Media API', :attachment_processing do
let(:user) { Fabricate(:user) } let(:user) { Fabricate(:user) }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) } let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
let(:scopes) { 'write' } let(:scopes) { 'write' }

View File

@ -8,7 +8,7 @@ RSpec.describe 'Notifications' do
let(:scopes) { 'read:notifications write:notifications' } let(:scopes) { 'read:notifications write:notifications' }
let(:headers) { { 'Authorization' => "Bearer #{token.token}" } } 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 subject do
get '/api/v2_alpha/notifications', headers: headers, params: params get '/api/v2_alpha/notifications', headers: headers, params: params
end end

View File

@ -2,7 +2,7 @@
require 'rails_helper' require 'rails_helper'
describe Account::StatusesSearch, :sidekiq_inline do describe Account::StatusesSearch, :inline_jobs do
describe 'a non-indexable account becoming indexable' do describe 'a non-indexable account becoming indexable' do
let(:account) { Account.find_by(username: 'search_test_account_1') } let(:account) { Account.find_by(username: 'search_test_account_1') }

View File

@ -225,7 +225,7 @@ RSpec.describe ActivityPub::FetchRemoteStatusService do
end end
end end
context 'with statuses referencing other statuses', :sidekiq_inline do context 'with statuses referencing other statuses', :inline_jobs do
before do before do
stub_const 'ActivityPub::FetchRemoteStatusService::DISCOVERIES_PER_REQUEST', 5 stub_const 'ActivityPub::FetchRemoteStatusService::DISCOVERIES_PER_REQUEST', 5
end end

View File

@ -224,7 +224,7 @@ RSpec.describe ActivityPub::ProcessAccountService do
end end
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) } expect { subject.call('user1', 'foo.test', payload) }
.to create_some_remote_accounts .to create_some_remote_accounts
.and create_fewer_than_rate_limit_accounts .and create_fewer_than_rate_limit_accounts

View File

@ -2,7 +2,7 @@
require 'rails_helper' require 'rails_helper'
RSpec.describe AppealService, :sidekiq_inline do RSpec.describe AppealService, :inline_jobs do
describe '#call' do describe '#call' do
let!(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } let!(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }

View File

@ -41,7 +41,7 @@ RSpec.describe AuthorizeFollowService do
expect(bob.following?(sender)).to be true expect(bob.following?(sender)).to be true
end 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 expect(a_request(:post, bob.inbox_url)).to have_been_made.once
end end
end end

View File

@ -2,7 +2,7 @@
require 'rails_helper' require 'rails_helper'
RSpec.describe BatchedRemoveStatusService, :sidekiq_inline do RSpec.describe BatchedRemoveStatusService, :inline_jobs do
subject { described_class.new } subject { described_class.new }
let!(:alice) { Fabricate(:account) } let!(:alice) { Fabricate(:account) }

View File

@ -49,7 +49,7 @@ RSpec.describe BlockDomainService do
end end
describe 'for a silence with reject media' do 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)) subject.call(DomainBlock.create!(domain: 'evil.org', severity: :silence, reject_media: true))
expect(DomainBlock.blocked?('evil.org')).to be false expect(DomainBlock.blocked?('evil.org')).to be false

View File

@ -33,7 +33,7 @@ RSpec.describe BlockService do
expect(sender.blocking?(bob)).to be true expect(sender.blocking?(bob)).to be true
end 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 expect(a_request(:post, 'http://example.com/inbox')).to have_been_made.once
end end
end end

View File

@ -62,7 +62,7 @@ RSpec.describe DeleteAccountService do
end end
end end
describe '#call on local account', :sidekiq_inline do describe '#call on local account', :inline_jobs do
before do before do
stub_request(:post, remote_alice.inbox_url).to_return(status: 201) stub_request(:post, remote_alice.inbox_url).to_return(status: 201)
stub_request(:post, remote_bob.inbox_url).to_return(status: 201) stub_request(:post, remote_bob.inbox_url).to_return(status: 201)
@ -83,7 +83,7 @@ RSpec.describe DeleteAccountService do
end end
end end
describe '#call on remote account', :sidekiq_inline do describe '#call on remote account', :inline_jobs do
before do before do
stub_request(:post, account.inbox_url).to_return(status: 201) stub_request(:post, account.inbox_url).to_return(status: 201)
end end

View File

@ -38,7 +38,7 @@ RSpec.describe FanOutOnWriteService do
expect(home_feed_of(alice)).to include status.id expect(home_feed_of(alice)).to include status.id
end 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(bob)).to include status.id
expect(home_feed_of(tom)).to include status.id expect(home_feed_of(tom)).to include status.id
end end
@ -62,7 +62,7 @@ RSpec.describe FanOutOnWriteService do
expect(home_feed_of(alice)).to include status.id expect(home_feed_of(alice)).to include status.id
end 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 expect(home_feed_of(bob)).to include status.id
end end
@ -83,7 +83,7 @@ RSpec.describe FanOutOnWriteService do
expect(home_feed_of(alice)).to include status.id expect(home_feed_of(alice)).to include status.id
end 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(bob)).to include status.id
expect(home_feed_of(tom)).to include status.id expect(home_feed_of(tom)).to include status.id
end end
@ -101,7 +101,7 @@ RSpec.describe FanOutOnWriteService do
expect(home_feed_of(alice)).to include status.id expect(home_feed_of(alice)).to include status.id
end 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 expect(home_feed_of(bob)).to include status.id
end end

View File

@ -33,7 +33,7 @@ RSpec.describe FavouriteService do
expect(status.favourites.first).to_not be_nil expect(status.favourites.first).to_not be_nil
end 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 expect(a_request(:post, 'http://example.com/inbox')).to have_been_made.once
end end
end end

View File

@ -150,7 +150,7 @@ RSpec.describe FollowService do
expect(FollowRequest.find_by(account: sender, target_account: bob)).to_not be_nil expect(FollowRequest.find_by(account: sender, target_account: bob)).to_not be_nil
end 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 expect(a_request(:post, 'http://example.com/inbox')).to have_been_made.once
end end
end end

View File

@ -2,7 +2,7 @@
require 'rails_helper' require 'rails_helper'
RSpec.describe ImportService, :sidekiq_inline do RSpec.describe ImportService, :inline_jobs do
include RoutingHelper include RoutingHelper
let!(:account) { Fabricate(:account, locked: false) } let!(:account) { Fabricate(:account, locked: false) }

View File

@ -17,7 +17,7 @@ RSpec.describe MuteService do
redis.del(home_timeline_key) redis.del(home_timeline_key)
end 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, status)
FeedManager.instance.push_to_home(account, other_account_status) FeedManager.instance.push_to_home(account, other_account_status)

View File

@ -105,7 +105,7 @@ RSpec.describe NotifyService do
context 'when email notification is enabled' do context 'when email notification is enabled' do
let(:enabled) { true } let(:enabled) { true }
it 'sends email', :sidekiq_inline do it 'sends email', :inline_jobs do
emails = capture_emails { subject } emails = capture_emails { subject }
expect(emails.size) expect(emails.size)

View File

@ -41,7 +41,7 @@ RSpec.describe RejectFollowService do
expect(bob.following?(sender)).to be false expect(bob.following?(sender)).to be false
end 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 expect(a_request(:post, bob.inbox_url)).to have_been_made.once
end end
end end

View File

@ -33,7 +33,7 @@ RSpec.describe RemoveFromFollowersService do
expect(bob.followed_by?(sender)).to be false expect(bob.followed_by?(sender)).to be false
end 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 expect(a_request(:post, sender.inbox_url)).to have_been_made.once
end end
end end

View File

@ -2,7 +2,7 @@
require 'rails_helper' require 'rails_helper'
RSpec.describe RemoveStatusService, :sidekiq_inline do RSpec.describe RemoveStatusService, :inline_jobs do
subject { described_class.new } subject { described_class.new }
let!(:alice) { Fabricate(:account) } let!(:alice) { Fabricate(:account) }

View File

@ -23,7 +23,7 @@ RSpec.describe ReportService do
stub_request(:post, 'http://example.com/inbox').to_return(status: 200) stub_request(:post, 'http://example.com/inbox').to_return(status: 200)
end end
context 'when forward is true', :sidekiq_inline do context 'when forward is true', :inline_jobs do
let(:forward) { true } let(:forward) { true }
it 'sends ActivityPub payload when forward is true' do it 'sends ActivityPub payload when forward is true' do

View File

@ -195,7 +195,7 @@ RSpec.describe ResolveAccountService do
expect(account.uri).to eq 'https://ap.example.com/users/foo' expect(account.uri).to eq 'https://ap.example.com/users/foo'
end end
it 'merges accounts', :sidekiq_inline do it 'merges accounts', :inline_jobs do
account = subject.call('foo@ap.example.com') account = subject.call('foo@ap.example.com')
expect(status.reload.account_id).to eq account.id expect(status.reload.account_id).to eq account.id

View File

@ -2,7 +2,7 @@
require 'rails_helper' require 'rails_helper'
RSpec.describe SuspendAccountService, :sidekiq_inline do RSpec.describe SuspendAccountService, :inline_jobs do
shared_examples 'common behavior' do shared_examples 'common behavior' do
subject { described_class.new.call(account) } subject { described_class.new.call(account) }

View File

@ -13,7 +13,7 @@ RSpec.describe UnallowDomainService do
let!(:already_banned_account) { Fabricate(:account, username: 'badguy', domain: bad_domain, suspended: true, silenced: true) } let!(:already_banned_account) { Fabricate(:account, username: 'badguy', domain: bad_domain, suspended: true, silenced: true) }
let!(:domain_allow) { Fabricate(:domain_allow, domain: bad_domain) } 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 before do
allow(Rails.configuration.x).to receive(:limited_federation_mode).and_return(true) allow(Rails.configuration.x).to receive(:limited_federation_mode).and_return(true)
end end

View File

@ -33,7 +33,7 @@ RSpec.describe UnblockService do
expect(sender.blocking?(bob)).to be false expect(sender.blocking?(bob)).to be false
end 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 expect(a_request(:post, 'http://example.com/inbox')).to have_been_made.once
end end
end end

View File

@ -20,7 +20,7 @@ RSpec.describe UnfollowService do
end end
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') } let(:bob) { Fabricate(:account, username: 'bob', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox') }
before do before do
@ -38,7 +38,7 @@ RSpec.describe UnfollowService do
end end
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') } let(:bob) { Fabricate(:account, username: 'bob', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox') }
before do before do

View File

@ -45,7 +45,7 @@ RSpec.describe UnsuspendAccountService do
remote_follower.follow!(account) remote_follower.follow!(account)
end 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 subject
expect_feeds_merged expect_feeds_merged

View File

@ -5,7 +5,7 @@ require 'rails_helper'
RSpec.describe UpdateAccountService do RSpec.describe UpdateAccountService do
subject { described_class.new } 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(:account) { Fabricate(:account, locked: true) }
let(:alice) { Fabricate(:account) } let(:alice) { Fabricate(:account) }
let(:bob) { Fabricate(:account) } let(:bob) { Fabricate(:account) }

View File

@ -1,7 +1,7 @@
# frozen_string_literal: true # frozen_string_literal: true
shared_examples 'AccountAvatar' do |fabricator| shared_examples 'AccountAvatar' do |fabricator|
describe 'static avatars', :paperclip_processing do describe 'static avatars', :attachment_processing do
describe 'when GIF' do describe 'when GIF' do
it 'creates a png static style' do it 'creates a png static style' do
account = Fabricate(fabricator, avatar: attachment_fixture('avatar.gif')) account = Fabricate(fabricator, avatar: attachment_fixture('avatar.gif'))
@ -17,7 +17,7 @@ shared_examples 'AccountAvatar' do |fabricator|
end end
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(:base64_attachment) { "data:image/jpeg;base64,#{Base64.encode64(attachment_fixture('attachment.jpg').read)}" }
let(:account) { Fabricate(fabricator, avatar: base64_attachment) } let(:account) { Fabricate(fabricator, avatar: base64_attachment) }

View File

@ -1,7 +1,7 @@
# frozen_string_literal: true # frozen_string_literal: true
shared_examples 'AccountHeader' do |fabricator| 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(:base64_attachment) { "data:image/jpeg;base64,#{Base64.encode64(attachment_fixture('attachment.jpg').read)}" }
let(:account) { Fabricate(fabricator, header: base64_attachment) } let(:account) { Fabricate(fabricator, header: base64_attachment) }

View File

@ -48,7 +48,7 @@ describe 'Admin::Accounts' do
end end
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 it 'rejects and removes the account' do
batch_checkbox_for(unapproved_user_account).check batch_checkbox_for(unapproved_user_account).check

View File

@ -2,7 +2,7 @@
require 'rails_helper' require 'rails_helper'
describe 'NewStatuses', :js, :sidekiq_inline, :streaming do describe 'NewStatuses', :inline_jobs, :js, :streaming do
include ProfileStories include ProfileStories
subject { page } subject { page }

View File

@ -2,7 +2,7 @@
require 'rails_helper' require 'rails_helper'
describe 'OCR', :js, :paperclip_processing, :sidekiq_inline, :streaming do describe 'OCR', :attachment_processing, :inline_jobs, :js, :streaming do
include ProfileStories include ProfileStories
let(:email) { 'test@example.com' } let(:email) { 'test@example.com' }

View File

@ -2,7 +2,7 @@
require 'rails_helper' require 'rails_helper'
describe 'report interface', :js, :paperclip_processing, :streaming do describe 'report interface', :attachment_processing, :js, :streaming do
include ProfileStories include ProfileStories
let(:email) { 'admin@example.com' } let(:email) { 'admin@example.com' }

View File

@ -14,7 +14,7 @@ describe BackupWorker do
let(:backup) { Fabricate(:backup) } let(:backup) { Fabricate(:backup) }
let!(:other_backup) { Fabricate(:backup, user: backup.user) } 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) } emails = capture_emails { worker.perform(backup.id) }
expect(service).to have_received(:call).with(backup) expect(service).to have_received(:call).with(backup)

View File

@ -104,7 +104,7 @@ describe MoveWorker do
end end
shared_examples 'lists handling' do 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) subject.perform(source_account.id, target_account.id)
expect(list.accounts.include?(target_account)).to be true expect(list.accounts.include?(target_account)).to be true

View File

@ -2,7 +2,7 @@
require 'rails_helper' require 'rails_helper'
describe PostProcessMediaWorker, :paperclip_processing do describe PostProcessMediaWorker, :attachment_processing do
let(:worker) { described_class.new } let(:worker) { described_class.new }
describe '#perform' do describe '#perform' do

477
yarn.lock
View File

@ -1558,13 +1558,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/cascade-layer-name-parser@npm:^1.0.12": "@csstools/cascade-layer-name-parser@npm:^1.0.13":
version: 1.0.12 version: 1.0.13
resolution: "@csstools/cascade-layer-name-parser@npm:1.0.12" resolution: "@csstools/cascade-layer-name-parser@npm:1.0.13"
peerDependencies: peerDependencies:
"@csstools/css-parser-algorithms": ^2.7.0 "@csstools/css-parser-algorithms": ^2.7.1
"@csstools/css-tokenizer": ^2.3.2 "@csstools/css-tokenizer": ^2.4.1
checksum: 10c0/5f92aefcbb3f4b660cf7b0db54f6a4ba21a32fa1b64ea4f050a6370233152d4f561ecf5c8e98ca231e73c16e0d9f75b20b0a65153e18b14957658c81e0f68213 checksum: 10c0/a6412fc8601af1baadc8195934aa668d3476e799891c9d0883390f31ec8678e9b565ac14d919bec633bbc086657ac12aa4cd852c718851a2d34517ee6856ff8e
languageName: node languageName: node
linkType: hard linkType: hard
@ -1575,52 +1575,52 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/css-calc@npm:^1.2.3": "@csstools/css-calc@npm:^1.2.4":
version: 1.2.3 version: 1.2.4
resolution: "@csstools/css-calc@npm:1.2.3" resolution: "@csstools/css-calc@npm:1.2.4"
peerDependencies: peerDependencies:
"@csstools/css-parser-algorithms": ^2.7.0 "@csstools/css-parser-algorithms": ^2.7.1
"@csstools/css-tokenizer": ^2.3.2 "@csstools/css-tokenizer": ^2.4.1
checksum: 10c0/fb34767ea9638b837167bcecaf945bcc0c5e8f0d811067c4e8c7a57bc8f0955f61107b1ed5e017b95c54acacc8088473e5497a9986bee95b37ec92999e792871 checksum: 10c0/6233746eb642797b7fbc2cf6e7651e95700b294e78e3c29e8730c3236bb92cf62903efb6e54639e8f877683c40646e137c95e615c4450809b21b61a6192888ca
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/css-color-parser@npm:^2.0.3": "@csstools/css-color-parser@npm:^2.0.4":
version: 2.0.3 version: 2.0.4
resolution: "@csstools/css-color-parser@npm:2.0.3" resolution: "@csstools/css-color-parser@npm:2.0.4"
dependencies: dependencies:
"@csstools/color-helpers": "npm:^4.2.1" "@csstools/color-helpers": "npm:^4.2.1"
"@csstools/css-calc": "npm:^1.2.3" "@csstools/css-calc": "npm:^1.2.4"
peerDependencies: peerDependencies:
"@csstools/css-parser-algorithms": ^2.7.0 "@csstools/css-parser-algorithms": ^2.7.1
"@csstools/css-tokenizer": ^2.3.2 "@csstools/css-tokenizer": ^2.4.1
checksum: 10c0/d8860e6b9c65de4f90d4c21e4d66471fd858434cf63af80f812a900371343b753b86a256627e8bd024cb8903a6a0181d2d9c0c65ab5d78cf29d084a761e2adba checksum: 10c0/e009a2f34b6c328daad54262deb86b71c6a7a9a1da1db8ad39cf719641e1a728ed8ddbd23613d519d26deee33b89ba12cb15a6928718c1b3cc5e24ac1ed02f47
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/css-parser-algorithms@npm:^2.6.3, @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.0 version: 2.7.1
resolution: "@csstools/css-parser-algorithms@npm:2.7.0" resolution: "@csstools/css-parser-algorithms@npm:2.7.1"
peerDependencies: peerDependencies:
"@csstools/css-tokenizer": ^2.3.2 "@csstools/css-tokenizer": ^2.4.1
checksum: 10c0/fb84fefdf37c41d170f81b687bf1ee1847a970e51cc1fe3a320e3eaf225383ae9a3c4eb6208b83357dfe18c5114353d780e0c65f05d86d6435e5a9ad9334c834 checksum: 10c0/7d29bef6f5790ddb67d922ad232253bf910e4fa5293f5e4a5ed8b920ae9bd4e8171942df7d8943af23b42fd4e9fb460181394d20c97da9562e6ce98a875e8c47
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/css-tokenizer@npm:^2.3.1, @csstools/css-tokenizer@npm:^2.3.2": "@csstools/css-tokenizer@npm:^2.3.1, @csstools/css-tokenizer@npm:^2.4.1":
version: 2.3.2 version: 2.4.1
resolution: "@csstools/css-tokenizer@npm:2.3.2" resolution: "@csstools/css-tokenizer@npm:2.4.1"
checksum: 10c0/f7d0d8b3e9e2dcdc6547a387253a09dbbacaaffb5c8718bcd7f15dddeefdd441b73fc5f9fad3f03fabef3b37ec4b62be7ff79caab366427fa90eaf54cd8fc452 checksum: 10c0/fe71cee85ec7372da07083d088b6a704f43e5d3d2d8071c4b8a86fae60408b559a218a43f8625bf2f0be5c7f90c8f3ad20a1aae1921119a1c02b51c310cc2b6b
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/media-query-list-parser@npm:^2.1.11, @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.12 version: 2.1.13
resolution: "@csstools/media-query-list-parser@npm:2.1.12" resolution: "@csstools/media-query-list-parser@npm:2.1.13"
peerDependencies: peerDependencies:
"@csstools/css-parser-algorithms": ^2.7.0 "@csstools/css-parser-algorithms": ^2.7.1
"@csstools/css-tokenizer": ^2.3.2 "@csstools/css-tokenizer": ^2.4.1
checksum: 10c0/7395cc710d8f54670c1e7a418a88dcf1ae726316272294ec645f6d79a8e931f5d390ba7ed5d0141d29ad7280cd447b8773143dc7676659413de79228130e1a65 checksum: 10c0/8bf72342c15581b8f658633436d83c26a214056f6b960ff121b940271f4b1b5b07e9cc3990a73e684fb72319592f0c392408b4f0e08bbe242b2065aa456e2733
languageName: node languageName: node
linkType: hard linkType: hard
@ -1636,46 +1636,60 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/postcss-color-function@npm:^3.0.17": "@csstools/postcss-color-function@npm:^3.0.19":
version: 3.0.17 version: 3.0.19
resolution: "@csstools/postcss-color-function@npm:3.0.17" resolution: "@csstools/postcss-color-function@npm:3.0.19"
dependencies: dependencies:
"@csstools/css-color-parser": "npm:^2.0.3" "@csstools/css-color-parser": "npm:^2.0.4"
"@csstools/css-parser-algorithms": "npm:^2.7.0" "@csstools/css-parser-algorithms": "npm:^2.7.1"
"@csstools/css-tokenizer": "npm:^2.3.2" "@csstools/css-tokenizer": "npm:^2.4.1"
"@csstools/postcss-progressive-custom-properties": "npm:^3.2.0" "@csstools/postcss-progressive-custom-properties": "npm:^3.3.0"
"@csstools/utilities": "npm:^1.0.0" "@csstools/utilities": "npm:^1.0.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/6d347fc9fe65cb897c275c129103576e551b74a7c47a1a4dc8160da2fad7752bf51e3cfbff339f86b39c723efac33643168d2dfaac4d3624d072875d18a65a4b checksum: 10c0/067e33d7dfc32b56fe63d4f97464a3eaf27dde720961e44feab6076bd2c172dd4c1bad16aa37a922dcbba470756bd6a13e728d9e71eab6937d48d83873cd1879
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/postcss-color-mix-function@npm:^2.0.17": "@csstools/postcss-color-mix-function@npm:^2.0.19":
version: 2.0.17 version: 2.0.19
resolution: "@csstools/postcss-color-mix-function@npm:2.0.17" resolution: "@csstools/postcss-color-mix-function@npm:2.0.19"
dependencies: dependencies:
"@csstools/css-color-parser": "npm:^2.0.3" "@csstools/css-color-parser": "npm:^2.0.4"
"@csstools/css-parser-algorithms": "npm:^2.7.0" "@csstools/css-parser-algorithms": "npm:^2.7.1"
"@csstools/css-tokenizer": "npm:^2.3.2" "@csstools/css-tokenizer": "npm:^2.4.1"
"@csstools/postcss-progressive-custom-properties": "npm:^3.2.0" "@csstools/postcss-progressive-custom-properties": "npm:^3.3.0"
"@csstools/utilities": "npm:^1.0.0" "@csstools/utilities": "npm:^1.0.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/ba9a406ebe4caba6709878ee26debb06780be5cbf4e6ab7e902d79ca6e21ec6a8409b9dc0a5ef36fc4bf54bf2bd8f9642b72da8d7939145f99dc40fedd2be9d2 checksum: 10c0/e967d93672a065806dc78da0153f8b4f5087f7c3ddfe361eba4942780760d47b317124913c9b0dda7f9bfff1253f77d1b6debd8a6a2aa3a6c80e263101da5e8c
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/postcss-exponential-functions@npm:^1.0.8": "@csstools/postcss-content-alt-text@npm:^1.0.0":
version: 1.0.8 version: 1.0.0
resolution: "@csstools/postcss-exponential-functions@npm:1.0.8" resolution: "@csstools/postcss-content-alt-text@npm:1.0.0"
dependencies: dependencies:
"@csstools/css-calc": "npm:^1.2.3" "@csstools/css-parser-algorithms": "npm:^2.7.1"
"@csstools/css-parser-algorithms": "npm:^2.7.0" "@csstools/css-tokenizer": "npm:^2.4.1"
"@csstools/css-tokenizer": "npm:^2.3.2" "@csstools/postcss-progressive-custom-properties": "npm:^3.3.0"
"@csstools/utilities": "npm:^1.0.0"
peerDependencies: peerDependencies:
postcss: ^8.4 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 languageName: node
linkType: hard linkType: hard
@ -1691,59 +1705,59 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/postcss-gamut-mapping@npm:^1.0.10": "@csstools/postcss-gamut-mapping@npm:^1.0.11":
version: 1.0.10 version: 1.0.11
resolution: "@csstools/postcss-gamut-mapping@npm:1.0.10" resolution: "@csstools/postcss-gamut-mapping@npm:1.0.11"
dependencies: dependencies:
"@csstools/css-color-parser": "npm:^2.0.3" "@csstools/css-color-parser": "npm:^2.0.4"
"@csstools/css-parser-algorithms": "npm:^2.7.0" "@csstools/css-parser-algorithms": "npm:^2.7.1"
"@csstools/css-tokenizer": "npm:^2.3.2" "@csstools/css-tokenizer": "npm:^2.4.1"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/6c2dab6a84f81904bed89cb584bd9bc6a904b49a4fa315b17be65c7d68baefe592561ee439660d5602b7481bac3be9a93189dc45404764524495400f34c6b6e6 checksum: 10c0/29e755013f1d1de34eb62a931ed410d2830ca3dfc81476cb3c72d9d3260b85a9adedc51aa548550c6e308f3f9640c489e6953db40e9cac9835d0421d5b14ef1f
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/postcss-gradients-interpolation-method@npm:^4.0.18": "@csstools/postcss-gradients-interpolation-method@npm:^4.0.20":
version: 4.0.18 version: 4.0.20
resolution: "@csstools/postcss-gradients-interpolation-method@npm:4.0.18" resolution: "@csstools/postcss-gradients-interpolation-method@npm:4.0.20"
dependencies: dependencies:
"@csstools/css-color-parser": "npm:^2.0.3" "@csstools/css-color-parser": "npm:^2.0.4"
"@csstools/css-parser-algorithms": "npm:^2.7.0" "@csstools/css-parser-algorithms": "npm:^2.7.1"
"@csstools/css-tokenizer": "npm:^2.3.2" "@csstools/css-tokenizer": "npm:^2.4.1"
"@csstools/postcss-progressive-custom-properties": "npm:^3.2.0" "@csstools/postcss-progressive-custom-properties": "npm:^3.3.0"
"@csstools/utilities": "npm:^1.0.0" "@csstools/utilities": "npm:^1.0.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/23c431068ac205392b4953dbce411e208e79e221ba8030c5e23c0b82e8fd53bc3bc4f2cdc47050f5d91a4ac69cb80f4f1853b213aa8072fa60a6cb6ff0621e04 checksum: 10c0/6588825a72a1471e2d6036c8cf7dbad2bf05f369d96dbdd68ff5ce7ff91803b8ee1146f5f1bf6f3ab6299944549da872914664c3f9e8ae5a31847f76f0085c74
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/postcss-hwb-function@npm:^3.0.16": "@csstools/postcss-hwb-function@npm:^3.0.18":
version: 3.0.16 version: 3.0.18
resolution: "@csstools/postcss-hwb-function@npm:3.0.16" resolution: "@csstools/postcss-hwb-function@npm:3.0.18"
dependencies: dependencies:
"@csstools/css-color-parser": "npm:^2.0.3" "@csstools/css-color-parser": "npm:^2.0.4"
"@csstools/css-parser-algorithms": "npm:^2.7.0" "@csstools/css-parser-algorithms": "npm:^2.7.1"
"@csstools/css-tokenizer": "npm:^2.3.2" "@csstools/css-tokenizer": "npm:^2.4.1"
"@csstools/postcss-progressive-custom-properties": "npm:^3.2.0" "@csstools/postcss-progressive-custom-properties": "npm:^3.3.0"
"@csstools/utilities": "npm:^1.0.0" "@csstools/utilities": "npm:^1.0.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/4deca8831a69038aff719a77df92c53578bb28e23cc61dc4ea7b1d912b1b685683a9c6232396c2616948ac2e8488ad1e2009c9c8ed30c493d97ba8ad37b6418d checksum: 10c0/e9d76b0b2f9c54920124ca1804b49e3f5b26e003729418b5ef4b340ff1baa4779da1c02be618888fdbcc2d0747182352efbbd3ffe128e2417928c35c25443789
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/postcss-ic-unit@npm:^3.0.6": "@csstools/postcss-ic-unit@npm:^3.0.7":
version: 3.0.6 version: 3.0.7
resolution: "@csstools/postcss-ic-unit@npm:3.0.6" resolution: "@csstools/postcss-ic-unit@npm:3.0.7"
dependencies: 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" "@csstools/utilities": "npm:^1.0.0"
postcss-value-parser: "npm:^4.2.0" postcss-value-parser: "npm:^4.2.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/a4b962327d433419fdcfdcf620ce6a5cf09aa3c93029ad08b035df1e2bc35caae31de49f1d14218de0656fced35c0d2e07e5ff7b8099c29dbfb40395fc283234 checksum: 10c0/2add905b75860c64d7174886fecfc76d86e3818f42f003f4bbfc0604cc7f0f31c6dbd1651e6b9512fea876190d80033578ae49e813b64b17c8cf3b1f03d8e146
languageName: node languageName: node
linkType: hard linkType: hard
@ -1768,17 +1782,17 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/postcss-light-dark-function@npm:^1.0.6": "@csstools/postcss-light-dark-function@npm:^1.0.8":
version: 1.0.6 version: 1.0.8
resolution: "@csstools/postcss-light-dark-function@npm:1.0.6" resolution: "@csstools/postcss-light-dark-function@npm:1.0.8"
dependencies: dependencies:
"@csstools/css-parser-algorithms": "npm:^2.7.0" "@csstools/css-parser-algorithms": "npm:^2.7.1"
"@csstools/css-tokenizer": "npm:^2.3.2" "@csstools/css-tokenizer": "npm:^2.4.1"
"@csstools/postcss-progressive-custom-properties": "npm:^3.2.0" "@csstools/postcss-progressive-custom-properties": "npm:^3.3.0"
"@csstools/utilities": "npm:^1.0.0" "@csstools/utilities": "npm:^1.0.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/6b2c64860d789cd3e3ce875c01259333911f6e32a751a7475604de8022c13abcb578e5cb941b51bd3a2022bee883df3f6b64800c6e3559b06da283d968aeb615 checksum: 10c0/78fa6d799d38f14af1b32b534eedbec9478033e1fbc5a4e820f2421e865673d010b69b391546686ceb408ead64d79bb4eba2a4fb1fc9f0de70ff21e3ff8477c6
languageName: node languageName: node
linkType: hard linkType: hard
@ -1820,42 +1834,42 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/postcss-logical-viewport-units@npm:^2.0.10": "@csstools/postcss-logical-viewport-units@npm:^2.0.11":
version: 2.0.10 version: 2.0.11
resolution: "@csstools/postcss-logical-viewport-units@npm:2.0.10" resolution: "@csstools/postcss-logical-viewport-units@npm:2.0.11"
dependencies: dependencies:
"@csstools/css-tokenizer": "npm:^2.3.2" "@csstools/css-tokenizer": "npm:^2.4.1"
"@csstools/utilities": "npm:^1.0.0" "@csstools/utilities": "npm:^1.0.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/fe142b11e0e8ccab4667cc5db90b45e67b7d11eaf5c038e91d867e1b18a315ef0859114185aeb48fdc1ce05986be8b644d6157fe9e19da7281f7023c99eb8877 checksum: 10c0/20207e9b7fc3ab52df5fcd06fde71fca4fd22bd6bd451cfc2ec6ea69994708b7fc5381e203dc4367293a8de00b1eca7a3ebe89cfa9b933d2f2cb8e3ac4d5aa86
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/postcss-media-minmax@npm:^1.1.7": "@csstools/postcss-media-minmax@npm:^1.1.8":
version: 1.1.7 version: 1.1.8
resolution: "@csstools/postcss-media-minmax@npm:1.1.7" resolution: "@csstools/postcss-media-minmax@npm:1.1.8"
dependencies: dependencies:
"@csstools/css-calc": "npm:^1.2.3" "@csstools/css-calc": "npm:^1.2.4"
"@csstools/css-parser-algorithms": "npm:^2.7.0" "@csstools/css-parser-algorithms": "npm:^2.7.1"
"@csstools/css-tokenizer": "npm:^2.3.2" "@csstools/css-tokenizer": "npm:^2.4.1"
"@csstools/media-query-list-parser": "npm:^2.1.12" "@csstools/media-query-list-parser": "npm:^2.1.13"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/a02943a17b540cbd909b55bbb1f8c9331badc51b613279bbdb7127c9921a5d0675bb41675a3b4d0f15e9586120e5a96d9b9786b63b2c594fbb3a238e860c6ad8 checksum: 10c0/7d666905282c7a89387dbce84f3429bad04870e0de264c5b1ce3e6f042b8eb72d585a18b2d7ac5e1a8c7f6785892da3cc7f6ea0b48069b06e9d383bdbc149b4a
languageName: node languageName: node
linkType: hard linkType: hard
"@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.10 version: 2.0.11
resolution: "@csstools/postcss-media-queries-aspect-ratio-number-values@npm:2.0.10" resolution: "@csstools/postcss-media-queries-aspect-ratio-number-values@npm:2.0.11"
dependencies: dependencies:
"@csstools/css-parser-algorithms": "npm:^2.7.0" "@csstools/css-parser-algorithms": "npm:^2.7.1"
"@csstools/css-tokenizer": "npm:^2.3.2" "@csstools/css-tokenizer": "npm:^2.4.1"
"@csstools/media-query-list-parser": "npm:^2.1.12" "@csstools/media-query-list-parser": "npm:^2.1.13"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/d7879e72df98d9fe2e5d85a64837e7a73c2df1aea8659d65516f0acb070317edd353531882f0bdfd81510703d1da30d6da861052a0bda85fde1f9eab94b1e467 checksum: 10c0/b4023a1951b7661196332852ce714a4e2fb4f1a67164ec0944e28a009b389e59c67e9de790920fcd082b122276414dd39c12ae12a4566e59e1bbcc794560a870
languageName: node languageName: node
linkType: hard linkType: hard
@ -1882,44 +1896,44 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/postcss-oklab-function@npm:^3.0.17": "@csstools/postcss-oklab-function@npm:^3.0.19":
version: 3.0.17 version: 3.0.19
resolution: "@csstools/postcss-oklab-function@npm:3.0.17" resolution: "@csstools/postcss-oklab-function@npm:3.0.19"
dependencies: dependencies:
"@csstools/css-color-parser": "npm:^2.0.3" "@csstools/css-color-parser": "npm:^2.0.4"
"@csstools/css-parser-algorithms": "npm:^2.7.0" "@csstools/css-parser-algorithms": "npm:^2.7.1"
"@csstools/css-tokenizer": "npm:^2.3.2" "@csstools/css-tokenizer": "npm:^2.4.1"
"@csstools/postcss-progressive-custom-properties": "npm:^3.2.0" "@csstools/postcss-progressive-custom-properties": "npm:^3.3.0"
"@csstools/utilities": "npm:^1.0.0" "@csstools/utilities": "npm:^1.0.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/ff27a4b6fd8490439aa0f3c91ffa2a42a8cf539d7306d9329cef7ca59f28317cee40253f402d19a18c196471fd39a05842d2974d92f1b131dc748074d91ac4ee checksum: 10c0/2909f76ba408c9f60b61c479994c96200b0e1d3dbf524d5ae6dc5ca1e21d38caf974595e0d071c3900dbe3568376928085dd811aa24ea3e715bcd9de26fb0fa9
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/postcss-progressive-custom-properties@npm:^3.2.0": "@csstools/postcss-progressive-custom-properties@npm:^3.3.0":
version: 3.2.0 version: 3.3.0
resolution: "@csstools/postcss-progressive-custom-properties@npm:3.2.0" resolution: "@csstools/postcss-progressive-custom-properties@npm:3.3.0"
dependencies: dependencies:
postcss-value-parser: "npm:^4.2.0" postcss-value-parser: "npm:^4.2.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/829880844fbbeef1c67e0b380057e574659b4caed38c8414c17d7eb4a0cc727afa1cd74a889bc7ca79c819ecae757810356706901cf6bb677a36ca123915cbb7 checksum: 10c0/6c9987d65049a70b5090dcfe42fde9ab2b3cb88911a81bb6651ed81c8baf99502ff2cbec0cb3e022426fa994b558b4bf33fd791ccdcdf683dde75b4865d34f39
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/postcss-relative-color-syntax@npm:^2.0.17": "@csstools/postcss-relative-color-syntax@npm:^2.0.19":
version: 2.0.17 version: 2.0.19
resolution: "@csstools/postcss-relative-color-syntax@npm:2.0.17" resolution: "@csstools/postcss-relative-color-syntax@npm:2.0.19"
dependencies: dependencies:
"@csstools/css-color-parser": "npm:^2.0.3" "@csstools/css-color-parser": "npm:^2.0.4"
"@csstools/css-parser-algorithms": "npm:^2.7.0" "@csstools/css-parser-algorithms": "npm:^2.7.1"
"@csstools/css-tokenizer": "npm:^2.3.2" "@csstools/css-tokenizer": "npm:^2.4.1"
"@csstools/postcss-progressive-custom-properties": "npm:^3.2.0" "@csstools/postcss-progressive-custom-properties": "npm:^3.3.0"
"@csstools/utilities": "npm:^1.0.0" "@csstools/utilities": "npm:^1.0.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/46226351b3825323e3496dcee44ff354cd3ccc9241d837659e1311f428f0b4dc878d9bb762cbb8f63243b7af346728ab7a46c311f9dc38bb609147523c698eab checksum: 10c0/f0aff764f4889ff664b6fa94ddfa5a22daf39354aa2d2ac0eab893eb3ed841b7d2a72131393334d6a5379445fc80f92ab5bd63d4dc3b43746bc7c9055da46591
languageName: node languageName: node
linkType: hard linkType: hard
@ -1934,16 +1948,16 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/postcss-stepped-value-functions@npm:^3.0.9": "@csstools/postcss-stepped-value-functions@npm:^3.0.10":
version: 3.0.9 version: 3.0.10
resolution: "@csstools/postcss-stepped-value-functions@npm:3.0.9" resolution: "@csstools/postcss-stepped-value-functions@npm:3.0.10"
dependencies: dependencies:
"@csstools/css-calc": "npm:^1.2.3" "@csstools/css-calc": "npm:^1.2.4"
"@csstools/css-parser-algorithms": "npm:^2.7.0" "@csstools/css-parser-algorithms": "npm:^2.7.1"
"@csstools/css-tokenizer": "npm:^2.3.2" "@csstools/css-tokenizer": "npm:^2.4.1"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/bafe80947abc8613903f1f3f1939ece9780696774f15960aef229733e40e483dc2830145426d49c4f6d0b1dabb35f812c8a2dda0d0dcddc930321e36b5c6ca0b checksum: 10c0/f9ebe50fb884d002aa40070196a827816f635b891fd2147ae5ddf1ad6df5bddbb50783d6786897bb3dffa33052565e38289392040cf4454aaa179ab00353117d
languageName: node languageName: node
linkType: hard linkType: hard
@ -1959,16 +1973,16 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/postcss-trigonometric-functions@npm:^3.0.9": "@csstools/postcss-trigonometric-functions@npm:^3.0.10":
version: 3.0.9 version: 3.0.10
resolution: "@csstools/postcss-trigonometric-functions@npm:3.0.9" resolution: "@csstools/postcss-trigonometric-functions@npm:3.0.10"
dependencies: dependencies:
"@csstools/css-calc": "npm:^1.2.3" "@csstools/css-calc": "npm:^1.2.4"
"@csstools/css-parser-algorithms": "npm:^2.7.0" "@csstools/css-parser-algorithms": "npm:^2.7.1"
"@csstools/css-tokenizer": "npm:^2.3.2" "@csstools/css-tokenizer": "npm:^2.4.1"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/7a439d31a63d35986dab634d9e415f7ce7c32a2d3d382052b5b730a259a12e44c5f1b14e318d79086253e3d5d4f7d942d0e7317d92eb3421dd08824eebec45fb checksum: 10c0/31adcc66510d9788ccb0669d2761517a6135b13692007d8e4334bc0e8d3515dfecfbdcd04e060d0c09a0f5fc2f12db92221b9d53e92b65b044c89cde9a3424cb
languageName: node languageName: node
linkType: hard linkType: hard
@ -3360,8 +3374,8 @@ __metadata:
linkType: hard linkType: hard
"@testing-library/dom@npm:^10.2.0": "@testing-library/dom@npm:^10.2.0":
version: 10.2.0 version: 10.3.1
resolution: "@testing-library/dom@npm:10.2.0" resolution: "@testing-library/dom@npm:10.3.1"
dependencies: dependencies:
"@babel/code-frame": "npm:^7.10.4" "@babel/code-frame": "npm:^7.10.4"
"@babel/runtime": "npm:^7.12.5" "@babel/runtime": "npm:^7.12.5"
@ -3371,7 +3385,7 @@ __metadata:
dom-accessibility-api: "npm:^0.5.9" dom-accessibility-api: "npm:^0.5.9"
lz-string: "npm:^1.5.0" lz-string: "npm:^1.5.0"
pretty-format: "npm:^27.0.2" pretty-format: "npm:^27.0.2"
checksum: 10c0/de582dfbeb632436547a0ca5851b5a714a4a17f8e96ab3dc4fb4e454eef52c912b648b7cb6e9fdf477f3eeef97e698f3250f0ce50846f39d04677a44169209f2 checksum: 10c0/e898475cd4932225c2962bf9f94353d7d88462c8912881af8e9866cee714c967b21badb0895ec8626123759cddc6663bc40300b1d1bf789957a603086eda6329
languageName: node languageName: node
linkType: hard linkType: hard
@ -6736,10 +6750,10 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"cssdb@npm:^8.0.0": "cssdb@npm:^8.1.0":
version: 8.0.0 version: 8.1.0
resolution: "cssdb@npm:8.0.0" resolution: "cssdb@npm:8.1.0"
checksum: 10c0/d9a31b760214624352000b16a8f7194c357f66b6c445e663ab58dd03b6f0f53efaaca6d6f96200d666e205894d2d1c346664ad993d9522ff9fc1c331804a8d62 checksum: 10c0/1fa1f1566c7e9964f5c71e443583eaba16a90933a3ef6803815c4281d084b75da948c415bade33d7085894fe0929c082fcb3135bf4400048cfff40d227ebd5dd
languageName: node languageName: node
linkType: hard linkType: hard
@ -9019,8 +9033,8 @@ __metadata:
linkType: hard linkType: hard
"glob@npm:^10.2.2, glob@npm:^10.2.6, glob@npm:^10.3.10": "glob@npm:^10.2.2, glob@npm:^10.2.6, glob@npm:^10.3.10":
version: 10.4.2 version: 10.4.3
resolution: "glob@npm:10.4.2" resolution: "glob@npm:10.4.3"
dependencies: dependencies:
foreground-child: "npm:^3.1.0" foreground-child: "npm:^3.1.0"
jackspeak: "npm:^3.1.2" jackspeak: "npm:^3.1.2"
@ -9030,7 +9044,7 @@ __metadata:
path-scurry: "npm:^1.11.1" path-scurry: "npm:^1.11.1"
bin: bin:
glob: dist/esm/bin.mjs glob: dist/esm/bin.mjs
checksum: 10c0/2c7296695fa75a935f3ad17dc62e4e170a8bb8752cf64d328be8992dd6ad40777939003754e10e9741ff8fbe43aa52fba32d6930d0ffa0e3b74bc3fb5eebaa2f checksum: 10c0/bea148e5dae96c17e2764f4764c72376a6ab7072b27a21e861ae4af6f97f3e810d79d67f64de52f63ce1d7fdb73b7306f61c65b48d0f61ca7c8647ce8acaf9a7
languageName: node languageName: node
linkType: hard linkType: hard
@ -13310,18 +13324,18 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"postcss-color-functional-notation@npm:^6.0.12": "postcss-color-functional-notation@npm:^6.0.14":
version: 6.0.12 version: 6.0.14
resolution: "postcss-color-functional-notation@npm:6.0.12" resolution: "postcss-color-functional-notation@npm:6.0.14"
dependencies: dependencies:
"@csstools/css-color-parser": "npm:^2.0.3" "@csstools/css-color-parser": "npm:^2.0.4"
"@csstools/css-parser-algorithms": "npm:^2.7.0" "@csstools/css-parser-algorithms": "npm:^2.7.1"
"@csstools/css-tokenizer": "npm:^2.3.2" "@csstools/css-tokenizer": "npm:^2.4.1"
"@csstools/postcss-progressive-custom-properties": "npm:^3.2.0" "@csstools/postcss-progressive-custom-properties": "npm:^3.3.0"
"@csstools/utilities": "npm:^1.0.0" "@csstools/utilities": "npm:^1.0.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/2e8faecd2609e1b4eb8c1cab21ecca5e746916795df20e6997d66eb61c29fbb01d3e75fef3e0b3e1c181918a2186570441b81779b1fc429d6d8823fbfa164231 checksum: 10c0/fdc5188e19c3923da32fe08d50e55d0b3ca1cedf99f46331baa0a4bbd73a1fc6b4447b0346ab16049032b56ab84b98b4758a0ede7c237637e35a4cc60caac141
languageName: node languageName: node
linkType: hard linkType: hard
@ -13375,46 +13389,46 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"postcss-custom-media@npm:^10.0.7": "postcss-custom-media@npm:^10.0.8":
version: 10.0.7 version: 10.0.8
resolution: "postcss-custom-media@npm:10.0.7" resolution: "postcss-custom-media@npm:10.0.8"
dependencies: dependencies:
"@csstools/cascade-layer-name-parser": "npm:^1.0.12" "@csstools/cascade-layer-name-parser": "npm:^1.0.13"
"@csstools/css-parser-algorithms": "npm:^2.7.0" "@csstools/css-parser-algorithms": "npm:^2.7.1"
"@csstools/css-tokenizer": "npm:^2.3.2" "@csstools/css-tokenizer": "npm:^2.4.1"
"@csstools/media-query-list-parser": "npm:^2.1.12" "@csstools/media-query-list-parser": "npm:^2.1.13"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/4171385ab9370806861dcf7597e53fd6aa1862e77b475c9c565c95bfcc2b950f920f8da26a6dbec42e257388bca97c274635662b5e81fe3905b5e37babe06569 checksum: 10c0/673ca0058a2f2357a83b33ce00bbeee7cda92621c08472fa55d7ac7ae56f5f8f979132528d537f2dedf715d35a8f9b14b2f0ab6b45423d49e2554c19aab3c827
languageName: node languageName: node
linkType: hard linkType: hard
"postcss-custom-properties@npm:^13.3.11": "postcss-custom-properties@npm:^13.3.12":
version: 13.3.11 version: 13.3.12
resolution: "postcss-custom-properties@npm:13.3.11" resolution: "postcss-custom-properties@npm:13.3.12"
dependencies: dependencies:
"@csstools/cascade-layer-name-parser": "npm:^1.0.12" "@csstools/cascade-layer-name-parser": "npm:^1.0.13"
"@csstools/css-parser-algorithms": "npm:^2.7.0" "@csstools/css-parser-algorithms": "npm:^2.7.1"
"@csstools/css-tokenizer": "npm:^2.3.2" "@csstools/css-tokenizer": "npm:^2.4.1"
"@csstools/utilities": "npm:^1.0.0" "@csstools/utilities": "npm:^1.0.0"
postcss-value-parser: "npm:^4.2.0" postcss-value-parser: "npm:^4.2.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/4aa95628aa5d5b6df4dfeedbc3891b9666db88d75930cadc14d2fbba0a1b72f4e3cc3d83b5a0c0b8ce44f85b4fda6ebd7fe7792a1abc0a14d7d63b9f170d299c checksum: 10c0/6af9f6ac94a6ac887749cd38d4586349f6aca29269ebfdb837019a3ba0130032f0ff4899b431b5c348f4ac79a7b16fb7300a256514a6a68e32a63489c18a70e7
languageName: node languageName: node
linkType: hard linkType: hard
"postcss-custom-selectors@npm:^7.1.11": "postcss-custom-selectors@npm:^7.1.12":
version: 7.1.11 version: 7.1.12
resolution: "postcss-custom-selectors@npm:7.1.11" resolution: "postcss-custom-selectors@npm:7.1.12"
dependencies: dependencies:
"@csstools/cascade-layer-name-parser": "npm:^1.0.12" "@csstools/cascade-layer-name-parser": "npm:^1.0.13"
"@csstools/css-parser-algorithms": "npm:^2.7.0" "@csstools/css-parser-algorithms": "npm:^2.7.1"
"@csstools/css-tokenizer": "npm:^2.3.2" "@csstools/css-tokenizer": "npm:^2.4.1"
postcss-selector-parser: "npm:^6.1.0" postcss-selector-parser: "npm:^6.1.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/f37d2e34239e868b35b7970ec97a7a8f657a9f92ed2b221af44f19949f7c3aedcecd0abb5fa1acb120c5ceffdf7a20869338956a37d7bfc37a83d8088f5d3dd2 checksum: 10c0/78a7930e4f97c42b544f00c06272264432d47f9df777684b57673bb971b7ab49d5d6fb9289a5a869125e7e50dcd0cad65cf8846501253084b73a42ffab41b2c5
languageName: node languageName: node
linkType: hard linkType: hard
@ -13467,16 +13481,16 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"postcss-double-position-gradients@npm:^5.0.6": "postcss-double-position-gradients@npm:^5.0.7":
version: 5.0.6 version: 5.0.7
resolution: "postcss-double-position-gradients@npm:5.0.6" resolution: "postcss-double-position-gradients@npm:5.0.7"
dependencies: 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" "@csstools/utilities": "npm:^1.0.0"
postcss-value-parser: "npm:^4.2.0" postcss-value-parser: "npm:^4.2.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/9b24b13043fe506c0ddd94e707fe4f21f4f9a6c05ca49a4f45e23412951fd6a4cfa0095002d10b322ca8be60df0badae3715a27eefdeb7bf8da4fdd1ecd5d7a2 checksum: 10c0/52d96a34aa3e2e251edeaa2d4c2dd106c687f7910ec18266693656c0edd003384b927c855cecac07f52b5c7bdccd140abdc7e27082ce4c3755e3a966206a2cb9
languageName: node languageName: node
linkType: hard linkType: hard
@ -13532,18 +13546,18 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"postcss-lab-function@npm:^6.0.17": "postcss-lab-function@npm:^6.0.19":
version: 6.0.17 version: 6.0.19
resolution: "postcss-lab-function@npm:6.0.17" resolution: "postcss-lab-function@npm:6.0.19"
dependencies: dependencies:
"@csstools/css-color-parser": "npm:^2.0.3" "@csstools/css-color-parser": "npm:^2.0.4"
"@csstools/css-parser-algorithms": "npm:^2.7.0" "@csstools/css-parser-algorithms": "npm:^2.7.1"
"@csstools/css-tokenizer": "npm:^2.3.2" "@csstools/css-tokenizer": "npm:^2.4.1"
"@csstools/postcss-progressive-custom-properties": "npm:^3.2.0" "@csstools/postcss-progressive-custom-properties": "npm:^3.3.0"
"@csstools/utilities": "npm:^1.0.0" "@csstools/utilities": "npm:^1.0.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/a331f188b02cc8beb315150232b6b58bc5793e8d61585973d352a9b4d370b908ff354ccf9ea1ba20a956fd37ea4ada918ea975c8d4f69e850d26edf0106436e8 checksum: 10c0/d9a91fb57dcbe967260df86e22ca335a5444f1f34d128fa7b5dbf2522772f2138ad708f1f20f0a59035d66ed736e82972ca7f1b669a157534a17ee8898af1921
languageName: node languageName: node
linkType: hard linkType: hard
@ -13864,60 +13878,61 @@ __metadata:
linkType: hard linkType: hard
"postcss-preset-env@npm:^9.5.2": "postcss-preset-env@npm:^9.5.2":
version: 9.5.15 version: 9.6.0
resolution: "postcss-preset-env@npm:9.5.15" resolution: "postcss-preset-env@npm:9.6.0"
dependencies: dependencies:
"@csstools/postcss-cascade-layers": "npm:^4.0.6" "@csstools/postcss-cascade-layers": "npm:^4.0.6"
"@csstools/postcss-color-function": "npm:^3.0.17" "@csstools/postcss-color-function": "npm:^3.0.19"
"@csstools/postcss-color-mix-function": "npm:^2.0.17" "@csstools/postcss-color-mix-function": "npm:^2.0.19"
"@csstools/postcss-exponential-functions": "npm:^1.0.8" "@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-font-format-keywords": "npm:^3.0.2"
"@csstools/postcss-gamut-mapping": "npm:^1.0.10" "@csstools/postcss-gamut-mapping": "npm:^1.0.11"
"@csstools/postcss-gradients-interpolation-method": "npm:^4.0.18" "@csstools/postcss-gradients-interpolation-method": "npm:^4.0.20"
"@csstools/postcss-hwb-function": "npm:^3.0.16" "@csstools/postcss-hwb-function": "npm:^3.0.18"
"@csstools/postcss-ic-unit": "npm:^3.0.6" "@csstools/postcss-ic-unit": "npm:^3.0.7"
"@csstools/postcss-initial": "npm:^1.0.1" "@csstools/postcss-initial": "npm:^1.0.1"
"@csstools/postcss-is-pseudo-class": "npm:^4.0.8" "@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-float-and-clear": "npm:^2.0.1"
"@csstools/postcss-logical-overflow": "npm:^1.0.1" "@csstools/postcss-logical-overflow": "npm:^1.0.1"
"@csstools/postcss-logical-overscroll-behavior": "npm:^1.0.1" "@csstools/postcss-logical-overscroll-behavior": "npm:^1.0.1"
"@csstools/postcss-logical-resize": "npm:^2.0.1" "@csstools/postcss-logical-resize": "npm:^2.0.1"
"@csstools/postcss-logical-viewport-units": "npm:^2.0.10" "@csstools/postcss-logical-viewport-units": "npm:^2.0.11"
"@csstools/postcss-media-minmax": "npm:^1.1.7" "@csstools/postcss-media-minmax": "npm:^1.1.8"
"@csstools/postcss-media-queries-aspect-ratio-number-values": "npm:^2.0.10" "@csstools/postcss-media-queries-aspect-ratio-number-values": "npm:^2.0.11"
"@csstools/postcss-nested-calc": "npm:^3.0.2" "@csstools/postcss-nested-calc": "npm:^3.0.2"
"@csstools/postcss-normalize-display-values": "npm:^3.0.2" "@csstools/postcss-normalize-display-values": "npm:^3.0.2"
"@csstools/postcss-oklab-function": "npm:^3.0.17" "@csstools/postcss-oklab-function": "npm:^3.0.19"
"@csstools/postcss-progressive-custom-properties": "npm:^3.2.0" "@csstools/postcss-progressive-custom-properties": "npm:^3.3.0"
"@csstools/postcss-relative-color-syntax": "npm:^2.0.17" "@csstools/postcss-relative-color-syntax": "npm:^2.0.19"
"@csstools/postcss-scope-pseudo-class": "npm:^3.0.1" "@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-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" "@csstools/postcss-unset-value": "npm:^3.0.1"
autoprefixer: "npm:^10.4.19" autoprefixer: "npm:^10.4.19"
browserslist: "npm:^4.23.1" browserslist: "npm:^4.23.1"
css-blank-pseudo: "npm:^6.0.2" css-blank-pseudo: "npm:^6.0.2"
css-has-pseudo: "npm:^6.0.5" css-has-pseudo: "npm:^6.0.5"
css-prefers-color-scheme: "npm:^9.0.1" 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-attribute-case-insensitive: "npm:^6.0.3"
postcss-clamp: "npm:^4.1.0" 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-hex-alpha: "npm:^9.0.4"
postcss-color-rebeccapurple: "npm:^9.0.3" postcss-color-rebeccapurple: "npm:^9.0.3"
postcss-custom-media: "npm:^10.0.7" postcss-custom-media: "npm:^10.0.8"
postcss-custom-properties: "npm:^13.3.11" postcss-custom-properties: "npm:^13.3.12"
postcss-custom-selectors: "npm:^7.1.11" postcss-custom-selectors: "npm:^7.1.12"
postcss-dir-pseudo-class: "npm:^8.0.1" 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-visible: "npm:^9.0.1"
postcss-focus-within: "npm:^8.0.1" postcss-focus-within: "npm:^8.0.1"
postcss-font-variant: "npm:^5.0.0" postcss-font-variant: "npm:^5.0.0"
postcss-gap-properties: "npm:^5.0.1" postcss-gap-properties: "npm:^5.0.1"
postcss-image-set-function: "npm:^6.0.3" 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-logical: "npm:^7.0.1"
postcss-nesting: "npm:^12.1.5" postcss-nesting: "npm:^12.1.5"
postcss-opacity-percentage: "npm:^2.0.0" postcss-opacity-percentage: "npm:^2.0.0"
@ -13929,7 +13944,7 @@ __metadata:
postcss-selector-not: "npm:^7.0.2" postcss-selector-not: "npm:^7.0.2"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/e2ee0b5d7dbaddb82ff6d51b5882120862d6be184973ae3d55642923183ab441d421d5f9810fe02e680a70dbc85b20b1c2eb02c68f167dcaf3ef80a71dd40e78 checksum: 10c0/caa91ba4d3b897d43ab2669b3edf40b24ef32c88e23b113be8956412e64b28deed6ba229c331848fcbc0d143bfde155173fb1e1ada9ccae5037b2ee8f7e554b7
languageName: node languageName: node
linkType: hard linkType: hard
@ -17299,22 +17314,22 @@ __metadata:
linkType: hard linkType: hard
"typescript@npm:5, typescript@npm:^5.0.4": "typescript@npm:5, typescript@npm:^5.0.4":
version: 5.5.2 version: 5.5.3
resolution: "typescript@npm:5.5.2" resolution: "typescript@npm:5.5.3"
bin: bin:
tsc: bin/tsc tsc: bin/tsc
tsserver: bin/tsserver tsserver: bin/tsserver
checksum: 10c0/8ca39b27b5f9bd7f32db795045933ab5247897660627251e8254180b792a395bf061ea7231947d5d7ffa5cb4cc771970fd4ef543275f9b559f08c9325cccfce3 checksum: 10c0/f52c71ccbc7080b034b9d3b72051d563601a4815bf3e39ded188e6ce60813f75dbedf11ad15dd4d32a12996a9ed8c7155b46c93a9b9c9bad1049766fe614bbdd
languageName: node languageName: node
linkType: hard linkType: hard
"typescript@patch:typescript@npm%3A5#optional!builtin<compat/typescript>, typescript@patch:typescript@npm%3A^5.0.4#optional!builtin<compat/typescript>": "typescript@patch:typescript@npm%3A5#optional!builtin<compat/typescript>, typescript@patch:typescript@npm%3A^5.0.4#optional!builtin<compat/typescript>":
version: 5.5.2 version: 5.5.3
resolution: "typescript@patch:typescript@npm%3A5.5.2#optional!builtin<compat/typescript>::version=5.5.2&hash=379a07" resolution: "typescript@patch:typescript@npm%3A5.5.3#optional!builtin<compat/typescript>::version=5.5.3&hash=379a07"
bin: bin:
tsc: bin/tsc tsc: bin/tsc
tsserver: bin/tsserver tsserver: bin/tsserver
checksum: 10c0/a7b7ede75dc7fc32a76d0d0af6b91f5fbd8620890d84c906f663d8783bf3de6d7bd50f0430b8bb55eac88a38934af847ff709e7156e5138b95ae94cbd5f73e5b checksum: 10c0/911c7811d61f57f07df79c4a35f56a0f426a65426a020e5fcd792f66559f399017205f5f10255329ab5a3d8c2d1f1d19530aeceffda70758a521fae1d469432e
languageName: node languageName: node
linkType: hard linkType: hard