diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile
index b5e72a0973..9d8fa2702d 100644
--- a/.devcontainer/Dockerfile
+++ b/.devcontainer/Dockerfile
@@ -1,5 +1,5 @@
# For details, see https://github.com/devcontainers/images/tree/main/src/ruby
-FROM mcr.microsoft.com/devcontainers/ruby:1-3.2-bullseye
+FROM mcr.microsoft.com/devcontainers/ruby:1-3.3-bookworm
# Install Rails
# RUN gem install rails webdrivers
@@ -9,7 +9,7 @@ RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSI
# [Optional] Uncomment this section to install additional OS packages.
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
- && apt-get -y install --no-install-recommends libicu-dev libidn11-dev ffmpeg imagemagick libpam-dev
+ && apt-get -y install --no-install-recommends libicu-dev libidn11-dev ffmpeg imagemagick libvips42 libpam-dev
# [Optional] Uncomment this line to install additional gems.
RUN gem install foreman
diff --git a/.devcontainer/codespaces/devcontainer.json b/.devcontainer/codespaces/devcontainer.json
index ca9156fdaa..6736734e60 100644
--- a/.devcontainer/codespaces/devcontainer.json
+++ b/.devcontainer/codespaces/devcontainer.json
@@ -37,7 +37,7 @@
},
"onCreateCommand": "git config --global --add safe.directory ${containerWorkspaceFolder}",
- "postCreateCommand": ".devcontainer/post-create.sh",
+ "postCreateCommand": "bin/setup",
"waitFor": "postCreateCommand",
"customizations": {
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index fa8d6542c1..4a9cf11cc2 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -23,12 +23,14 @@
}
},
+ "remoteUser": "root",
+
"otherPortsAttributes": {
"onAutoForward": "silent"
},
"onCreateCommand": "git config --global --add safe.directory ${containerWorkspaceFolder}",
- "postCreateCommand": ".devcontainer/post-create.sh",
+ "postCreateCommand": "bin/setup",
"waitFor": "postCreateCommand",
"customizations": {
diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml
index 5d9917b399..85f9eb22cc 100644
--- a/.devcontainer/docker-compose.yml
+++ b/.devcontainer/docker-compose.yml
@@ -1,5 +1,3 @@
-version: '3'
-
services:
app:
working_dir: /workspaces/mastodon/
diff --git a/.devcontainer/post-create.sh b/.devcontainer/post-create.sh
deleted file mode 100755
index 82a2ccbb6c..0000000000
--- a/.devcontainer/post-create.sh
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/bash
-
-set -e # Fail the whole script on first error
-
-# Fetch Ruby gem dependencies
-bundle config path 'vendor/bundle'
-bundle config with 'development test'
-bundle install
-
-# Make Gemfile.lock pristine again
-git checkout -- Gemfile.lock
-
-# Fetch Javascript dependencies
-corepack prepare
-yarn install --immutable
-
-# [re]create, migrate, and seed the test database
-RAILS_ENV=test ./bin/rails db:setup
-
-# [re]create, migrate, and seed the development database
-RAILS_ENV=development ./bin/rails db:setup
-
-# Precompile assets for development
-RAILS_ENV=development ./bin/rails assets:precompile
-
-# Precompile assets for test
-RAILS_ENV=test ./bin/rails assets:precompile
diff --git a/.github/actions/setup-ruby/action.yml b/.github/actions/setup-ruby/action.yml
index 3a6fba9402..3e232f134c 100644
--- a/.github/actions/setup-ruby/action.yml
+++ b/.github/actions/setup-ruby/action.yml
@@ -14,7 +14,7 @@ runs:
shell: bash
run: |
sudo apt-get update
- sudo apt-get install -y libicu-dev libidn11-dev ${{ inputs.additional-system-dependencies }}
+ sudo apt-get install -y libicu-dev libidn11-dev libvips42 ${{ inputs.additional-system-dependencies }}
- name: Set up Ruby
uses: ruby/setup-ruby@v1
diff --git a/.github/workflows/test-ruby.yml b/.github/workflows/test-ruby.yml
index 2bfa59e6b1..5f2297381a 100644
--- a/.github/workflows/test-ruby.yml
+++ b/.github/workflows/test-ruby.yml
@@ -133,7 +133,7 @@ jobs:
uses: ./.github/actions/setup-ruby
with:
ruby-version: ${{ matrix.ruby-version}}
- additional-system-dependencies: ffmpeg imagemagick libpam-dev
+ additional-system-dependencies: ffmpeg libpam-dev
- name: Load database schema
run: './bin/rails db:create db:schema:load db:seed'
@@ -148,6 +148,93 @@ jobs:
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
+ test-libvips:
+ name: Libvips tests
+ runs-on: ubuntu-24.04
+
+ needs:
+ - build
+
+ services:
+ postgres:
+ image: postgres:14-alpine
+ env:
+ POSTGRES_PASSWORD: postgres
+ POSTGRES_USER: postgres
+ options: >-
+ --health-cmd pg_isready
+ --health-interval 10s
+ --health-timeout 5s
+ --health-retries 5
+ ports:
+ - 5432:5432
+
+ redis:
+ image: redis:7-alpine
+ options: >-
+ --health-cmd "redis-cli ping"
+ --health-interval 10s
+ --health-timeout 5s
+ --health-retries 5
+ ports:
+ - 6379:6379
+
+ env:
+ DB_HOST: localhost
+ DB_USER: postgres
+ DB_PASS: postgres
+ DISABLE_SIMPLECOV: ${{ matrix.ruby-version != '.ruby-version' }}
+ RAILS_ENV: test
+ ALLOW_NOPAM: true
+ PAM_ENABLED: true
+ PAM_DEFAULT_SERVICE: pam_test
+ PAM_CONTROLLED_SERVICE: pam_test_controlled
+ OIDC_ENABLED: true
+ OIDC_SCOPE: read
+ SAML_ENABLED: true
+ CAS_ENABLED: true
+ BUNDLE_WITH: 'pam_authentication test'
+ GITHUB_RSPEC: ${{ matrix.ruby-version == '.ruby-version' && github.event.pull_request && 'true' }}
+ MASTODON_USE_LIBVIPS: true
+
+ strategy:
+ fail-fast: false
+ matrix:
+ ruby-version:
+ - '3.1'
+ - '3.2'
+ - '.ruby-version'
+ steps:
+ - uses: actions/checkout@v4
+
+ - uses: actions/download-artifact@v4
+ with:
+ path: './'
+ name: ${{ github.sha }}
+
+ - name: Expand archived asset artifacts
+ run: |
+ tar xvzf artifacts.tar.gz
+
+ - name: Set up Ruby environment
+ uses: ./.github/actions/setup-ruby
+ with:
+ ruby-version: ${{ matrix.ruby-version}}
+ additional-system-dependencies: ffmpeg libpam-dev libyaml-dev
+
+ - name: Load database schema
+ run: './bin/rails db:create db:schema:load db:seed'
+
+ - run: bin/rspec --tag paperclip_processing
+
+ - name: Upload coverage reports to Codecov
+ if: matrix.ruby-version == '.ruby-version'
+ uses: codecov/codecov-action@v4
+ with:
+ files: coverage/lcov/mastodon.lcov
+ env:
+ CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
+
test-e2e:
name: End to End testing
runs-on: ubuntu-latest
@@ -209,7 +296,7 @@ jobs:
uses: ./.github/actions/setup-ruby
with:
ruby-version: ${{ matrix.ruby-version}}
- additional-system-dependencies: ffmpeg imagemagick
+ additional-system-dependencies: ffmpeg
- name: Set up Javascript environment
uses: ./.github/actions/setup-javascript
@@ -329,7 +416,7 @@ jobs:
uses: ./.github/actions/setup-ruby
with:
ruby-version: ${{ matrix.ruby-version}}
- additional-system-dependencies: ffmpeg imagemagick
+ additional-system-dependencies: ffmpeg
- name: Set up Javascript environment
uses: ./.github/actions/setup-javascript
diff --git a/.nanoignore b/.nanoignore
deleted file mode 100644
index 80e9397035..0000000000
--- a/.nanoignore
+++ /dev/null
@@ -1,19 +0,0 @@
-.DS_Store
-.git/
-.gitignore
-
-.bundle/
-.cache/
-config/deploy/*
-coverage
-docs/
-.env
-log/*.log
-neo4j/
-node_modules/
-public/assets/
-public/system/
-spec/
-tmp/
-.vagrant/
-vendor/bundle/
diff --git a/.nvmrc b/.nvmrc
index 973f49d55c..c61a3d77e7 100644
--- a/.nvmrc
+++ b/.nvmrc
@@ -1 +1 @@
-20.13
+20.14
diff --git a/.ruby-version b/.ruby-version
index bea438e9ad..4772543317 100644
--- a/.ruby-version
+++ b/.ruby-version
@@ -1 +1 @@
-3.3.1
+3.3.2
diff --git a/Dockerfile b/Dockerfile
index 4278242bc9..09aa8f2ddb 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,5 +1,8 @@
# syntax=docker/dockerfile:1.7
+# This file is designed for production server deployment, not local development work
+# For a containerized local dev environment, see: https://github.com/mastodon/mastodon/blob/main/README.md#docker
+
# Please see https://docs.docker.com/engine/reference/builder for information about
# the extended buildx capabilities used in this file.
# Make sure multiarch TARGETPLATFORM is available for interpolation
@@ -7,22 +10,22 @@
ARG TARGETPLATFORM=${TARGETPLATFORM}
ARG BUILDPLATFORM=${BUILDPLATFORM}
-# Ruby image to use for base image, change with [--build-arg RUBY_VERSION="3.3.1"]
-ARG RUBY_VERSION="3.3.1"
+# Ruby image to use for base image, change with [--build-arg RUBY_VERSION="3.3.x"]
+ARG RUBY_VERSION="3.3.2"
# # Node version to use in base image, change with [--build-arg NODE_MAJOR_VERSION="20"]
ARG NODE_MAJOR_VERSION="20"
# Debian image to use for base image, change with [--build-arg DEBIAN_VERSION="bookworm"]
ARG DEBIAN_VERSION="bookworm"
# Node image to use for base image based on combined variables (ex: 20-bookworm-slim)
FROM docker.io/node:${NODE_MAJOR_VERSION}-${DEBIAN_VERSION}-slim as node
-# Ruby image to use for base image based on combined variables (ex: 3.3.1-slim-bookworm)
+# Ruby image to use for base image based on combined variables (ex: 3.3.x-slim-bookworm)
FROM docker.io/ruby:${RUBY_VERSION}-slim-${DEBIAN_VERSION} as ruby
# Resulting version string is vX.X.X-MASTODON_VERSION_PRERELEASE+MASTODON_VERSION_METADATA
# Example: v4.2.0-nightly.2023.11.09+something
# Overwrite existence of 'alpha.0' in version.rb [--build-arg MASTODON_VERSION_PRERELEASE="nightly.2023.11.09"]
ARG MASTODON_VERSION_PRERELEASE=""
-# Append build metadata or fork information to version.rb [--build-arg MASTODON_VERSION_METADATA="something"]
+# Append build metadata or fork information to version.rb [--build-arg MASTODON_VERSION_METADATA="pr-12345"]
ARG MASTODON_VERSION_METADATA=""
# Allow Ruby on Rails to serve static files
@@ -43,6 +46,8 @@ ENV \
# Apply Mastodon version information
MASTODON_VERSION_PRERELEASE="${MASTODON_VERSION_PRERELEASE}" \
MASTODON_VERSION_METADATA="${MASTODON_VERSION_METADATA}" \
+# Enable libvips
+ MASTODON_USE_LIBVIPS=true \
# Apply Mastodon static files and YJIT options
RAILS_SERVE_STATIC_FILES=${RAILS_SERVE_STATIC_FILES} \
RUBY_YJIT_ENABLE=${RUBY_YJIT_ENABLE} \
@@ -97,7 +102,7 @@ RUN \
curl \
ffmpeg \
file \
- imagemagick \
+ libvips42 \
libjemalloc2 \
patchelf \
procps \
diff --git a/Gemfile b/Gemfile
index d9de331827..ca32d0cca1 100644
--- a/Gemfile
+++ b/Gemfile
@@ -23,6 +23,7 @@ gem 'fog-core', '<= 2.4.0'
gem 'fog-openstack', '~> 1.0', require: false
gem 'kt-paperclip', '~> 7.2'
gem 'md-paperclip-azure', '~> 2.2', require: false
+gem 'ruby-vips', '~> 2.2', require: false
gem 'active_model_serializers', '~> 0.10'
gem 'addressable', '~> 2.8'
diff --git a/Gemfile.lock b/Gemfile.lock
index 5c480c525c..bf5340a5b0 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -10,35 +10,35 @@ GIT
GEM
remote: https://rubygems.org/
specs:
- actioncable (7.1.3.3)
- actionpack (= 7.1.3.3)
- activesupport (= 7.1.3.3)
+ actioncable (7.1.3.4)
+ actionpack (= 7.1.3.4)
+ activesupport (= 7.1.3.4)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
zeitwerk (~> 2.6)
- actionmailbox (7.1.3.3)
- actionpack (= 7.1.3.3)
- activejob (= 7.1.3.3)
- activerecord (= 7.1.3.3)
- activestorage (= 7.1.3.3)
- activesupport (= 7.1.3.3)
+ actionmailbox (7.1.3.4)
+ actionpack (= 7.1.3.4)
+ activejob (= 7.1.3.4)
+ activerecord (= 7.1.3.4)
+ activestorage (= 7.1.3.4)
+ activesupport (= 7.1.3.4)
mail (>= 2.7.1)
net-imap
net-pop
net-smtp
- actionmailer (7.1.3.3)
- actionpack (= 7.1.3.3)
- actionview (= 7.1.3.3)
- activejob (= 7.1.3.3)
- activesupport (= 7.1.3.3)
+ actionmailer (7.1.3.4)
+ actionpack (= 7.1.3.4)
+ actionview (= 7.1.3.4)
+ activejob (= 7.1.3.4)
+ activesupport (= 7.1.3.4)
mail (~> 2.5, >= 2.5.4)
net-imap
net-pop
net-smtp
rails-dom-testing (~> 2.2)
- actionpack (7.1.3.3)
- actionview (= 7.1.3.3)
- activesupport (= 7.1.3.3)
+ actionpack (7.1.3.4)
+ actionview (= 7.1.3.4)
+ activesupport (= 7.1.3.4)
nokogiri (>= 1.8.5)
racc
rack (>= 2.2.4)
@@ -46,15 +46,15 @@ GEM
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.2)
rails-html-sanitizer (~> 1.6)
- actiontext (7.1.3.3)
- actionpack (= 7.1.3.3)
- activerecord (= 7.1.3.3)
- activestorage (= 7.1.3.3)
- activesupport (= 7.1.3.3)
+ actiontext (7.1.3.4)
+ actionpack (= 7.1.3.4)
+ activerecord (= 7.1.3.4)
+ activestorage (= 7.1.3.4)
+ activesupport (= 7.1.3.4)
globalid (>= 0.6.0)
nokogiri (>= 1.8.5)
- actionview (7.1.3.3)
- activesupport (= 7.1.3.3)
+ actionview (7.1.3.4)
+ activesupport (= 7.1.3.4)
builder (~> 3.1)
erubi (~> 1.11)
rails-dom-testing (~> 2.2)
@@ -64,22 +64,22 @@ GEM
activemodel (>= 4.1)
case_transform (>= 0.2)
jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
- activejob (7.1.3.3)
- activesupport (= 7.1.3.3)
+ activejob (7.1.3.4)
+ activesupport (= 7.1.3.4)
globalid (>= 0.3.6)
- activemodel (7.1.3.3)
- activesupport (= 7.1.3.3)
- activerecord (7.1.3.3)
- activemodel (= 7.1.3.3)
- activesupport (= 7.1.3.3)
+ activemodel (7.1.3.4)
+ activesupport (= 7.1.3.4)
+ activerecord (7.1.3.4)
+ activemodel (= 7.1.3.4)
+ activesupport (= 7.1.3.4)
timeout (>= 0.4.0)
- activestorage (7.1.3.3)
- actionpack (= 7.1.3.3)
- activejob (= 7.1.3.3)
- activerecord (= 7.1.3.3)
- activesupport (= 7.1.3.3)
+ activestorage (7.1.3.4)
+ actionpack (= 7.1.3.4)
+ activejob (= 7.1.3.4)
+ activerecord (= 7.1.3.4)
+ activesupport (= 7.1.3.4)
marcel (~> 1.0)
- activesupport (7.1.3.3)
+ activesupport (7.1.3.4)
base64
bigdecimal
concurrent-ruby (~> 1.0, >= 1.0.2)
@@ -168,7 +168,7 @@ GEM
climate_control (1.2.0)
cocoon (1.2.15)
color_diff (0.1)
- concurrent-ruby (1.2.3)
+ concurrent-ruby (1.3.1)
connection_pool (2.4.1)
cose (1.3.0)
cbor (~> 0.5.9)
@@ -424,7 +424,7 @@ GEM
mime-types-data (~> 3.2015)
mime-types-data (3.2024.0507)
mini_mime (1.1.5)
- mini_portile2 (2.8.6)
+ mini_portile2 (2.8.7)
minitest (5.23.1)
msgpack (1.7.2)
multi_json (1.15.0)
@@ -434,7 +434,7 @@ GEM
uri
net-http-persistent (4.0.2)
connection_pool (~> 2.2)
- net-imap (0.4.11)
+ net-imap (0.4.12)
date
net-protocol
net-ldap (0.19.0)
@@ -579,14 +579,14 @@ GEM
orm_adapter (0.5.0)
ox (2.14.18)
parallel (1.24.0)
- parser (3.3.1.0)
+ parser (3.3.2.0)
ast (~> 2.4.1)
racc
parslet (2.0.0)
pastel (0.8.0)
tty-color (~> 0.5)
pg (1.5.6)
- pghero (3.4.1)
+ pghero (3.5.0)
activerecord (>= 6)
premailer (1.23.0)
addressable
@@ -597,7 +597,7 @@ GEM
net-smtp
premailer (~> 1.7, >= 1.7.9)
private_address_check (0.5.0)
- propshaft (0.8.0)
+ propshaft (0.9.0)
actionpack (>= 7.0.0)
activesupport (>= 7.0.0)
rack
@@ -634,20 +634,20 @@ GEM
rackup (1.0.0)
rack (< 3)
webrick
- rails (7.1.3.3)
- actioncable (= 7.1.3.3)
- actionmailbox (= 7.1.3.3)
- actionmailer (= 7.1.3.3)
- actionpack (= 7.1.3.3)
- actiontext (= 7.1.3.3)
- actionview (= 7.1.3.3)
- activejob (= 7.1.3.3)
- activemodel (= 7.1.3.3)
- activerecord (= 7.1.3.3)
- activestorage (= 7.1.3.3)
- activesupport (= 7.1.3.3)
+ rails (7.1.3.4)
+ actioncable (= 7.1.3.4)
+ actionmailbox (= 7.1.3.4)
+ actionmailer (= 7.1.3.4)
+ actionpack (= 7.1.3.4)
+ actiontext (= 7.1.3.4)
+ actionview (= 7.1.3.4)
+ activejob (= 7.1.3.4)
+ activemodel (= 7.1.3.4)
+ activerecord (= 7.1.3.4)
+ activestorage (= 7.1.3.4)
+ activesupport (= 7.1.3.4)
bundler (>= 1.15.0)
- railties (= 7.1.3.3)
+ railties (= 7.1.3.4)
rails-controller-testing (1.0.5)
actionpack (>= 5.0.1.rc1)
actionview (>= 5.0.1.rc1)
@@ -662,9 +662,9 @@ GEM
rails-i18n (7.0.9)
i18n (>= 0.7, < 2)
railties (>= 6.0.0, < 8)
- railties (7.1.3.3)
- actionpack (= 7.1.3.3)
- activesupport (= 7.1.3.3)
+ railties (7.1.3.4)
+ actionpack (= 7.1.3.4)
+ activesupport (= 7.1.3.4)
irb
rackup (>= 1.0.0)
rake (>= 12.2)
@@ -686,7 +686,7 @@ GEM
redlock (1.3.2)
redis (>= 3.0.0, < 6.0)
regexp_parser (2.9.2)
- reline (0.5.7)
+ reline (0.5.8)
io-console (~> 0.5)
request_store (1.6.0)
rack (>= 1.4)
@@ -726,7 +726,7 @@ GEM
rspec-mocks (~> 3.0)
sidekiq (>= 5, < 8)
rspec-support (3.13.1)
- rubocop (1.64.0)
+ rubocop (1.64.1)
json (~> 2.3)
language_server-protocol (>= 3.17.0)
parallel (~> 1.10)
@@ -751,7 +751,7 @@ GEM
rack (>= 1.1)
rubocop (>= 1.33.0, < 2.0)
rubocop-ast (>= 1.31.1, < 2.0)
- rubocop-rspec (2.29.2)
+ rubocop-rspec (2.30.0)
rubocop (~> 1.40)
rubocop-capybara (~> 2.17)
rubocop-factory_bot (~> 2.22)
@@ -763,6 +763,8 @@ GEM
ruby-saml (1.16.0)
nokogiri (>= 1.13.10)
rexml
+ ruby-vips (2.2.1)
+ ffi (~> 1.12)
ruby2_keywords (0.0.5)
rubyzip (2.3.2)
rufus-scheduler (3.9.1)
@@ -895,7 +897,7 @@ GEM
xorcist (1.1.3)
xpath (3.2.0)
nokogiri (~> 1.8)
- zeitwerk (2.6.14)
+ zeitwerk (2.6.15)
PLATFORMS
ruby
@@ -1023,6 +1025,7 @@ DEPENDENCIES
rubocop-rspec
ruby-prof
ruby-progressbar (~> 1.13)
+ ruby-vips (~> 2.2)
rubyzip (~> 2.3)
sanitize (~> 6.0)
scenic (~> 1.7)
@@ -1050,7 +1053,7 @@ DEPENDENCIES
xorcist (~> 1.1)
RUBY VERSION
- ruby 3.3.1p55
+ ruby 3.3.2p78
BUNDLED WITH
- 2.5.9
+ 2.5.11
diff --git a/README.md b/README.md
index 04ff146ed7..b423e89eef 100644
--- a/README.md
+++ b/README.md
@@ -88,7 +88,7 @@ Mastodon acts as an OAuth2 provider, so 3rd party apps can use the REST and Stre
- **Ruby** 3.1+
- **Node.js** 18+
-The repository includes deployment configurations for **Docker and docker-compose** as well as specific platforms like **Heroku**, **Scalingo**, and **Nanobox**. For Helm charts, reference the [mastodon/chart repository](https://github.com/mastodon/chart). The [**standalone** installation guide](https://docs.joinmastodon.org/admin/install/) is available in the documentation.
+The repository includes deployment configurations for **Docker and docker-compose** as well as specific platforms like **Heroku**, and **Scalingo**. For Helm charts, reference the [mastodon/chart repository](https://github.com/mastodon/chart). The [**standalone** installation guide](https://docs.joinmastodon.org/admin/install/) is available in the documentation.
## Development
@@ -117,11 +117,13 @@ To set up **MacOS** for native development, complete the following steps:
### Docker
-For development with **Docker**, complete the following steps:
+For production hosting and deployment with **Docker**, use the `Dockerfile` and
+`docker-compose.yml` in the project root directory. To create a local
+development environment with **Docker**, complete the following steps:
- Install Docker Desktop
- Run `docker compose -f .devcontainer/docker-compose.yml up -d`
-- Run `docker compose -f .devcontainer/docker-compose.yml exec app .devcontainer/post-create.sh`
+- Run `docker compose -f .devcontainer/docker-compose.yml exec app bin/setup`
- Finally, run `docker compose -f .devcontainer/docker-compose.yml exec app bin/dev`
If you are using an IDE with [support for the Development Container specification](https://containers.dev/supporting), it will run the above `docker compose` commands automatically. For **Visual Studio Code** this requires the [Dev Container extension](https://containers.dev/supporting#dev-containers).
diff --git a/Vagrantfile b/Vagrantfile
index 8a95e91f36..89f5536edc 100644
--- a/Vagrantfile
+++ b/Vagrantfile
@@ -151,6 +151,12 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
vb.customize ["modifyvm", :id, "--nictype2", "virtio"]
end
+ config.vm.provider :libvirt do |libvirt|
+ libvirt.cpus = 3
+ libvirt.memory = 8192
+ end
+
+
# This uses the vagrant-hostsupdater plugin, and lets you
# access the development site at http://mastodon.local.
# If you change it, also change it in .env.vagrant before provisioning
diff --git a/app/controllers/api/v1/accounts/credentials_controller.rb b/app/controllers/api/v1/accounts/credentials_controller.rb
index e8f712457e..a378425183 100644
--- a/app/controllers/api/v1/accounts/credentials_controller.rb
+++ b/app/controllers/api/v1/accounts/credentials_controller.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
class Api::V1::Accounts::CredentialsController < Api::BaseController
- before_action -> { doorkeeper_authorize! :read, :'read:accounts', :'read:me' }, except: [:update]
+ before_action -> { doorkeeper_authorize! :profile, :read, :'read:accounts' }, except: [:update]
before_action -> { doorkeeper_authorize! :write, :'write:accounts' }, only: [:update]
before_action :require_user!
diff --git a/app/controllers/api/v1/accounts/follower_accounts_controller.rb b/app/controllers/api/v1/accounts/follower_accounts_controller.rb
index 449866fa55..3f2ecb892d 100644
--- a/app/controllers/api/v1/accounts/follower_accounts_controller.rb
+++ b/app/controllers/api/v1/accounts/follower_accounts_controller.rb
@@ -60,8 +60,4 @@ class Api::V1::Accounts::FollowerAccountsController < Api::BaseController
def records_continue?
@accounts.size == limit_param(DEFAULT_ACCOUNTS_LIMIT)
end
-
- def pagination_params(core_params)
- params.slice(:limit).permit(:limit).merge(core_params)
- end
end
diff --git a/app/controllers/api/v1/accounts/following_accounts_controller.rb b/app/controllers/api/v1/accounts/following_accounts_controller.rb
index c4f4313f8f..7c16a3487e 100644
--- a/app/controllers/api/v1/accounts/following_accounts_controller.rb
+++ b/app/controllers/api/v1/accounts/following_accounts_controller.rb
@@ -60,8 +60,4 @@ class Api::V1::Accounts::FollowingAccountsController < Api::BaseController
def records_continue?
@accounts.size == limit_param(DEFAULT_ACCOUNTS_LIMIT)
end
-
- def pagination_params(core_params)
- params.slice(:limit).permit(:limit).merge(core_params)
- end
end
diff --git a/app/controllers/api/v1/admin/canonical_email_blocks_controller.rb b/app/controllers/api/v1/admin/canonical_email_blocks_controller.rb
index 701f668de6..c144a9e0f9 100644
--- a/app/controllers/api/v1/admin/canonical_email_blocks_controller.rb
+++ b/app/controllers/api/v1/admin/canonical_email_blocks_controller.rb
@@ -16,8 +16,6 @@ class Api::V1::Admin::CanonicalEmailBlocksController < Api::BaseController
after_action :verify_authorized
after_action :insert_pagination_headers, only: :index
- PAGINATION_PARAMS = %i(limit).freeze
-
def index
authorize :canonical_email_block, :index?
render json: @canonical_email_blocks, each_serializer: REST::Admin::CanonicalEmailBlockSerializer
@@ -80,8 +78,4 @@ class Api::V1::Admin::CanonicalEmailBlocksController < Api::BaseController
def records_continue?
@canonical_email_blocks.size == limit_param(LIMIT)
end
-
- def pagination_params(core_params)
- params.slice(*PAGINATION_PARAMS).permit(*PAGINATION_PARAMS).merge(core_params)
- end
end
diff --git a/app/controllers/api/v1/admin/domain_allows_controller.rb b/app/controllers/api/v1/admin/domain_allows_controller.rb
index a7ae84e306..9801d832b8 100644
--- a/app/controllers/api/v1/admin/domain_allows_controller.rb
+++ b/app/controllers/api/v1/admin/domain_allows_controller.rb
@@ -14,8 +14,6 @@ class Api::V1::Admin::DomainAllowsController < Api::BaseController
after_action :verify_authorized
after_action :insert_pagination_headers, only: :index
- PAGINATION_PARAMS = %i(limit).freeze
-
def index
authorize :domain_allow, :index?
render json: @domain_allows, each_serializer: REST::Admin::DomainAllowSerializer
@@ -77,10 +75,6 @@ class Api::V1::Admin::DomainAllowsController < Api::BaseController
@domain_allows.size == limit_param(LIMIT)
end
- def pagination_params(core_params)
- params.slice(*PAGINATION_PARAMS).permit(*PAGINATION_PARAMS).merge(core_params)
- end
-
def resource_params
params.permit(:domain)
end
diff --git a/app/controllers/api/v1/admin/domain_blocks_controller.rb b/app/controllers/api/v1/admin/domain_blocks_controller.rb
index ae94ac59cd..a20a4a9c7f 100644
--- a/app/controllers/api/v1/admin/domain_blocks_controller.rb
+++ b/app/controllers/api/v1/admin/domain_blocks_controller.rb
@@ -14,8 +14,6 @@ class Api::V1::Admin::DomainBlocksController < Api::BaseController
after_action :verify_authorized
after_action :insert_pagination_headers, only: :index
- PAGINATION_PARAMS = %i(limit).freeze
-
def index
authorize :domain_block, :index?
render json: @domain_blocks, each_serializer: REST::Admin::DomainBlockSerializer
@@ -93,10 +91,6 @@ class Api::V1::Admin::DomainBlocksController < Api::BaseController
@domain_blocks.size == limit_param(LIMIT)
end
- def pagination_params(core_params)
- params.slice(*PAGINATION_PARAMS).permit(*PAGINATION_PARAMS).merge(core_params)
- end
-
def resource_params
params.permit(:domain, :severity, :reject_media, :reject_reports, :private_comment, :public_comment, :obfuscate)
end
diff --git a/app/controllers/api/v1/admin/email_domain_blocks_controller.rb b/app/controllers/api/v1/admin/email_domain_blocks_controller.rb
index bdedb9d040..e7bd804e36 100644
--- a/app/controllers/api/v1/admin/email_domain_blocks_controller.rb
+++ b/app/controllers/api/v1/admin/email_domain_blocks_controller.rb
@@ -14,10 +14,6 @@ class Api::V1::Admin::EmailDomainBlocksController < Api::BaseController
after_action :verify_authorized
after_action :insert_pagination_headers, only: :index
- PAGINATION_PARAMS = %i(
- limit
- ).freeze
-
def index
authorize :email_domain_block, :index?
render json: @email_domain_blocks, each_serializer: REST::Admin::EmailDomainBlockSerializer
@@ -73,8 +69,4 @@ class Api::V1::Admin::EmailDomainBlocksController < Api::BaseController
def records_continue?
@email_domain_blocks.size == limit_param(LIMIT)
end
-
- def pagination_params(core_params)
- params.slice(*PAGINATION_PARAMS).permit(*PAGINATION_PARAMS).merge(core_params)
- end
end
diff --git a/app/controllers/api/v1/admin/ip_blocks_controller.rb b/app/controllers/api/v1/admin/ip_blocks_controller.rb
index 3625781149..e132a3a87d 100644
--- a/app/controllers/api/v1/admin/ip_blocks_controller.rb
+++ b/app/controllers/api/v1/admin/ip_blocks_controller.rb
@@ -14,10 +14,6 @@ class Api::V1::Admin::IpBlocksController < Api::BaseController
after_action :verify_authorized
after_action :insert_pagination_headers, only: :index
- PAGINATION_PARAMS = %i(
- limit
- ).freeze
-
def index
authorize :ip_block, :index?
render json: @ip_blocks, each_serializer: REST::Admin::IpBlockSerializer
@@ -78,8 +74,4 @@ class Api::V1::Admin::IpBlocksController < Api::BaseController
def records_continue?
@ip_blocks.size == limit_param(LIMIT)
end
-
- def pagination_params(core_params)
- params.slice(*PAGINATION_PARAMS).permit(*PAGINATION_PARAMS).merge(core_params)
- end
end
diff --git a/app/controllers/api/v1/admin/tags_controller.rb b/app/controllers/api/v1/admin/tags_controller.rb
index c754980720..67d987d0e3 100644
--- a/app/controllers/api/v1/admin/tags_controller.rb
+++ b/app/controllers/api/v1/admin/tags_controller.rb
@@ -12,7 +12,6 @@ class Api::V1::Admin::TagsController < Api::BaseController
after_action :verify_authorized
LIMIT = 100
- PAGINATION_PARAMS = %i(limit).freeze
def index
authorize :tag, :index?
@@ -59,8 +58,4 @@ class Api::V1::Admin::TagsController < Api::BaseController
def records_continue?
@tags.size == limit_param(LIMIT)
end
-
- def pagination_params(core_params)
- params.slice(*PAGINATION_PARAMS).permit(*PAGINATION_PARAMS).merge(core_params)
- end
end
diff --git a/app/controllers/api/v1/admin/trends/links/preview_card_providers_controller.rb b/app/controllers/api/v1/admin/trends/links/preview_card_providers_controller.rb
index 8bb5e22716..2b0f39b98f 100644
--- a/app/controllers/api/v1/admin/trends/links/preview_card_providers_controller.rb
+++ b/app/controllers/api/v1/admin/trends/links/preview_card_providers_controller.rb
@@ -12,8 +12,6 @@ class Api::V1::Admin::Trends::Links::PreviewCardProvidersController < Api::BaseC
after_action :verify_authorized
after_action :insert_pagination_headers, only: :index
- PAGINATION_PARAMS = %i(limit).freeze
-
def index
authorize :preview_card_provider, :index?
@@ -57,8 +55,4 @@ class Api::V1::Admin::Trends::Links::PreviewCardProvidersController < Api::BaseC
def records_continue?
@providers.size == limit_param(LIMIT)
end
-
- def pagination_params(core_params)
- params.slice(*PAGINATION_PARAMS).permit(*PAGINATION_PARAMS).merge(core_params)
- end
end
diff --git a/app/controllers/api/v1/blocks_controller.rb b/app/controllers/api/v1/blocks_controller.rb
index 234ab2e82c..d7516c927b 100644
--- a/app/controllers/api/v1/blocks_controller.rb
+++ b/app/controllers/api/v1/blocks_controller.rb
@@ -43,8 +43,4 @@ class Api::V1::BlocksController < Api::BaseController
def records_continue?
paginated_blocks.size == limit_param(DEFAULT_ACCOUNTS_LIMIT)
end
-
- def pagination_params(core_params)
- params.slice(:limit).permit(:limit).merge(core_params)
- end
end
diff --git a/app/controllers/api/v1/bookmarks_controller.rb b/app/controllers/api/v1/bookmarks_controller.rb
index f7671a9032..29f08e81d2 100644
--- a/app/controllers/api/v1/bookmarks_controller.rb
+++ b/app/controllers/api/v1/bookmarks_controller.rb
@@ -46,8 +46,4 @@ class Api::V1::BookmarksController < Api::BaseController
def records_continue?
results.size == limit_param(DEFAULT_STATUSES_LIMIT)
end
-
- def pagination_params(core_params)
- params.slice(:limit).permit(:limit).merge(core_params)
- end
end
diff --git a/app/controllers/api/v1/conversations_controller.rb b/app/controllers/api/v1/conversations_controller.rb
index a29b908555..60db082a8e 100644
--- a/app/controllers/api/v1/conversations_controller.rb
+++ b/app/controllers/api/v1/conversations_controller.rb
@@ -72,8 +72,4 @@ class Api::V1::ConversationsController < Api::BaseController
def records_continue?
@conversations.size == limit_param(LIMIT)
end
-
- def pagination_params(core_params)
- params.slice(:limit).permit(:limit).merge(core_params)
- end
end
diff --git a/app/controllers/api/v1/crypto/encrypted_messages_controller.rb b/app/controllers/api/v1/crypto/encrypted_messages_controller.rb
index d3de220393..93ae0e7771 100644
--- a/app/controllers/api/v1/crypto/encrypted_messages_controller.rb
+++ b/app/controllers/api/v1/crypto/encrypted_messages_controller.rb
@@ -44,8 +44,4 @@ class Api::V1::Crypto::EncryptedMessagesController < Api::BaseController
def records_continue?
@encrypted_messages.size == limit_param(LIMIT)
end
-
- def pagination_params(core_params)
- params.slice(:limit).permit(:limit).merge(core_params)
- end
end
diff --git a/app/controllers/api/v1/domain_blocks_controller.rb b/app/controllers/api/v1/domain_blocks_controller.rb
index 3dee2d176c..780ecbf189 100644
--- a/app/controllers/api/v1/domain_blocks_controller.rb
+++ b/app/controllers/api/v1/domain_blocks_controller.rb
@@ -54,10 +54,6 @@ class Api::V1::DomainBlocksController < Api::BaseController
@blocks.size == limit_param(BLOCK_LIMIT)
end
- def pagination_params(core_params)
- params.slice(:limit).permit(:limit).merge(core_params)
- end
-
def domain_block_params
params.permit(:domain)
end
diff --git a/app/controllers/api/v1/endorsements_controller.rb b/app/controllers/api/v1/endorsements_controller.rb
index 9a723d89e4..09bafe0231 100644
--- a/app/controllers/api/v1/endorsements_controller.rb
+++ b/app/controllers/api/v1/endorsements_controller.rb
@@ -48,10 +48,6 @@ class Api::V1::EndorsementsController < Api::BaseController
@accounts.size == limit_param(DEFAULT_ACCOUNTS_LIMIT)
end
- def pagination_params(core_params)
- params.slice(:limit).permit(:limit).merge(core_params)
- end
-
def unlimited?
params[:limit] == '0'
end
diff --git a/app/controllers/api/v1/favourites_controller.rb b/app/controllers/api/v1/favourites_controller.rb
index 18ca9ab866..a4454e4ded 100644
--- a/app/controllers/api/v1/favourites_controller.rb
+++ b/app/controllers/api/v1/favourites_controller.rb
@@ -46,8 +46,4 @@ class Api::V1::FavouritesController < Api::BaseController
def records_continue?
results.size == limit_param(DEFAULT_STATUSES_LIMIT)
end
-
- def pagination_params(core_params)
- params.slice(:limit).permit(:limit).merge(core_params)
- end
end
diff --git a/app/controllers/api/v1/follow_requests_controller.rb b/app/controllers/api/v1/follow_requests_controller.rb
index 7ffd7614bb..29a09fceef 100644
--- a/app/controllers/api/v1/follow_requests_controller.rb
+++ b/app/controllers/api/v1/follow_requests_controller.rb
@@ -67,8 +67,4 @@ class Api::V1::FollowRequestsController < Api::BaseController
def records_continue?
@accounts.size == limit_param(DEFAULT_ACCOUNTS_LIMIT)
end
-
- def pagination_params(core_params)
- params.slice(:limit).permit(:limit).merge(core_params)
- end
end
diff --git a/app/controllers/api/v1/followed_tags_controller.rb b/app/controllers/api/v1/followed_tags_controller.rb
index 8888612b16..7d8f0eda1e 100644
--- a/app/controllers/api/v1/followed_tags_controller.rb
+++ b/app/controllers/api/v1/followed_tags_controller.rb
@@ -37,8 +37,4 @@ class Api::V1::FollowedTagsController < Api::BaseController
def records_continue?
@results.size == limit_param(TAGS_LIMIT)
end
-
- def pagination_params(core_params)
- params.slice(:limit).permit(:limit).merge(core_params)
- end
end
diff --git a/app/controllers/api/v1/instances/extended_descriptions_controller.rb b/app/controllers/api/v1/instances/extended_descriptions_controller.rb
index 73d2248117..db3d082f61 100644
--- a/app/controllers/api/v1/instances/extended_descriptions_controller.rb
+++ b/app/controllers/api/v1/instances/extended_descriptions_controller.rb
@@ -5,7 +5,7 @@ class Api::V1::Instances::ExtendedDescriptionsController < Api::V1::Instances::B
before_action :set_extended_description
- # Override `current_user` to avoid reading session cookies unless in whitelist mode
+ # Override `current_user` to avoid reading session cookies unless in limited federation mode
def current_user
super if limited_federation_mode?
end
diff --git a/app/controllers/api/v1/instances/peers_controller.rb b/app/controllers/api/v1/instances/peers_controller.rb
index 83116472bb..fac763b405 100644
--- a/app/controllers/api/v1/instances/peers_controller.rb
+++ b/app/controllers/api/v1/instances/peers_controller.rb
@@ -5,7 +5,7 @@ class Api::V1::Instances::PeersController < Api::V1::Instances::BaseController
skip_around_action :set_locale
- # Override `current_user` to avoid reading session cookies unless in whitelist mode
+ # Override `current_user` to avoid reading session cookies unless in limited federation mode
def current_user
super if limited_federation_mode?
end
diff --git a/app/controllers/api/v1/instances/rules_controller.rb b/app/controllers/api/v1/instances/rules_controller.rb
index d240d72464..3930eec0dd 100644
--- a/app/controllers/api/v1/instances/rules_controller.rb
+++ b/app/controllers/api/v1/instances/rules_controller.rb
@@ -5,7 +5,7 @@ class Api::V1::Instances::RulesController < Api::V1::Instances::BaseController
before_action :set_rules
- # Override `current_user` to avoid reading session cookies unless in whitelist mode
+ # Override `current_user` to avoid reading session cookies unless in limited federation mode
def current_user
super if limited_federation_mode?
end
diff --git a/app/controllers/api/v1/instances_controller.rb b/app/controllers/api/v1/instances_controller.rb
index df4a14af15..49da75ed28 100644
--- a/app/controllers/api/v1/instances_controller.rb
+++ b/app/controllers/api/v1/instances_controller.rb
@@ -6,7 +6,7 @@ class Api::V1::InstancesController < Api::BaseController
vary_by ''
- # Override `current_user` to avoid reading session cookies unless in whitelist mode
+ # Override `current_user` to avoid reading session cookies unless in limited federation mode
def current_user
super if limited_federation_mode?
end
diff --git a/app/controllers/api/v1/lists/accounts_controller.rb b/app/controllers/api/v1/lists/accounts_controller.rb
index aecf391049..b1c0e609d0 100644
--- a/app/controllers/api/v1/lists/accounts_controller.rb
+++ b/app/controllers/api/v1/lists/accounts_controller.rb
@@ -75,10 +75,6 @@ class Api::V1::Lists::AccountsController < Api::BaseController
@accounts.size == limit_param(DEFAULT_ACCOUNTS_LIMIT)
end
- def pagination_params(core_params)
- params.slice(:limit).permit(:limit).merge(core_params)
- end
-
def unlimited?
params[:limit] == '0'
end
diff --git a/app/controllers/api/v1/mutes_controller.rb b/app/controllers/api/v1/mutes_controller.rb
index dbfd7e103a..d2b50e3336 100644
--- a/app/controllers/api/v1/mutes_controller.rb
+++ b/app/controllers/api/v1/mutes_controller.rb
@@ -43,8 +43,4 @@ class Api::V1::MutesController < Api::BaseController
def records_continue?
paginated_mutes.size == limit_param(DEFAULT_ACCOUNTS_LIMIT)
end
-
- def pagination_params(core_params)
- params.slice(:limit).permit(:limit).merge(core_params)
- end
end
diff --git a/app/controllers/api/v1/scheduled_statuses_controller.rb b/app/controllers/api/v1/scheduled_statuses_controller.rb
index 1217ed014e..45ee586518 100644
--- a/app/controllers/api/v1/scheduled_statuses_controller.rb
+++ b/app/controllers/api/v1/scheduled_statuses_controller.rb
@@ -43,10 +43,6 @@ class Api::V1::ScheduledStatusesController < Api::BaseController
params.permit(:scheduled_at)
end
- def pagination_params(core_params)
- params.slice(:limit).permit(:limit).merge(core_params)
- end
-
def next_path
api_v1_scheduled_statuses_url pagination_params(max_id: pagination_max_id) if records_continue?
end
diff --git a/app/controllers/api/v1/statuses/favourited_by_accounts_controller.rb b/app/controllers/api/v1/statuses/favourited_by_accounts_controller.rb
index bbc8082e0c..5a5c2fdc97 100644
--- a/app/controllers/api/v1/statuses/favourited_by_accounts_controller.rb
+++ b/app/controllers/api/v1/statuses/favourited_by_accounts_controller.rb
@@ -53,8 +53,4 @@ class Api::V1::Statuses::FavouritedByAccountsController < Api::V1::Statuses::Bas
def records_continue?
@accounts.size == limit_param(DEFAULT_ACCOUNTS_LIMIT)
end
-
- def pagination_params(core_params)
- params.slice(:limit).permit(:limit).merge(core_params)
- end
end
diff --git a/app/controllers/api/v1/statuses/reblogged_by_accounts_controller.rb b/app/controllers/api/v1/statuses/reblogged_by_accounts_controller.rb
index bac96b032b..0eba4fae32 100644
--- a/app/controllers/api/v1/statuses/reblogged_by_accounts_controller.rb
+++ b/app/controllers/api/v1/statuses/reblogged_by_accounts_controller.rb
@@ -49,8 +49,4 @@ class Api::V1::Statuses::RebloggedByAccountsController < Api::V1::Statuses::Base
def records_continue?
@accounts.size == limit_param(DEFAULT_ACCOUNTS_LIMIT)
end
-
- def pagination_params(core_params)
- params.slice(:limit).permit(:limit).merge(core_params)
- end
end
diff --git a/app/controllers/api/v1/statuses_controller.rb b/app/controllers/api/v1/statuses_controller.rb
index 9cbf9866d8..2593ef7da5 100644
--- a/app/controllers/api/v1/statuses_controller.rb
+++ b/app/controllers/api/v1/statuses_controller.rb
@@ -191,8 +191,4 @@ class Api::V1::StatusesController < Api::BaseController
def serialized_accounts(accounts)
ActiveModel::Serializer::CollectionSerializer.new(accounts, serializer: REST::AccountSerializer)
end
-
- def pagination_params(core_params)
- params.slice(:limit).permit(:limit).merge(core_params)
- end
end
diff --git a/app/controllers/api/v1/timelines/link_controller.rb b/app/controllers/api/v1/timelines/link_controller.rb
new file mode 100644
index 0000000000..af962c430f
--- /dev/null
+++ b/app/controllers/api/v1/timelines/link_controller.rb
@@ -0,0 +1,52 @@
+# frozen_string_literal: true
+
+class Api::V1::Timelines::LinkController < Api::V1::Timelines::BaseController
+ before_action -> { doorkeeper_authorize! :read, :'read:statuses' }, only: :show, if: :require_auth?
+ before_action :set_preview_card
+ before_action :set_statuses
+
+ PERMITTED_PARAMS = %i(
+ url
+ limit
+ ).freeze
+
+ def show
+ cache_if_unauthenticated!
+ render json: @statuses, each_serializer: REST::StatusSerializer, relationships: StatusRelationshipsPresenter.new(@statuses, current_user&.account_id)
+ end
+
+ private
+
+ def require_auth?
+ !Setting.timeline_preview
+ end
+
+ def set_preview_card
+ @preview_card = PreviewCard.joins(:trend).merge(PreviewCardTrend.allowed).find_by!(url: params[:url])
+ end
+
+ def set_statuses
+ @statuses = @preview_card.nil? ? [] : preload_collection(link_timeline_statuses, Status)
+ end
+
+ def link_timeline_statuses
+ link_feed.get(
+ limit_param(DEFAULT_STATUSES_LIMIT),
+ params[:max_id],
+ params[:since_id],
+ params[:min_id]
+ )
+ end
+
+ def link_feed
+ LinkFeed.new(@preview_card, current_account)
+ end
+
+ def next_path
+ api_v1_timelines_link_url next_path_params
+ end
+
+ def prev_path
+ api_v1_timelines_link_url prev_path_params
+ end
+end
diff --git a/app/controllers/api/v1/trends/links_controller.rb b/app/controllers/api/v1/trends/links_controller.rb
index 8edf5bbcef..3c5aecff43 100644
--- a/app/controllers/api/v1/trends/links_controller.rb
+++ b/app/controllers/api/v1/trends/links_controller.rb
@@ -34,10 +34,6 @@ class Api::V1::Trends::LinksController < Api::BaseController
scope
end
- def pagination_params(core_params)
- params.slice(:limit).permit(:limit).merge(core_params)
- end
-
def next_path
api_v1_trends_links_url pagination_params(offset: offset_param + limit_param(DEFAULT_LINKS_LIMIT)) if records_continue?
end
diff --git a/app/controllers/api/v1/trends/statuses_controller.rb b/app/controllers/api/v1/trends/statuses_controller.rb
index c6fbbce167..cdbfce0685 100644
--- a/app/controllers/api/v1/trends/statuses_controller.rb
+++ b/app/controllers/api/v1/trends/statuses_controller.rb
@@ -32,10 +32,6 @@ class Api::V1::Trends::StatusesController < Api::BaseController
scope
end
- def pagination_params(core_params)
- params.slice(:limit).permit(:limit).merge(core_params)
- end
-
def next_path
api_v1_trends_statuses_url pagination_params(offset: offset_param + limit_param(DEFAULT_STATUSES_LIMIT)) if records_continue?
end
diff --git a/app/controllers/api/v1/trends/tags_controller.rb b/app/controllers/api/v1/trends/tags_controller.rb
index 0d8e27552e..ee4cfab2ea 100644
--- a/app/controllers/api/v1/trends/tags_controller.rb
+++ b/app/controllers/api/v1/trends/tags_controller.rb
@@ -30,10 +30,6 @@ class Api::V1::Trends::TagsController < Api::BaseController
Trends.tags.query.allowed
end
- def pagination_params(core_params)
- params.slice(:limit).permit(:limit).merge(core_params)
- end
-
def next_path
api_v1_trends_tags_url pagination_params(offset: offset_param + limit_param(DEFAULT_TAGS_LIMIT)) if records_continue?
end
diff --git a/app/controllers/api/v2_alpha/notifications_controller.rb b/app/controllers/api/v2_alpha/notifications_controller.rb
new file mode 100644
index 0000000000..19d3ac9018
--- /dev/null
+++ b/app/controllers/api/v2_alpha/notifications_controller.rb
@@ -0,0 +1,91 @@
+# frozen_string_literal: true
+
+class Api::V2Alpha::NotificationsController < Api::BaseController
+ before_action -> { doorkeeper_authorize! :read, :'read:notifications' }, except: [:clear, :dismiss]
+ before_action -> { doorkeeper_authorize! :write, :'write:notifications' }, only: [:clear, :dismiss]
+ before_action :require_user!
+ after_action :insert_pagination_headers, only: :index
+
+ DEFAULT_NOTIFICATIONS_LIMIT = 40
+
+ def index
+ with_read_replica do
+ @notifications = load_notifications
+ @group_metadata = load_group_metadata
+ @relationships = StatusRelationshipsPresenter.new(target_statuses_from_notifications, current_user&.account_id)
+ end
+
+ render json: @notifications.map { |notification| NotificationGroup.from_notification(notification) }, each_serializer: REST::NotificationGroupSerializer, relationships: @relationships, group_metadata: @group_metadata
+ end
+
+ def show
+ @notification = current_account.notifications.without_suspended.find_by!(group_key: params[:id])
+ render json: NotificationGroup.from_notification(@notification), serializer: REST::NotificationGroupSerializer
+ end
+
+ def clear
+ current_account.notifications.delete_all
+ render_empty
+ end
+
+ def dismiss
+ current_account.notifications.where(group_key: params[:id]).destroy_all
+ render_empty
+ end
+
+ private
+
+ def load_notifications
+ notifications = browserable_account_notifications.includes(from_account: [:account_stat, :user]).to_a_grouped_paginated_by_id(
+ limit_param(DEFAULT_NOTIFICATIONS_LIMIT),
+ params_slice(:max_id, :since_id, :min_id)
+ )
+
+ Notification.preload_cache_collection_target_statuses(notifications) do |target_statuses|
+ preload_collection(target_statuses, Status)
+ end
+ end
+
+ def load_group_metadata
+ return {} if @notifications.empty?
+
+ browserable_account_notifications
+ .where(group_key: @notifications.filter_map(&:group_key))
+ .where(id: (@notifications.last.id)..(@notifications.first.id))
+ .group(:group_key)
+ .pluck(:group_key, 'min(notifications.id) as min_id', 'max(notifications.id) as max_id', 'max(notifications.created_at) as latest_notification_at')
+ .to_h { |group_key, min_id, max_id, latest_notification_at| [group_key, { min_id: min_id, max_id: max_id, latest_notification_at: latest_notification_at }] }
+ end
+
+ def browserable_account_notifications
+ current_account.notifications.without_suspended.browserable(
+ types: Array(browserable_params[:types]),
+ exclude_types: Array(browserable_params[:exclude_types]),
+ include_filtered: truthy_param?(:include_filtered)
+ )
+ end
+
+ def target_statuses_from_notifications
+ @notifications.filter_map(&:target_status)
+ end
+
+ def next_path
+ api_v2_alpha_notifications_url pagination_params(max_id: pagination_max_id) unless @notifications.empty?
+ end
+
+ def prev_path
+ api_v2_alpha_notifications_url pagination_params(min_id: pagination_since_id) unless @notifications.empty?
+ end
+
+ def pagination_collection
+ @notifications
+ end
+
+ def browserable_params
+ params.permit(:include_filtered, types: [], exclude_types: [])
+ end
+
+ def pagination_params(core_params)
+ params.slice(:limit, :types, :exclude_types, :include_filtered).permit(:limit, :include_filtered, types: [], exclude_types: []).merge(core_params)
+ end
+end
diff --git a/app/controllers/concerns/api/pagination.rb b/app/controllers/concerns/api/pagination.rb
index d84a1d99f7..7f06dc0202 100644
--- a/app/controllers/concerns/api/pagination.rb
+++ b/app/controllers/concerns/api/pagination.rb
@@ -3,6 +3,8 @@
module Api::Pagination
extend ActiveSupport::Concern
+ PAGINATION_PARAMS = %i(limit).freeze
+
protected
def pagination_max_id
@@ -24,6 +26,13 @@ module Api::Pagination
render json: { error: 'Pagination values for `offset` and `limit` must be positive' }, status: 400 if pagination_options_invalid?
end
+ def pagination_params(core_params)
+ params
+ .slice(*PAGINATION_PARAMS)
+ .permit(*PAGINATION_PARAMS)
+ .merge(core_params)
+ end
+
private
def insert_pagination_headers
diff --git a/app/controllers/settings/applications_controller.rb b/app/controllers/settings/applications_controller.rb
index 6849979b11..d6573f9b49 100644
--- a/app/controllers/settings/applications_controller.rb
+++ b/app/controllers/settings/applications_controller.rb
@@ -13,7 +13,7 @@ class Settings::ApplicationsController < Settings::BaseController
def new
@application = Doorkeeper::Application.new(
redirect_uri: Doorkeeper.configuration.native_redirect_uri,
- scopes: 'read:me'
+ scopes: 'profile'
)
end
diff --git a/app/javascript/mastodon/features/account_timeline/index.jsx b/app/javascript/mastodon/features/account_timeline/index.jsx
index 5ec029593d..0478f7a1a1 100644
--- a/app/javascript/mastodon/features/account_timeline/index.jsx
+++ b/app/javascript/mastodon/features/account_timeline/index.jsx
@@ -199,6 +199,7 @@ class AccountTimeline extends ImmutablePureComponent {
emptyMessage={emptyMessage}
bindToDocument={!multiColumn}
timelineId='account'
+ withCounters
/>
);
diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json
index 95d60b71eb..b17172058b 100644
--- a/app/javascript/mastodon/locales/bg.json
+++ b/app/javascript/mastodon/locales/bg.json
@@ -414,6 +414,7 @@
"limited_account_hint.action": "Показване на профила въпреки това",
"limited_account_hint.title": "Този профил е бил скрит от модераторите на {domain}.",
"link_preview.author": "От {name}",
+ "link_preview.more_from_author": "Още от {name}",
"lists.account.add": "Добавяне към списък",
"lists.account.remove": "Премахване от списъка",
"lists.delete": "Изтриване на списъка",
diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json
index a23d537331..ae2968087b 100644
--- a/app/javascript/mastodon/locales/da.json
+++ b/app/javascript/mastodon/locales/da.json
@@ -221,6 +221,8 @@
"domain_pill.activitypub_like_language": "ActivityPub er \"sproget\", Mastodon taler med andre sociale netværk.",
"domain_pill.server": "Server",
"domain_pill.their_handle": "Vedkommendes handle:",
+ "domain_pill.their_server": "Det digitale hjem, hvor alle indlæggene findes.",
+ "domain_pill.their_username": "Entydig identifikator på denne server. Det er muligt at finde brugere med samme brugernavn på forskellige servere.",
"domain_pill.username": "Brugernavn",
"domain_pill.whats_in_a_handle": "Hvad er der i et handle (@brugernavn)?",
"domain_pill.who_they_are": "Da et handle fortæller, hvem nogen er, og hvor de er, kan man interagere med folk på tværs af det sociale net af .",
@@ -412,6 +414,7 @@
"limited_account_hint.action": "Vis profil alligevel",
"limited_account_hint.title": "Denne profil er blevet skjult af {domain}-moderatorerne.",
"link_preview.author": "Af {name}",
+ "link_preview.more_from_author": "Mere fra {name}",
"lists.account.add": "Føj til liste",
"lists.account.remove": "Fjern fra liste",
"lists.delete": "Slet liste",
diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json
index 5776641079..ef08e9b6d3 100644
--- a/app/javascript/mastodon/locales/de.json
+++ b/app/javascript/mastodon/locales/de.json
@@ -414,6 +414,7 @@
"limited_account_hint.action": "Profil trotzdem anzeigen",
"limited_account_hint.title": "Dieses Profil wurde von den Moderator*innen von {domain} ausgeblendet.",
"link_preview.author": "Von {name}",
+ "link_preview.more_from_author": "Mehr von {name}",
"lists.account.add": "Zur Liste hinzufügen",
"lists.account.remove": "Von der Liste entfernen",
"lists.delete": "Liste löschen",
diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json
index 1a99d1d4b4..564d7ec57f 100644
--- a/app/javascript/mastodon/locales/es-MX.json
+++ b/app/javascript/mastodon/locales/es-MX.json
@@ -414,6 +414,7 @@
"limited_account_hint.action": "Mostrar perfil de todos modos",
"limited_account_hint.title": "Este perfil ha sido ocultado por los moderadores de {domain}.",
"link_preview.author": "Por {name}",
+ "link_preview.more_from_author": "Más de {name}",
"lists.account.add": "Añadir a lista",
"lists.account.remove": "Quitar de lista",
"lists.delete": "Borrar lista",
diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json
index 1782a3a1fe..14d3bf0dda 100644
--- a/app/javascript/mastodon/locales/es.json
+++ b/app/javascript/mastodon/locales/es.json
@@ -414,6 +414,7 @@
"limited_account_hint.action": "Mostrar perfil de todos modos",
"limited_account_hint.title": "Este perfil ha sido ocultado por los moderadores de {domain}.",
"link_preview.author": "Por {name}",
+ "link_preview.more_from_author": "Más de {name}",
"lists.account.add": "Añadir a lista",
"lists.account.remove": "Quitar de lista",
"lists.delete": "Borrar lista",
diff --git a/app/javascript/mastodon/locales/fo.json b/app/javascript/mastodon/locales/fo.json
index f22a829c0c..b77f609a2f 100644
--- a/app/javascript/mastodon/locales/fo.json
+++ b/app/javascript/mastodon/locales/fo.json
@@ -414,6 +414,7 @@
"limited_account_hint.action": "Vís vangamynd kortini",
"limited_account_hint.title": "Hesin vangin er fjaldur av kjakleiðarunum á {domain}.",
"link_preview.author": "Av {name}",
+ "link_preview.more_from_author": "Meira frá {name}",
"lists.account.add": "Legg afturat lista",
"lists.account.remove": "Tak av lista",
"lists.delete": "Strika lista",
diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json
index a22f4767a6..8048045c5c 100644
--- a/app/javascript/mastodon/locales/fy.json
+++ b/app/javascript/mastodon/locales/fy.json
@@ -89,9 +89,12 @@
"announcement.announcement": "Oankundiging",
"attachments_list.unprocessed": "(net ferwurke)",
"audio.hide": "Audio ferstopje",
+ "block_modal.remote_users_caveat": "Wy freegje de server {domain} om jo beslút te respektearjen. It neilibben hjirfan is echter net garandearre, omdat guon servers blokkaden oars ynterpretearje kinne. Iepenbiere berjochten binne mooglik noch hieltyd sichtber foar net-oanmelde brûkers.",
"block_modal.show_less": "Minder toane",
"block_modal.show_more": "Mear toane",
"block_modal.they_cant_mention": "Sy kinne jo net fermelde of folgje.",
+ "block_modal.they_cant_see_posts": "De persoan kin jo berjochten net sjen en jo ek net harren berjochten.",
+ "block_modal.they_will_know": "De persoan kin sjen dat dy blokkearre wurdt.",
"block_modal.title": "Brûker blokkearje?",
"block_modal.you_wont_see_mentions": "Jo sjogge gjin berjochten mear dy’t dizze account fermelde.",
"boost_modal.combo": "Jo kinne op {combo} drukke om dit de folgjende kear oer te slaan",
@@ -214,11 +217,15 @@
"domain_block_modal.title": "Domein blokkearje?",
"domain_block_modal.you_will_lose_followers": "Al jo folgers fan dizze server wurde ûntfolge.",
"domain_block_modal.you_wont_see_posts": "Jo sjogge gjin berjochten of meldingen mear fan brûkers op dizze server.",
+ "domain_pill.activitypub_lets_connect": "It soarget derfoar dat jo net allinnich mar ferbine en kommunisearje kinne mei minsken op Mastodon, mar ek mei oare sosjale apps.",
+ "domain_pill.activitypub_like_language": "ActivityPub is de taal dy’t Mastodon mei oare sosjale netwurken sprekt.",
"domain_pill.server": "Server",
"domain_pill.their_handle": "Harren fediverse-adres:",
"domain_pill.their_server": "Harren digitale thús, wer’t al harren berjochten binne.",
+ "domain_pill.their_username": "Harren unike identifikaasje-adres op harren server. It is mooglik dat der brûkers mei deselde brûkersnamme op ferskate servers te finen binne.",
"domain_pill.username": "Brûkersnamme",
"domain_pill.whats_in_a_handle": "Wat is in fediverse-adres?",
+ "domain_pill.who_they_are": "Omdat jo oan in fediverse-adres sjen kinne hoe’t ien hjit en op hokker server dy sit, kinne jo mei minsken op it troch sosjale web (fediverse) kommunisearje.",
"domain_pill.your_handle": "Jo fediverse-adres:",
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Sa komt it der út te sjen:",
diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json
index 600de39597..dddc318473 100644
--- a/app/javascript/mastodon/locales/he.json
+++ b/app/javascript/mastodon/locales/he.json
@@ -414,6 +414,7 @@
"limited_account_hint.action": "הצג חשבון בכל זאת",
"limited_account_hint.title": "פרופיל המשתמש הזה הוסתר על ידי המנחים של {domain}.",
"link_preview.author": "מאת {name}",
+ "link_preview.more_from_author": "עוד מאת {name}",
"lists.account.add": "הוסף לרשימה",
"lists.account.remove": "הסר מרשימה",
"lists.delete": "מחיקת רשימה",
diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json
index ba7fd6ddc2..dfb4b539d8 100644
--- a/app/javascript/mastodon/locales/hu.json
+++ b/app/javascript/mastodon/locales/hu.json
@@ -414,6 +414,7 @@
"limited_account_hint.action": "Profil megjelenítése mindenképpen",
"limited_account_hint.title": "Ezt a profilt {domain} moderátorai elrejtették.",
"link_preview.author": "{name} szerint",
+ "link_preview.more_from_author": "Több tőle: {name}",
"lists.account.add": "Hozzáadás a listához",
"lists.account.remove": "Eltávolítás a listából",
"lists.delete": "Lista törlése",
diff --git a/app/javascript/mastodon/locales/ia.json b/app/javascript/mastodon/locales/ia.json
index 47c64e3f0d..ce4e89e99a 100644
--- a/app/javascript/mastodon/locales/ia.json
+++ b/app/javascript/mastodon/locales/ia.json
@@ -58,7 +58,7 @@
"account.open_original_page": "Aperir le pagina original",
"account.posts": "Messages",
"account.posts_with_replies": "Messages e responsas",
- "account.report": "Signalar @{name}",
+ "account.report": "Reportar @{name}",
"account.requested": "Attendente le approbation. Clicca pro cancellar le requesta de sequer",
"account.requested_follow": "{name} ha requestate de sequer te",
"account.share": "Compartir profilo de @{name}",
@@ -215,8 +215,8 @@
"domain_block_modal.they_cant_follow": "Necuno de iste servitor pote sequer te.",
"domain_block_modal.they_wont_know": "Ille non sapera que ille ha essite blocate.",
"domain_block_modal.title": "Blocar dominio?",
- "domain_block_modal.you_will_lose_followers": "Omne sequitores ab iste servitor essera removite.",
- "domain_block_modal.you_wont_see_posts": "Tu non videra messages e notificationes ab usatores sur iste servitor.",
+ "domain_block_modal.you_will_lose_followers": "Tote tu sequitores de iste servitor essera removite.",
+ "domain_block_modal.you_wont_see_posts": "Tu non videra messages e notificationes de usatores sur iste servitor.",
"domain_pill.activitypub_lets_connect": "Illo te permitte connecter e interager con personas non solmente sur Mastodon, ma tamben sur altere applicationes social.",
"domain_pill.activitypub_like_language": "ActivityPub es como le linguage commun que Mastodon parla con altere retes social.",
"domain_pill.server": "Servitor",
@@ -274,7 +274,7 @@
"error.unexpected_crash.next_steps": "Tenta refrescar le pagina. Si isto non remedia le problema, es possibile que tu pote totevia usar Mastodon per medio de un altere navigator o application native.",
"error.unexpected_crash.next_steps_addons": "Tenta disactivar istes e refrescar le pagina. Si isto non remedia le problema, es possibile que tu pote totevia usar Mastodon per medio de un altere navigator o application native.",
"errors.unexpected_crash.copy_stacktrace": "Copiar le traciamento del pila al area de transferentia",
- "errors.unexpected_crash.report_issue": "Signalar un defecto",
+ "errors.unexpected_crash.report_issue": "Reportar problema",
"explore.search_results": "Resultatos de recerca",
"explore.suggested_follows": "Personas",
"explore.title": "Explorar",
@@ -389,7 +389,7 @@
"keyboard_shortcuts.hotkey": "Clave accelerator",
"keyboard_shortcuts.legend": "Monstrar iste legenda",
"keyboard_shortcuts.local": "Aperir le chronologia local",
- "keyboard_shortcuts.mention": "Mentionar le author",
+ "keyboard_shortcuts.mention": "Mentionar le autor",
"keyboard_shortcuts.muted": "Aperir lista de usatores silentiate",
"keyboard_shortcuts.my_profile": "Aperir tu profilo",
"keyboard_shortcuts.notifications": "Aperir columna de notificationes",
@@ -414,6 +414,7 @@
"limited_account_hint.action": "Monstrar profilo in omne caso",
"limited_account_hint.title": "Iste profilo ha essite celate per le moderatores de {domain}.",
"link_preview.author": "Per {name}",
+ "link_preview.more_from_author": "Plus de {name}",
"lists.account.add": "Adder al lista",
"lists.account.remove": "Remover del lista",
"lists.delete": "Deler lista",
@@ -467,14 +468,14 @@
"navigation_bar.search": "Cercar",
"navigation_bar.security": "Securitate",
"not_signed_in_indicator.not_signed_in": "Es necessari aperir session pro acceder a iste ressource.",
- "notification.admin.report": "{name} ha signalate {target}",
+ "notification.admin.report": "{name} ha reportate {target}",
"notification.admin.sign_up": "{name} se ha inscribite",
"notification.favourite": "{name} ha marcate tu message como favorite",
"notification.follow": "{name} te ha sequite",
"notification.follow_request": "{name} ha requestate de sequer te",
"notification.mention": "{name} te ha mentionate",
"notification.moderation-warning.learn_more": "Apprender plus",
- "notification.moderation_warning": "Tu ha recepite un aviso de moderation",
+ "notification.moderation_warning": "Tu ha recipite un advertimento de moderation",
"notification.moderation_warning.action_delete_statuses": "Alcunes de tu messages ha essite removite.",
"notification.moderation_warning.action_disable": "Tu conto ha essite disactivate.",
"notification.moderation_warning.action_mark_statuses_as_sensitive": "Alcunes de tu messages ha essite marcate como sensibile.",
@@ -493,12 +494,12 @@
"notification.status": "{name} ha justo ora publicate",
"notification.update": "{name} ha modificate un message",
"notification_requests.accept": "Acceptar",
- "notification_requests.dismiss": "Dimitter",
+ "notification_requests.dismiss": "Clauder",
"notification_requests.notifications_from": "Notificationes de {name}",
"notification_requests.title": "Notificationes filtrate",
"notifications.clear": "Rader notificationes",
"notifications.clear_confirmation": "Es tu secur que tu vole rader permanentemente tote tu notificationes?",
- "notifications.column_settings.admin.report": "Nove signalationes:",
+ "notifications.column_settings.admin.report": "Nove reportos:",
"notifications.column_settings.admin.sign_up": "Nove inscriptiones:",
"notifications.column_settings.alert": "Notificationes de scriptorio",
"notifications.column_settings.favourite": "Favorites:",
@@ -621,7 +622,7 @@
"relative_time.today": "hodie",
"reply_indicator.attachments": "{count, plural, one {# annexo} other {# annexos}}",
"reply_indicator.cancel": "Cancellar",
- "reply_indicator.poll": "Inquesta",
+ "reply_indicator.poll": "Sondage",
"report.block": "Blocar",
"report.block_explanation": "Tu non videra le messages de iste persona. Ille non potera vider tu messages o sequer te. Ille potera saper de esser blocate.",
"report.categories.legal": "Juridic",
@@ -635,7 +636,7 @@
"report.close": "Facite",
"report.comment.title": "Ha il altere cosas que nos deberea saper?",
"report.forward": "Reinviar a {target}",
- "report.forward_hint": "Le conto es de un altere servitor. Inviar un copia anonymisate del signalation a illo tamben?",
+ "report.forward_hint": "Le conto es de un altere servitor. Inviar un copia anonymisate del reporto a illo tamben?",
"report.mute": "Silentiar",
"report.mute_explanation": "Tu non videra le messages de iste persona. Ille pote totevia sequer te e vider tu messages e non sapera de esser silentiate.",
"report.next": "Sequente",
@@ -655,11 +656,11 @@
"report.statuses.subtitle": "Selige tote le responsas appropriate",
"report.statuses.title": "Existe alcun messages que appoia iste reporto?",
"report.submit": "Submitter",
- "report.target": "Signalamento de {target}",
+ "report.target": "Reportage de {target}",
"report.thanks.take_action": "Ecce tu optiones pro controlar lo que tu vide sur Mastodon:",
"report.thanks.take_action_actionable": "Durante que nos revide isto, tu pote prender mesuras contra @{name}:",
"report.thanks.title": "Non vole vider isto?",
- "report.thanks.title_actionable": "Gratias pro signalar, nos investigara isto.",
+ "report.thanks.title_actionable": "Gratias pro reportar, nos investigara isto.",
"report.unfollow": "Cessar de sequer @{name}",
"report.unfollow_explanation": "Tu seque iste conto. Pro non plus vider su messages in tu fluxo de initio, cessa de sequer lo.",
"report_notification.attached_statuses": "{count, plural, one {{count} message} other {{count} messages}} annexate",
@@ -677,7 +678,7 @@
"search.quick_action.status_search": "Messages correspondente a {x}",
"search.search_or_paste": "Cerca o colla un URL",
"search_popout.full_text_search_disabled_message": "Non disponibile sur {domain}.",
- "search_popout.full_text_search_logged_out_message": "Solmente disponibile al initiar le session.",
+ "search_popout.full_text_search_logged_out_message": "Solmente disponibile post aperir session.",
"search_popout.language_code": "Codice de lingua ISO",
"search_popout.options": "Optiones de recerca",
"search_popout.quick_actions": "Actiones rapide",
@@ -746,7 +747,7 @@
"status.replied_to": "Respondite a {name}",
"status.reply": "Responder",
"status.replyAll": "Responder al discussion",
- "status.report": "Signalar @{name}",
+ "status.report": "Reportar @{name}",
"status.sensitive_warning": "Contento sensibile",
"status.share": "Compartir",
"status.show_filter_reason": "Monstrar in omne caso",
@@ -757,7 +758,7 @@
"status.show_original": "Monstrar original",
"status.title.with_attachments": "{user} ha publicate {attachmentCount, plural, one {un annexo} other {{attachmentCount} annexos}}",
"status.translate": "Traducer",
- "status.translated_from_with": "Traducite ab {lang} usante {provider}",
+ "status.translated_from_with": "Traducite de {lang} usante {provider}",
"status.uncached_media_warning": "Previsualisation non disponibile",
"status.unmute_conversation": "Non plus silentiar conversation",
"status.unpin": "Disfixar del profilo",
@@ -796,7 +797,7 @@
"upload_modal.choose_image": "Seliger un imagine",
"upload_modal.description_placeholder": "Cinque expertos del zoo jam bibeva whisky frigide",
"upload_modal.detect_text": "Deteger texto de un imagine",
- "upload_modal.edit_media": "Modificar le medio",
+ "upload_modal.edit_media": "Modificar multimedia",
"upload_modal.hint": "Clicca o trahe le circulo sur le previsualisation pro eliger le puncto focal que essera sempre visibile sur tote le miniaturas.",
"upload_modal.preparing_ocr": "Preparation del OCR…",
"upload_modal.preview_label": "Previsualisation ({ratio})",
diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json
index f5bf7c3281..6ce72b43fc 100644
--- a/app/javascript/mastodon/locales/is.json
+++ b/app/javascript/mastodon/locales/is.json
@@ -414,6 +414,7 @@
"limited_account_hint.action": "Birta notandasniðið samt",
"limited_account_hint.title": "Þetta notandasnið hefur verið falið af umsjónarmönnum {domain}.",
"link_preview.author": "Eftir {name}",
+ "link_preview.more_from_author": "Meira frá {name}",
"lists.account.add": "Bæta á lista",
"lists.account.remove": "Fjarlægja af lista",
"lists.delete": "Eyða lista",
diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json
index 7cd74fa501..277a87fe3e 100644
--- a/app/javascript/mastodon/locales/ko.json
+++ b/app/javascript/mastodon/locales/ko.json
@@ -414,7 +414,7 @@
"limited_account_hint.action": "그래도 프로필 보기",
"limited_account_hint.title": "이 프로필은 {domain}의 중재자에 의해 숨겨진 상태입니다.",
"link_preview.author": "{name}",
- "link_preview.more_from_author": "{name} 더 둘러보기",
+ "link_preview.more_from_author": "{name} 프로필 보기",
"lists.account.add": "리스트에 추가",
"lists.account.remove": "리스트에서 제거",
"lists.delete": "리스트 삭제",
diff --git a/app/javascript/mastodon/locales/lad.json b/app/javascript/mastodon/locales/lad.json
index 533f074004..72299bb861 100644
--- a/app/javascript/mastodon/locales/lad.json
+++ b/app/javascript/mastodon/locales/lad.json
@@ -398,6 +398,7 @@
"limited_account_hint.action": "Amostra el profil entanto",
"limited_account_hint.title": "Este profil fue eskondido por los moderadores de {domain}.",
"link_preview.author": "Publikasyon de {name}",
+ "link_preview.more_from_author": "Mas de {name}",
"lists.account.add": "Adjusta a lista",
"lists.account.remove": "Kita de lista",
"lists.delete": "Efasa lista",
diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json
index 5fc7d32869..307230036c 100644
--- a/app/javascript/mastodon/locales/lt.json
+++ b/app/javascript/mastodon/locales/lt.json
@@ -217,7 +217,7 @@
"domain_block_modal.title": "Blokuoti domeną?",
"domain_block_modal.you_will_lose_followers": "Visi tavo sekėjai iš šio serverio bus pašalinti.",
"domain_block_modal.you_wont_see_posts": "Nematysi naudotojų įrašų ar pranešimų šiame serveryje.",
- "domain_pill.activitypub_lets_connect": "Tai leidžia tau sąveikauti su žmonėmis ne tik Mastodon, bet ir įvairiose socialinėse programėlėse.",
+ "domain_pill.activitypub_lets_connect": "Tai leidžia tau prisijungti ir bendrauti su žmonėmis ne tik Mastodon, bet ir įvairiose socialinėse programėlėse.",
"domain_pill.activitypub_like_language": "ActivityPub – tai tarsi kalba, kuria Mastodon kalba su kitais socialiniais tinklais.",
"domain_pill.server": "Serveris",
"domain_pill.their_handle": "Jų socialinis medijos vardas:",
@@ -414,6 +414,7 @@
"limited_account_hint.action": "Vis tiek rodyti profilį",
"limited_account_hint.title": "Šį profilį paslėpė {domain} prižiūrėtojai.",
"link_preview.author": "Sukūrė {name}",
+ "link_preview.more_from_author": "Daugiau iš {name}",
"lists.account.add": "Pridėti į sąrašą",
"lists.account.remove": "Pašalinti iš sąrašo",
"lists.delete": "Ištrinti sąrašą",
@@ -432,7 +433,15 @@
"loading_indicator.label": "Kraunama…",
"media_gallery.toggle_visible": "{number, plural, one {Slėpti vaizdą} few {Slėpti vaizdus} many {Slėpti vaizdo} other {Slėpti vaizdų}}",
"moved_to_account_banner.text": "Tavo paskyra {disabledAccount} šiuo metu išjungta, nes persikėlei į {movedToAccount}.",
+ "mute_modal.hide_from_notifications": "Slėpti nuo pranešimų",
+ "mute_modal.hide_options": "Slėpti parinktis",
+ "mute_modal.indefinite": "Kol atšauksiu jų nutildymą",
"mute_modal.show_options": "Rodyti parinktis",
+ "mute_modal.they_can_mention_and_follow": "Jie gali tave paminėti ir sekti, bet tu jų nematysi.",
+ "mute_modal.they_wont_know": "Jie nežinos, kad buvo nutildyti.",
+ "mute_modal.title": "Nutildyti naudotoją?",
+ "mute_modal.you_wont_see_mentions": "Nematysi įrašus, kuriuose jie paminimi.",
+ "mute_modal.you_wont_see_posts": "Jie vis tiek gali matyti tavo įrašus, bet tu nematysi jų.",
"navigation_bar.about": "Apie",
"navigation_bar.advanced_interface": "Atidaryti išplėstinę žiniatinklio sąsają",
"navigation_bar.blocks": "Užblokuoti naudotojai",
@@ -477,6 +486,7 @@
"notification.own_poll": "Tavo apklausa baigėsi",
"notification.poll": "Apklausa, kurioje balsavai, pasibaigė",
"notification.reblog": "{name} pakėlė tavo įrašą",
+ "notification.relationships_severance_event": "Prarasti sąryšiai su {name}",
"notification.relationships_severance_event.learn_more": "Sužinoti daugiau",
"notification.relationships_severance_event.user_domain_block": "Tu užblokavai {target}. Pašalinama {followersCount} savo sekėjų ir {followingCount, plural, one {# paskyrą} few {# paskyrai} many {# paskyros} other {# paskyrų}}, kurios seki.",
"notification.status": "{name} ką tik paskelbė",
@@ -561,7 +571,7 @@
"onboarding.steps.setup_profile.title": "Suasmenink savo profilį",
"onboarding.steps.share_profile.body": "Leisk draugams sužinoti, kaip tave rasti Mastodon.",
"onboarding.steps.share_profile.title": "Bendrink savo Mastodon profilį",
- "onboarding.tips.2fa": "Ar žinojai? Savo paskyrą gali apsaugoti nustatęs (-usi) dviejų veiksnių tapatybės nustatymą paskyros nustatymuose. Jis veikia su bet kuria pasirinkta TOTP programėle, telefono numeris nebūtinas.",
+ "onboarding.tips.2fa": "Ar žinojai? Savo paskyrą gali apsaugoti nustatant dviejų veiksnių tapatybės nustatymą paskyros nustatymuose. Jis veikia su bet kuria pasirinkta TOTP programėle, telefono numeris nebūtinas.",
"onboarding.tips.accounts_from_other_servers": "Ar žinojai? Kadangi Mastodon decentralizuotas, kai kurie profiliai, su kuriais susidursi, bus talpinami ne tavo, o kituose serveriuose. Ir vis tiek galėsi su jais sklandžiai bendrauti! Jų serveris yra antroje naudotojo vardo pusėje.",
"onboarding.tips.migration": "Ar žinojai? Jei manai, kad {domain} serveris ateityje tau netiks, gali persikelti į kitą Mastodon serverį neprarandant savo sekėjų. Gali net talpinti savo paties serverį.",
"onboarding.tips.verification": "Ar žinojai? Savo paskyrą gali patvirtinti pateikęs (-usi) nuorodą į Mastodon profilį savo interneto svetainėje ir pridėjęs (-usi) svetainę prie savo profilio. Nereikia jokių mokesčių ar dokumentų.",
@@ -632,7 +642,7 @@
"report.reasons.legal_description": "Manai, kad tai pažeidžia tavo arba serverio šalies įstatymus",
"report.reasons.other": "Tai kažkas kita",
"report.reasons.other_description": "Problema netinka kitoms kategorijoms",
- "report.reasons.spam": "Tai šlamštas",
+ "report.reasons.spam": "Tai – šlamštas",
"report.reasons.spam_description": "Kenkėjiškos nuorodos, netikras įsitraukimas arba pasikartojantys atsakymai",
"report.reasons.violation": "Tai pažeidžia serverio taisykles",
"report.reasons.violation_description": "Žinai, kad tai pažeidžia konkrečias taisykles",
diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json
index b61a2c0c36..efc45c9c08 100644
--- a/app/javascript/mastodon/locales/lv.json
+++ b/app/javascript/mastodon/locales/lv.json
@@ -92,6 +92,8 @@
"block_modal.remote_users_caveat": "Mēs vaicāsim serverim {domain} ņemt vērā Tavu lēmumu. Tomēr atbilstība nav nodrošināta, jo atsevišķi serveri var apstrādāt bloķēšanu citādi. Publiski ieraksti joprojām var būt redzami lietotājiem, kuri nav pieteikušies.",
"block_modal.show_less": "Rādīt mazāk",
"block_modal.show_more": "Parādīt mazāk",
+ "block_modal.they_cant_mention": "Nevar Tevi pieminēt vai sekot Tev.",
+ "block_modal.they_cant_see_posts": "Nevar redzēt Tavus ierakstus, un Tu neredzēsi lietotāja.",
"boost_modal.combo": "Nospied {combo}, lai nākamreiz šo izlaistu",
"bundle_column_error.copy_stacktrace": "Kopēt kļūdu ziņojumu",
"bundle_column_error.error.body": "Pieprasīto lapu nevarēja atveidot. Tas varētu būt saistīts ar kļūdu mūsu kodā, vai tā ir pārlūkprogrammas saderības problēma.",
@@ -173,7 +175,7 @@
"confirmations.discard_edit_media.message": "Ir nesaglabātas izmaiņas informācijas nesēja aprakstā vai priekšskatījumā. Vēlies tās atmest tik un tā?",
"confirmations.domain_block.message": "Vai tu tiešām vēlies bloķēt visu domēnu {domain}? Parasti pietiek, ja nobloķē vai apklusini kādu. Tu neredzēsi saturu vai paziņojumus no šī domēna nevienā laika līnijā. Tavi sekotāji no šī domēna tiks noņemti.",
"confirmations.edit.confirm": "Labot",
- "confirmations.edit.message": "Rediģējot, tiks pārrakstīts ziņojums, kuru tu šobrīd raksti. Vai tiešām vēlies turpināt?",
+ "confirmations.edit.message": "Labošana pārrakstīs ziņojumu, kas šobrīd tiek sastādīts. Vai tiešām turpināt?",
"confirmations.logout.confirm": "Iziet",
"confirmations.logout.message": "Vai tiešām vēlies izrakstīties?",
"confirmations.mute.confirm": "Apklusināt",
@@ -377,6 +379,7 @@
"limited_account_hint.action": "Tik un tā rādīt profilu",
"limited_account_hint.title": "{domain} moderatori ir paslēpuši šo profilu.",
"link_preview.author": "Pēc {name}",
+ "link_preview.more_from_author": "Vairāk no {name}",
"lists.account.add": "Pievienot sarakstam",
"lists.account.remove": "Noņemt no saraksta",
"lists.delete": "Izdzēst sarakstu",
@@ -444,16 +447,19 @@
"notification.relationships_severance_event": "Zaudēti savienojumi ar {name}",
"notification.relationships_severance_event.learn_more": "Uzzināt vairāk",
"notification.status": "{name} tikko publicēja",
- "notification.update": "{name} rediģēja ierakstu",
+ "notification.update": "{name} laboja ierakstu",
"notification_requests.accept": "Pieņemt",
"notification_requests.dismiss": "Noraidīt",
"notification_requests.notifications_from": "Paziņojumi no {name}",
+ "notification_requests.title": "Atlasītie paziņojumi",
"notifications.clear": "Notīrīt paziņojumus",
"notifications.clear_confirmation": "Vai tiešām vēlies neatgriezeniski notīrīt visus savus paziņojumus?",
"notifications.column_settings.admin.report": "Jauni ziņojumi:",
"notifications.column_settings.admin.sign_up": "Jaunas pierakstīšanās:",
"notifications.column_settings.alert": "Darbvirsmas paziņojumi",
"notifications.column_settings.favourite": "Izlase:",
+ "notifications.column_settings.filter_bar.advanced": "Attēlot visas kategorijas",
+ "notifications.column_settings.filter_bar.category": "Atrās atlasīšanas josla",
"notifications.column_settings.follow": "Jauni sekotāji:",
"notifications.column_settings.follow_request": "Jauni sekošanas pieprasījumi:",
"notifications.column_settings.mention": "Pieminēšanas:",
@@ -481,7 +487,9 @@
"notifications.permission_required": "Darbvirsmas paziņojumi nav pieejami, jo nav piešķirta nepieciešamā atļauja.",
"notifications.policy.filter_new_accounts_title": "Jauni konti",
"notifications.policy.filter_not_followers_title": "Cilvēki, kuri Tev neseko",
+ "notifications.policy.filter_not_following_hint": "Līdz tos pašrocīgi apstiprināsi",
"notifications.policy.filter_not_following_title": "Cilvēki, kuriem Tu neseko",
+ "notifications.policy.title": "Atlasīt paziņojumus no…",
"notifications_permission_banner.enable": "Iespējot darbvirsmas paziņojumus",
"notifications_permission_banner.how_to_control": "Lai saņemtu paziņojumus, kad Mastodon nav atvērts, iespējo darbvirsmas paziņojumus. Vari precīzi kontrolēt, kāda veida mijiedarbības rada darbvirsmas paziņojumus, izmantojot augstāk redzamo pogu {icon}, kad tie būs iespējoti.",
"notifications_permission_banner.title": "Nekad nepalaid neko garām",
@@ -539,7 +547,9 @@
"privacy.direct.short": "Noteikti cilvēki",
"privacy.private.long": "Tikai Tavi sekotāji",
"privacy.private.short": "Sekotāji",
+ "privacy.public.long": "Jebkurš Mastodon un ārpus tā",
"privacy.public.short": "Publiska",
+ "privacy.unlisted.long": "Mazāk algoritmisku fanfaru",
"privacy_policy.last_updated": "Pēdējo reizi atjaunināta {date}",
"privacy_policy.title": "Privātuma politika",
"recommended": "Ieteicams",
@@ -557,6 +567,7 @@
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
"relative_time.today": "šodien",
+ "reply_indicator.attachments": "{count, plural, zero{# pielikumu} one {# pielikums} other {# pielikumi}}",
"reply_indicator.cancel": "Atcelt",
"reply_indicator.poll": "Aptauja",
"report.block": "Bloķēt",
@@ -630,7 +641,7 @@
"search_results.title": "Meklēt {q}",
"server_banner.about_active_users": "Cilvēki, kas izmantojuši šo serveri pēdējo 30 dienu laikā (aktīvie lietotāji mēnesī)",
"server_banner.active_users": "aktīvi lietotāji",
- "server_banner.administered_by": "Administrē:",
+ "server_banner.administered_by": "Pārvalda:",
"server_banner.introduction": "{domain} ir daļa no decentralizētā sociālā tīkla, ko nodrošina {mastodon}.",
"server_banner.learn_more": "Uzzināt vairāk",
"server_banner.server_stats": "Servera statistika:",
@@ -652,9 +663,10 @@
"status.direct_indicator": "Pieminēts privāti",
"status.edit": "Labot",
"status.edited": "Pēdējoreiz labots {date}",
- "status.edited_x_times": "Labots {count, plural, one {{count} reizi} other {{count} reizes}}",
+ "status.edited_x_times": "Labots {count, plural, zero {{count} reižu} one {{count} reizi} other {{count} reizes}}",
"status.embed": "Iegult",
"status.favourite": "Izlasē",
+ "status.favourites": "{count, plural, zero {izlasēs} one {izlasē} other {izlasēs}}",
"status.filter": "Filtrē šo ziņu",
"status.filtered": "Filtrēts",
"status.hide": "Slēpt ierakstu",
@@ -675,6 +687,7 @@
"status.reblog": "Pastiprināt",
"status.reblog_private": "Pastiprināt, nemainot redzamību",
"status.reblogged_by": "{name} pastiprināja",
+ "status.reblogs": "{count, plural, zero {pastiprinājumu} one {pastiprinājums} other {pastiprinājumi}}",
"status.reblogs.empty": "Neviens šo ierakstu vēl nav pastiprinājis. Kad būs, tie parādīsies šeit.",
"status.redraft": "Dzēst un pārrakstīt",
"status.remove_bookmark": "Noņemt grāmatzīmi",
diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json
index a00b39e838..c07294d90a 100644
--- a/app/javascript/mastodon/locales/mr.json
+++ b/app/javascript/mastodon/locales/mr.json
@@ -17,9 +17,12 @@
"account.badges.group": "गट",
"account.block": "@{name} यांना ब्लॉक करा",
"account.block_domain": "{domain} पासून सर्व लपवा",
+ "account.block_short": "अवरोध",
"account.blocked": "ब्लॉक केले आहे",
"account.browse_more_on_origin_server": "मूळ प्रोफाइलवर अधिक ब्राउझ करा",
"account.cancel_follow_request": "फॉलो विनंती मागे घ्या",
+ "account.copy": "दुवा कॉपी करा",
+ "account.direct": "खाजगीरित्या उल्लेखीत @{name}",
"account.disable_notifications": "जेव्हा @{name} पोस्ट करतात तेव्हा मला सूचित करणे थांबवा",
"account.domain_blocked": "Domain hidden",
"account.edit_profile": "प्रोफाइल एडिट करा",
@@ -29,6 +32,7 @@
"account.featured_tags.last_status_never": "पोस्ट नाहीत",
"account.featured_tags.title": "{name} चे वैशिष्ट्यीकृत हॅशटॅग",
"account.follow": "अनुयायी व्हा",
+ "account.follow_back": "आपणही अनुसरण करा",
"account.followers": "अनुयायी",
"account.followers.empty": "ह्या वापरकर्त्याचा आतापर्यंत कोणी अनुयायी नाही.",
"account.followers_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
@@ -45,6 +49,7 @@
"account.mention": "@{name} चा उल्लेख करा",
"account.moved_to": "{name} ने सूचित केले आहे की त्यांचे नवीन खाते आता आहे:",
"account.mute": "@{name} ला मूक कारा",
+ "account.mute_short": "नि:शब्द",
"account.muted": "मौन",
"account.open_original_page": "मूळ पृष्ठ उघडा",
"account.posts": "Toots",
diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json
index 1958e4a6a0..bf081ad588 100644
--- a/app/javascript/mastodon/locales/nl.json
+++ b/app/javascript/mastodon/locales/nl.json
@@ -414,6 +414,7 @@
"limited_account_hint.action": "Alsnog het profiel tonen",
"limited_account_hint.title": "Dit profiel is door de moderatoren van {domain} verborgen.",
"link_preview.author": "Door {name}",
+ "link_preview.more_from_author": "Meer van {name}",
"lists.account.add": "Aan lijst toevoegen",
"lists.account.remove": "Uit lijst verwijderen",
"lists.delete": "Lijst verwijderen",
diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json
index c583b58220..9b5be21f9d 100644
--- a/app/javascript/mastodon/locales/sk.json
+++ b/app/javascript/mastodon/locales/sk.json
@@ -391,6 +391,7 @@
"limited_account_hint.action": "Aj tak zobraziť profil",
"limited_account_hint.title": "Tento profil bol skrytý správcami servera {domain}.",
"link_preview.author": "Autor: {name}",
+ "link_preview.more_from_author": "Viac od {name}",
"lists.account.add": "Pridať do zoznamu",
"lists.account.remove": "Odstrániť zo zoznamu",
"lists.delete": "Vymazať zoznam",
@@ -411,6 +412,7 @@
"moved_to_account_banner.text": "Váš účet {disabledAccount} je momentálne deaktivovaný, pretože ste sa presunuli na {movedToAccount}.",
"mute_modal.hide_from_notifications": "Ukryť z upozornení",
"mute_modal.hide_options": "Skryť možnosti",
+ "mute_modal.indefinite": "Pokiaľ ich neodtíšim",
"mute_modal.show_options": "Zobraziť možnosti",
"mute_modal.title": "Stíšiť užívateľa?",
"navigation_bar.about": "O tomto serveri",
diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json
index b496f8e203..6b3c5fbd90 100644
--- a/app/javascript/mastodon/locales/sq.json
+++ b/app/javascript/mastodon/locales/sq.json
@@ -414,6 +414,7 @@
"limited_account_hint.action": "Shfaqe profilin sido qoftë",
"limited_account_hint.title": "Ky profil është fshehur nga moderatorët e {domain}.",
"link_preview.author": "Nga {name}",
+ "link_preview.more_from_author": "Më tepër nga {name}",
"lists.account.add": "Shto në listë",
"lists.account.remove": "Hiqe nga lista",
"lists.delete": "Fshije listën",
diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json
index 67b706fa13..a78b9ff5b4 100644
--- a/app/javascript/mastodon/locales/sr-Latn.json
+++ b/app/javascript/mastodon/locales/sr-Latn.json
@@ -414,6 +414,7 @@
"limited_account_hint.action": "Ipak prikaži profil",
"limited_account_hint.title": "Ovaj profil su sakrili moderatori {domain}.",
"link_preview.author": "Po {name}",
+ "link_preview.more_from_author": "Više od {name}",
"lists.account.add": "Dodaj na listu",
"lists.account.remove": "Ukloni sa liste",
"lists.delete": "Izbriši listu",
diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json
index 9898a10a3e..5c14faea85 100644
--- a/app/javascript/mastodon/locales/sr.json
+++ b/app/javascript/mastodon/locales/sr.json
@@ -414,6 +414,7 @@
"limited_account_hint.action": "Ипак прикажи профил",
"limited_account_hint.title": "Овај профил су сакрили модератори {domain}.",
"link_preview.author": "По {name}",
+ "link_preview.more_from_author": "Више од {name}",
"lists.account.add": "Додај на листу",
"lists.account.remove": "Уклони са листе",
"lists.delete": "Избриши листу",
diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json
index ba3a6b2f51..a1d478b7ad 100644
--- a/app/javascript/mastodon/locales/sv.json
+++ b/app/javascript/mastodon/locales/sv.json
@@ -414,6 +414,7 @@
"limited_account_hint.action": "Visa profil ändå",
"limited_account_hint.title": "Denna profil har dolts av {domain}s moderatorer.",
"link_preview.author": "Av {name}",
+ "link_preview.more_from_author": "Mer från {name}",
"lists.account.add": "Lägg till i lista",
"lists.account.remove": "Ta bort från lista",
"lists.delete": "Radera lista",
diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json
index b1b9407ba1..e16e393575 100644
--- a/app/javascript/mastodon/locales/th.json
+++ b/app/javascript/mastodon/locales/th.json
@@ -414,6 +414,7 @@
"limited_account_hint.action": "แสดงโปรไฟล์ต่อไป",
"limited_account_hint.title": "มีการซ่อนโปรไฟล์นี้โดยผู้กลั่นกรองของ {domain}",
"link_preview.author": "โดย {name}",
+ "link_preview.more_from_author": "เพิ่มเติมจาก {name}",
"lists.account.add": "เพิ่มไปยังรายการ",
"lists.account.remove": "เอาออกจากรายการ",
"lists.delete": "ลบรายการ",
diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json
index 6c01106593..c0f8d083ad 100644
--- a/app/javascript/mastodon/locales/tr.json
+++ b/app/javascript/mastodon/locales/tr.json
@@ -414,6 +414,7 @@
"limited_account_hint.action": "Yine de profili göster",
"limited_account_hint.title": "Bu profil {domain} moderatörleri tarafından gizlendi.",
"link_preview.author": "Yazar: {name}",
+ "link_preview.more_from_author": "{name} kişisinden daha fazlası",
"lists.account.add": "Listeye ekle",
"lists.account.remove": "Listeden kaldır",
"lists.delete": "Listeyi sil",
diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json
index 3a7f63206d..f750fce040 100644
--- a/app/javascript/mastodon/locales/uk.json
+++ b/app/javascript/mastodon/locales/uk.json
@@ -414,6 +414,7 @@
"limited_account_hint.action": "Усе одно показати профіль",
"limited_account_hint.title": "Цей профіль сховали модератори {domain}.",
"link_preview.author": "Від {name}",
+ "link_preview.more_from_author": "Більше від {name}",
"lists.account.add": "Додати до списку",
"lists.account.remove": "Вилучити зі списку",
"lists.delete": "Видалити список",
diff --git a/app/lib/admin/metrics/dimension/software_versions_dimension.rb b/app/lib/admin/metrics/dimension/software_versions_dimension.rb
index 97cdaf589e..9dd0d393f9 100644
--- a/app/lib/admin/metrics/dimension/software_versions_dimension.rb
+++ b/app/lib/admin/metrics/dimension/software_versions_dimension.rb
@@ -10,7 +10,7 @@ class Admin::Metrics::Dimension::SoftwareVersionsDimension < Admin::Metrics::Dim
protected
def perform_query
- [mastodon_version, ruby_version, postgresql_version, redis_version, elasticsearch_version].compact
+ [mastodon_version, ruby_version, postgresql_version, redis_version, elasticsearch_version, libvips_version].compact
end
def mastodon_version
@@ -71,6 +71,17 @@ class Admin::Metrics::Dimension::SoftwareVersionsDimension < Admin::Metrics::Dim
nil
end
+ def libvips_version
+ return unless Rails.configuration.x.use_vips
+
+ {
+ key: 'libvips',
+ human_key: 'libvips',
+ value: Vips.version_string,
+ human_value: Vips.version_string,
+ }
+ end
+
def redis_info
@redis_info ||= if redis.is_a?(Redis::Namespace)
redis.redis.info
diff --git a/app/lib/scope_transformer.rb b/app/lib/scope_transformer.rb
index adcb711f8a..7dda709229 100644
--- a/app/lib/scope_transformer.rb
+++ b/app/lib/scope_transformer.rb
@@ -11,6 +11,9 @@ class ScopeTransformer < Parslet::Transform
@namespace = scope[:namespace]&.to_s
@access = scope[:access] ? [scope[:access].to_s] : DEFAULT_ACCESS.dup
@term = scope[:term]&.to_s || DEFAULT_TERM
+
+ # # override for profile scope which is read only
+ @access = %w(read) if @term == 'profile'
end
def key
diff --git a/app/models/concerns/attachmentable.rb b/app/models/concerns/attachmentable.rb
index f457f5822b..a83e178fc4 100644
--- a/app/models/concerns/attachmentable.rb
+++ b/app/models/concerns/attachmentable.rb
@@ -69,7 +69,7 @@ module Attachmentable
original_extension = Paperclip::Interpolations.extension(attachment, :original)
proper_extension = extensions_for_mime_type.first.to_s
extension = extensions_for_mime_type.include?(original_extension) ? original_extension : proper_extension
- extension = 'jpeg' if extension == 'jpe'
+ extension = 'jpeg' if ['jpe', 'jfif'].include?(extension)
extension
end
diff --git a/app/models/link_feed.rb b/app/models/link_feed.rb
new file mode 100644
index 0000000000..32efb331b6
--- /dev/null
+++ b/app/models/link_feed.rb
@@ -0,0 +1,35 @@
+# frozen_string_literal: true
+
+class LinkFeed < PublicFeed
+ # @param [PreviewCard] preview_card
+ # @param [Account] account
+ # @param [Hash] options
+ def initialize(preview_card, account, options = {})
+ @preview_card = preview_card
+ super(account, options)
+ end
+
+ # @param [Integer] limit
+ # @param [Integer] max_id
+ # @param [Integer] since_id
+ # @param [Integer] min_id
+ # @return [Array]
+ def get(limit, max_id = nil, since_id = nil, min_id = nil)
+ scope = public_scope
+
+ scope.merge!(discoverable)
+ scope.merge!(attached_to_preview_card)
+
+ scope.to_a_paginated_by_id(limit, max_id: max_id, since_id: since_id, min_id: min_id)
+ end
+
+ private
+
+ def attached_to_preview_card
+ Status.joins(:preview_cards_status).where(preview_cards_status: { preview_card_id: @preview_card.id })
+ end
+
+ def discoverable
+ Account.discoverable
+ end
+end
diff --git a/app/models/notification.rb b/app/models/notification.rb
index 7cbab4dc8c..e3deaa5348 100644
--- a/app/models/notification.rb
+++ b/app/models/notification.rb
@@ -13,6 +13,7 @@
# from_account_id :bigint(8) not null
# type :string
# filtered :boolean default(FALSE), not null
+# group_key :string
#
class Notification < ApplicationRecord
@@ -136,6 +137,67 @@ class Notification < ApplicationRecord
end
end
+ # This returns notifications from the request page, but with at most one notification per group.
+ # Notifications that have no `group_key` each count as a separate group.
+ def paginate_groups_by_max_id(limit, max_id: nil, since_id: nil)
+ query = reorder(id: :desc)
+ query = query.where(id: ...max_id) if max_id.present?
+ query = query.where(id: (since_id + 1)...) if since_id.present?
+
+ unscoped
+ .with_recursive(
+ grouped_notifications: [
+ query
+ .select('notifications.*', "ARRAY[COALESCE(notifications.group_key, 'ungrouped-' || notifications.id)] groups")
+ .limit(1),
+ query
+ .joins('CROSS JOIN grouped_notifications')
+ .where('notifications.id < grouped_notifications.id')
+ .where.not("COALESCE(notifications.group_key, 'ungrouped-' || notifications.id) = ANY(grouped_notifications.groups)")
+ .select('notifications.*', "array_append(grouped_notifications.groups, COALESCE(notifications.group_key, 'ungrouped-' || notifications.id))")
+ .limit(1),
+ ]
+ )
+ .from('grouped_notifications AS notifications')
+ .order(id: :desc)
+ .limit(limit)
+ end
+
+ # Differs from :paginate_groups_by_max_id in that it gives the results immediately following min_id,
+ # whereas since_id gives the items with largest id, but with since_id as a cutoff.
+ # Results will be in ascending order by id.
+ def paginate_groups_by_min_id(limit, max_id: nil, min_id: nil)
+ query = reorder(id: :asc)
+ query = query.where(id: (min_id + 1)...) if min_id.present?
+ query = query.where(id: ...max_id) if max_id.present?
+
+ unscoped
+ .with_recursive(
+ grouped_notifications: [
+ query
+ .select('notifications.*', "ARRAY[COALESCE(notifications.group_key, 'ungrouped-' || notifications.id)] groups")
+ .limit(1),
+ query
+ .joins('CROSS JOIN grouped_notifications')
+ .where('notifications.id > grouped_notifications.id')
+ .where.not("COALESCE(notifications.group_key, 'ungrouped-' || notifications.id) = ANY(grouped_notifications.groups)")
+ .select('notifications.*', "array_append(grouped_notifications.groups, COALESCE(notifications.group_key, 'ungrouped-' || notifications.id))")
+ .limit(1),
+ ]
+ )
+ .from('grouped_notifications AS notifications')
+ .order(id: :asc)
+ .limit(limit)
+ end
+
+ def to_a_grouped_paginated_by_id(limit, options = {})
+ if options[:min_id].present?
+ paginate_groups_by_min_id(limit, min_id: options[:min_id], max_id: options[:max_id]).reverse
+ else
+ paginate_groups_by_max_id(limit, max_id: options[:max_id], since_id: options[:since_id]).to_a
+ end
+ end
+
def preload_cache_collection_target_statuses(notifications, &_block)
notifications.group_by(&:type).each do |type, grouped_notifications|
associations = TARGET_STATUS_INCLUDES_BY_TYPE[type]
diff --git a/app/models/notification_group.rb b/app/models/notification_group.rb
new file mode 100644
index 0000000000..07967f9dcb
--- /dev/null
+++ b/app/models/notification_group.rb
@@ -0,0 +1,29 @@
+# frozen_string_literal: true
+
+class NotificationGroup < ActiveModelSerializers::Model
+ attributes :group_key, :sample_accounts, :notifications_count, :notification
+
+ def self.from_notification(notification)
+ if notification.group_key.present?
+ # TODO: caching and preloading
+ sample_accounts = notification.account.notifications.where(group_key: notification.group_key).order(id: :desc).limit(3).map(&:from_account)
+ notifications_count = notification.account.notifications.where(group_key: notification.group_key).count
+ else
+ sample_accounts = [notification.from_account]
+ notifications_count = 1
+ end
+
+ NotificationGroup.new(
+ notification: notification,
+ group_key: notification.group_key || "ungrouped-#{notification.id}",
+ sample_accounts: sample_accounts,
+ notifications_count: notifications_count
+ )
+ end
+
+ delegate :type,
+ :target_status,
+ :report,
+ :account_relationship_severance_event,
+ to: :notification, prefix: false
+end
diff --git a/app/models/preview_card.rb b/app/models/preview_card.rb
index 11fdd9d88a..cbfc393786 100644
--- a/app/models/preview_card.rb
+++ b/app/models/preview_card.rb
@@ -57,7 +57,11 @@ class PreviewCard < ApplicationRecord
has_one :trend, class_name: 'PreviewCardTrend', inverse_of: :preview_card, dependent: :destroy
belongs_to :author_account, class_name: 'Account', optional: true
- has_attached_file :image, processors: [:thumbnail, :blurhash_transcoder], styles: ->(f) { image_styles(f) }, convert_options: { all: '-quality 90 +profile "!icc,*" +set date:modify +set date:create +set date:timestamp' }, validate_media_type: false
+ has_attached_file :image,
+ processors: [Rails.configuration.x.use_vips ? :lazy_thumbnail : :thumbnail, :blurhash_transcoder],
+ styles: ->(f) { image_styles(f) },
+ convert_options: { all: '-quality 90 +profile "!icc,*" +set date:modify +set date:create +set date:timestamp' },
+ validate_media_type: false
validates :url, presence: true, uniqueness: true, url: true
validates_attachment_content_type :image, content_type: IMAGE_MIME_TYPES
diff --git a/app/models/web/push_subscription.rb b/app/models/web/push_subscription.rb
index a3a2ec3f03..b482ad3afe 100644
--- a/app/models/web/push_subscription.rb
+++ b/app/models/web/push_subscription.rb
@@ -21,10 +21,12 @@ class Web::PushSubscription < ApplicationRecord
has_one :session_activation, foreign_key: 'web_push_subscription_id', inverse_of: :web_push_subscription, dependent: nil
- validates :endpoint, presence: true
+ validates :endpoint, presence: true, url: true
validates :key_p256dh, presence: true
validates :key_auth, presence: true
+ validates_with WebPushKeyValidator
+
delegate :locale, to: :associated_user
def encrypt(payload)
diff --git a/app/serializers/rest/notification_group_serializer.rb b/app/serializers/rest/notification_group_serializer.rb
new file mode 100644
index 0000000000..6c1d2465d2
--- /dev/null
+++ b/app/serializers/rest/notification_group_serializer.rb
@@ -0,0 +1,45 @@
+# frozen_string_literal: true
+
+class REST::NotificationGroupSerializer < ActiveModel::Serializer
+ attributes :group_key, :notifications_count, :type
+
+ attribute :page_min_id, if: :paginated?
+ attribute :page_max_id, if: :paginated?
+ attribute :latest_page_notification_at, if: :paginated?
+
+ has_many :sample_accounts, serializer: REST::AccountSerializer
+ belongs_to :target_status, key: :status, if: :status_type?, serializer: REST::StatusSerializer
+ belongs_to :report, if: :report_type?, serializer: REST::ReportSerializer
+ belongs_to :account_relationship_severance_event, key: :event, if: :relationship_severance_event?, serializer: REST::AccountRelationshipSeveranceEventSerializer
+
+ def status_type?
+ [:favourite, :reblog, :status, :mention, :poll, :update].include?(object.type)
+ end
+
+ def report_type?
+ object.type == :'admin.report'
+ end
+
+ def relationship_severance_event?
+ object.type == :severed_relationships
+ end
+
+ def page_min_id
+ range = instance_options[:group_metadata][object.group_key]
+ range.present? ? range[:min_id].to_s : object.notification.id.to_s
+ end
+
+ def page_max_id
+ range = instance_options[:group_metadata][object.group_key]
+ range.present? ? range[:max_id].to_s : object.notification.id.to_s
+ end
+
+ def latest_page_notification_at
+ range = instance_options[:group_metadata][object.group_key]
+ range.present? ? range[:latest_notification_at] : object.notification.created_at
+ end
+
+ def paginated?
+ instance_options[:group_metadata].present?
+ end
+end
diff --git a/app/services/notify_service.rb b/app/services/notify_service.rb
index 1f01c2d48e..d69b5af141 100644
--- a/app/services/notify_service.rb
+++ b/app/services/notify_service.rb
@@ -3,6 +3,9 @@
class NotifyService < BaseService
include Redisable
+ MAXIMUM_GROUP_SPAN_HOURS = 12
+ MAXIMUM_GROUP_GAP_TIME = 4.hours.to_i
+
NON_EMAIL_TYPES = %i(
admin.report
admin.sign_up
@@ -183,6 +186,7 @@ class NotifyService < BaseService
return if dismiss?
@notification.filtered = filter?
+ @notification.group_key = notification_group_key
@notification.save!
# It's possible the underlying activity has been deleted
@@ -202,6 +206,24 @@ class NotifyService < BaseService
private
+ def notification_group_key
+ return nil if @notification.filtered || %i(favourite reblog).exclude?(@notification.type)
+
+ type_prefix = "#{@notification.type}-#{@notification.target_status.id}"
+ redis_key = "notif-group/#{@recipient.id}/#{type_prefix}"
+ hour_bucket = @notification.activity.created_at.utc.to_i / 1.hour.to_i
+
+ # Reuse previous group if it does not span too large an amount of time
+ previous_bucket = redis.get(redis_key).to_i
+ hour_bucket = previous_bucket if hour_bucket < previous_bucket + MAXIMUM_GROUP_SPAN_HOURS
+
+ # Do not track groups past a given inactivity time
+ # We do not concern ourselves with race conditions since we use hour buckets
+ redis.set(redis_key, hour_bucket, ex: MAXIMUM_GROUP_GAP_TIME)
+
+ "#{type_prefix}-#{hour_bucket}"
+ end
+
def dismiss?
DismissCondition.new(@notification).dismiss?
end
diff --git a/app/validators/web_push_key_validator.rb b/app/validators/web_push_key_validator.rb
new file mode 100644
index 0000000000..a8ad5c9c6b
--- /dev/null
+++ b/app/validators/web_push_key_validator.rb
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+class WebPushKeyValidator < ActiveModel::Validator
+ def validate(subscription)
+ begin
+ Webpush::Encryption.encrypt('validation_test', subscription.key_p256dh, subscription.key_auth)
+ rescue ArgumentError, OpenSSL::PKey::EC::Point::Error
+ subscription.errors.add(:base, I18n.t('crypto.errors.invalid_key'))
+ end
+ end
+end
diff --git a/app/views/auth/registrations/edit.html.haml b/app/views/auth/registrations/edit.html.haml
index 48350f478e..07d6c1af51 100644
--- a/app/views/auth/registrations/edit.html.haml
+++ b/app/views/auth/registrations/edit.html.haml
@@ -3,7 +3,7 @@
- if self_destruct?
.flash-message.warning
- = t('auth.status.self_destruct', domain: ENV.fetch('LOCAL_DOMAIN'))
+ = t('auth.status.self_destruct', domain: Rails.configuration.x.local_domain)
- else
= render partial: 'status', locals: { user: @user, strikes: @strikes }
diff --git a/app/views/errors/self_destruct.html.haml b/app/views/errors/self_destruct.html.haml
index 09b17a5a94..b9ff48f684 100644
--- a/app/views/errors/self_destruct.html.haml
+++ b/app/views/errors/self_destruct.html.haml
@@ -3,7 +3,7 @@
.simple_form
%h1.title= t('self_destruct.title')
- %p.lead= t('self_destruct.lead_html', domain: ENV.fetch('LOCAL_DOMAIN'))
+ %p.lead= t('self_destruct.lead_html', domain: Rails.configuration.x.local_domain)
.form-footer
%ul.no-list
diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml
index 3a4335622a..36f55bdd97 100755
--- a/app/views/layouts/application.html.haml
+++ b/app/views/layouts/application.html.haml
@@ -44,6 +44,6 @@
%body{ class: body_classes }
= content_for?(:content) ? yield(:content) : yield
- .logo-resources{ 'tabindex' => '-1', 'inert' => true, 'aria-hidden' => true }
+ .logo-resources{ 'tabindex' => '-1', 'inert' => true, 'aria-hidden' => 'true' }
= inline_svg_tag 'logo-symbol-icon.svg'
= inline_svg_tag 'logo-symbol-wordmark.svg'
diff --git a/app/views/layouts/embedded.html.haml b/app/views/layouts/embedded.html.haml
index 7f84c816e0..2d314d63c2 100644
--- a/app/views/layouts/embedded.html.haml
+++ b/app/views/layouts/embedded.html.haml
@@ -21,5 +21,5 @@
%body.embed
= yield
- .logo-resources{ 'tabindex' => '-1', 'inert' => true, 'aria-hidden' => true }
+ .logo-resources{ 'tabindex' => '-1', 'inert' => true, 'aria-hidden' => 'true' }
= inline_svg_tag 'logo-symbol-icon.svg'
diff --git a/config/application.rb b/config/application.rb
index 6d6e91a5cc..069eb37740 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -27,7 +27,7 @@ require_relative '../lib/sanitize_ext/sanitize_config'
require_relative '../lib/redis/namespace_extensions'
require_relative '../lib/paperclip/url_generator_extensions'
require_relative '../lib/paperclip/attachment_extensions'
-require_relative '../lib/paperclip/lazy_thumbnail'
+
require_relative '../lib/paperclip/gif_transcoder'
require_relative '../lib/paperclip/media_type_spoof_detector_extensions'
require_relative '../lib/paperclip/transcoder'
@@ -51,6 +51,8 @@ require_relative '../lib/rails/engine_extensions'
require_relative '../lib/action_dispatch/remote_ip_extensions'
require_relative '../lib/active_record/database_tasks_extensions'
require_relative '../lib/active_record/batches'
+require_relative '../lib/active_record/with_recursive'
+require_relative '../lib/arel/union_parenthesizing'
require_relative '../lib/simple_navigation/item_extensions'
Bundler.require(:pam_authentication) if ENV['PAM_ENABLED'] == 'true'
@@ -98,6 +100,14 @@ module Mastodon
config.before_configuration do
require 'mastodon/redis_config'
+
+ config.x.use_vips = ENV['MASTODON_USE_LIBVIPS'] == 'true'
+
+ if config.x.use_vips
+ require_relative '../lib/paperclip/vips_lazy_thumbnail'
+ else
+ require_relative '../lib/paperclip/lazy_thumbnail'
+ end
end
config.to_prepare do
diff --git a/config/initializers/doorkeeper.rb b/config/initializers/doorkeeper.rb
index 1e8f9ad506..83100b1cf5 100644
--- a/config/initializers/doorkeeper.rb
+++ b/config/initializers/doorkeeper.rb
@@ -74,7 +74,8 @@ Doorkeeper.configure do
# For more information go to
# https://github.com/doorkeeper-gem/doorkeeper/wiki/Using-Scopes
default_scopes :read
- optional_scopes :write,
+ optional_scopes :profile,
+ :write,
:'write:accounts',
:'write:blocks',
:'write:bookmarks',
@@ -89,7 +90,6 @@ Doorkeeper.configure do
:'write:reports',
:'write:statuses',
:read,
- :'read:me',
:'read:accounts',
:'read:blocks',
:'read:bookmarks',
diff --git a/config/initializers/filter_parameter_logging.rb b/config/initializers/filter_parameter_logging.rb
index a119afa124..e88b020ff3 100644
--- a/config/initializers/filter_parameter_logging.rb
+++ b/config/initializers/filter_parameter_logging.rb
@@ -6,5 +6,5 @@
# Use this to limit dissemination of sensitive information.
# See the ActiveSupport::ParameterFilter documentation for supported notations and behaviors.
Rails.application.config.filter_parameters += [
- :passw, :secret, :token, :_key, :crypt, :salt, :certificate, :otp, :ssn
+ :passw, :email, :secret, :token, :_key, :crypt, :salt, :certificate, :otp, :ssn
]
diff --git a/config/initializers/rack_attack_logging.rb b/config/initializers/rack_attack_logging.rb
index 458bc799f9..65b89e6029 100644
--- a/config/initializers/rack_attack_logging.rb
+++ b/config/initializers/rack_attack_logging.rb
@@ -3,7 +3,7 @@
ActiveSupport::Notifications.subscribe(/rack_attack/) do |_name, _start, _finish, _request_id, payload|
req = payload[:request]
- next unless [:throttle, :blacklist].include? req.env['rack.attack.match_type']
+ next unless [:throttle, :blocklist].include? req.env['rack.attack.match_type']
Rails.logger.info("Rate limit hit (#{req.env['rack.attack.match_type']}): #{req.ip} #{req.request_method} #{req.fullpath}")
end
diff --git a/config/initializers/vips.rb b/config/initializers/vips.rb
new file mode 100644
index 0000000000..25a17b2a17
--- /dev/null
+++ b/config/initializers/vips.rb
@@ -0,0 +1,27 @@
+# frozen_string_literal: true
+
+if Rails.configuration.x.use_vips
+ ENV['VIPS_BLOCK_UNTRUSTED'] = 'true'
+
+ require 'vips'
+
+ abort('Incompatible libvips version, please install libvips >= 8.13') unless Vips.at_least_libvips?(8, 13)
+
+ Vips.block('VipsForeign', true)
+
+ %w(
+ VipsForeignLoadNsgif
+ VipsForeignLoadJpeg
+ VipsForeignLoadPng
+ VipsForeignLoadWebp
+ VipsForeignLoadHeif
+ VipsForeignSavePng
+ VipsForeignSaveSpng
+ VipsForeignSaveJpeg
+ VipsForeignSaveWebp
+ ).each do |operation|
+ Vips.block(operation, false)
+ end
+
+ Vips.block_untrusted(true)
+end
diff --git a/config/locales/activerecord.ia.yml b/config/locales/activerecord.ia.yml
index b1dd90bc36..bf1fbc67ef 100644
--- a/config/locales/activerecord.ia.yml
+++ b/config/locales/activerecord.ia.yml
@@ -19,7 +19,7 @@ ia:
account:
attributes:
username:
- invalid: debe continer solmente litteras, numeros e tractos de sublineamento
+ invalid: debe continer solmente litteras, numeros e lineettas basse
reserved: es reservate
admin/webhook:
attributes:
diff --git a/config/locales/ca.yml b/config/locales/ca.yml
index ec32f771e9..c91ae64a7a 100644
--- a/config/locales/ca.yml
+++ b/config/locales/ca.yml
@@ -466,7 +466,7 @@ ca:
status: Estat
suppress: Suprimeix les recomanacions de seguiment
suppressed: Suprimit
- title: Seguir les recomanacions
+ title: Recomanacions de comptes a seguir
unsuppress: Restaurar les recomanacions de seguiment
instances:
availability:
diff --git a/config/locales/da.yml b/config/locales/da.yml
index f37086264f..cd9260dec4 100644
--- a/config/locales/da.yml
+++ b/config/locales/da.yml
@@ -1673,6 +1673,7 @@ da:
domain_block: Serversuspendering (%{target_name})
user_domain_block: "%{target_name} blev blokeret"
lost_followers: Tabte følgere
+ lost_follows: Mistet følger
preamble: Der kan mistes fulgte objekter og følgere, når et domæne blokeres eller moderatorerne beslutter at suspendere en ekstern server. Når det sker, kan der downloades lister over afbrudte relationer til inspektion og mulig import på anden server.
purged: Oplysninger om denne server er blevet renset af serveradministratoreren.
type: Begivenhed
diff --git a/config/locales/devise.ia.yml b/config/locales/devise.ia.yml
index e6ae6d4afb..8e073c9efb 100644
--- a/config/locales/devise.ia.yml
+++ b/config/locales/devise.ia.yml
@@ -3,8 +3,8 @@ ia:
devise:
confirmations:
confirmed: Tu conto de e-mail ha essite confirmate con successo.
- send_instructions: Tu recipera un e-mail con instructiones pro confirmar tu adresse de e-mail in poc minutas. Per favor verifica tu dossier de spam si tu non lo recipe.
- send_paranoid_instructions: Si tu adresse de e-mail existe in nostre base de datos, tu recipera un e-mail con instructiones pro confirmar tu adresse de e-mail in poc minutas. Per favor verifica tu dossier de spam si tu non lo recipe.
+ send_instructions: Tu recipera un e-mail con instructiones pro confirmar tu adresse de e-mail in poc minutas. Per favor consulta tu dossier de spam si tu non lo recipe.
+ send_paranoid_instructions: Si tu adresse de e-mail existe in nostre base de datos, tu recipera un e-mail con instructiones pro confirmar tu adresse de e-mail in poc minutas. Per favor consulta tu dossier de spam si tu non lo recipe.
failure:
already_authenticated: Tu ha jam aperite session.
inactive: Tu conto non es ancora activate.
@@ -27,7 +27,7 @@ ia:
subject: 'Mastodon: Instructiones de confirmation pro %{instance}'
title: Verificar adresse de e-mail
email_changed:
- explanation: 'Le adresse de e-mail pro tu conto essera cambiate a:'
+ explanation: 'Le adresse de e-mail pro tu conto se cambia in:'
extra: Si tu non ha cambiate de adresse de e-mail, es probabile que alcuno ha ganiate le accesso a tu conto. Per favor cambia immediatemente tu contrasigno o contacta le administrator del servitor si tu non pote acceder a tu conto.
subject: 'Mastodon: E-mail cambiate'
title: Nove adresse de e-mail
@@ -37,8 +37,8 @@ ia:
subject: 'Mastodon: Contrasigno cambiate'
title: Contrasigno cambiate
reconfirmation_instructions:
- explanation: Confirma le nove adresse pro cambiar tu email.
- extra: Si non es tu qui ha initiate iste cambiamento, per favor ignora iste e-mail. Le adresse de e-mail pro le conto de Mastodon non cambiara usque tu accede al ligamine hic supra.
+ explanation: Confirma le nove adresse pro cambiar tu adresse de e-mail.
+ extra: Si non es tu qui ha initiate iste cambiamento, per favor ignora iste e-mail. Le adresse de e-mail pro le conto de Mastodon non cambiara usque tu accede al ligamine supra.
subject: 'Mastodon: Confirmar e-mail pro %{instance}'
title: Verificar adresse de e-mail
reset_password_instructions:
@@ -49,19 +49,19 @@ ia:
title: Reinitialisar contrasigno
two_factor_disabled:
explanation: Ora es possibile aperir session con solmente le adresse de e-mail e contrasigno.
- subject: 'Mastodon: Authentication bifactorial disactivate'
- subtitle: Le authentication bifactorial ha essite disactivate pro tu conto.
+ subject: 'Mastodon: Authentication a duo factores disactivate'
+ subtitle: Le authentication a duo factores ha essite disactivate pro tu conto.
title: A2F disactivate
two_factor_enabled:
explanation: Pro le apertura de session essera necessari un token generate per le application TOTP accopulate.
- subject: 'Mastodon: Authentication bifactorial activate'
- subtitle: Le authentication bifactorial ha essite activate pro tu conto.
+ subject: 'Mastodon: Authentication a duo factores activate'
+ subtitle: Le authentication a duo factores ha essite activate pro tu conto.
title: A2F activate
two_factor_recovery_codes_changed:
explanation: Le ancian codices de recuperation ha essite invalidate e nove codices ha essite generate.
- subject: 'Mastodon: Codices de recuperation regenerate'
+ subject: 'Mastodon: Codices de recuperation A2F regenerate'
subtitle: Le ancian codices de recuperation ha essite invalidate e nove codices ha essite generate.
- title: Codices de recuperation cambiate
+ title: Codices de recuperation A2F cambiate
unlock_instructions:
subject: 'Mastodon: Instructiones pro disblocar'
webauthn_credential:
@@ -84,11 +84,11 @@ ia:
subject: 'Mastodon: authentication de clave de securitate activate'
title: Claves de securitate activate
omniauth_callbacks:
- failure: Impossibile authenticar te ab %{kind} perque “%{reason}”.
- success: Authenticate con successo ab conto %{kind}.
+ failure: Non poteva authenticar te desde %{kind} perque “%{reason}”.
+ success: Authenticate correctemente desde le conto %{kind}.
passwords:
- no_token: Tu non pote acceder iste pagina sin venir ab un email de redefinition de contrasigno. Si tu veni ab un email de redefinition de contrasigno, verifica que tu usava le integre URL fornite.
- send_instructions: Si tu adresse de e-mail existe in nostre base de datos, tu recipera un ligamine de recuperation de contrasigno in tu adresse de e-mail in poc minutas. Per favor verifica tu dossier de spam si tu non lo recipe.
+ no_token: Non es possibile acceder a iste pagina sin venir de un e-mail de redefinition de contrasigno. Si tu veni de un e-mail de redefinition de contrasigno, per favor assecura te de haber usate le URL complete fornite.
+ send_instructions: Si tu adresse de e-mail existe in nostre base de datos, tu recipera un ligamine de recuperation de contrasigno a tu adresse de e-mail in poc minutas. Per favor consulta tu dossier de spam si tu non lo recipe.
send_paranoid_instructions: Si tu adresse de e-mail existe in nostre base de datos, tu recipera un ligamine de recuperation de contrasigno in tu adresse de e-mail in poc minutas. Per favor verifica tu dossier de spam si tu non lo recipe.
updated: Tu contrasigno ha essite cambiate. Tu ha ora aperite session.
updated_not_active: Tu contrasigno ha essite cambiate.
@@ -98,17 +98,17 @@ ia:
signed_up_but_inactive: Tu te ha inscribite con successo. Nonobstante, nos non poteva aperir tu session perque tu conto non es ancora activate.
signed_up_but_locked: Tu te ha inscribite con successo. Nonobstante, nos non poteva aperir tu session perque tu conto es serrate.
signed_up_but_pending: Un message con un ligamine de confirmation ha essite inviate a tu adresse de email. Post que tu clicca sur le ligamine, nos revidera tu demanda. Tu essera notificate si illo es approbate.
- signed_up_but_unconfirmed: Un message con un ligamine de confirmation ha essite inviate a tu adresse de e-mail. Per favor seque le ligamine pro activar tu conto. Verifica tu dossier de spam si tu non recipe iste e-mail.
- update_needs_confirmation: Tu ha actualisate tu conto con successo, ma nos debe verificar tu nove adresse de e-mail. Accede a tu e-mail e seque le ligamine de confirmation pro confirmar tu nove adresse de e-mail. Verifica tu dossier de spam si tu non recipe iste e-mail.
+ signed_up_but_unconfirmed: Un message con un ligamine de confirmation ha essite inviate a tu adresse de e-mail. Per favor seque le ligamine pro activar tu conto. Consulta tu dossier de spam si tu non recipe iste e-mail.
+ update_needs_confirmation: Tu ha actualisate tu conto con successo, ma nos debe verificar tu nove adresse de e-mail. Accede a tu e-mail e seque le ligamine de confirmation pro confirmar tu nove adresse de e-mail. Consulta tu dossier de spam si tu non recipe iste e-mail.
updated: Tu conto ha essite actualisate con successo.
sessions:
already_signed_out: Session claudite con successo.
signed_in: Session aperite con successo.
signed_out: Session claudite con successo.
unlocks:
- send_instructions: Tu recipera un e-mail con instructiones explicante como disserrar tu conto in alcun minutas. Verifica tu dossier de spam si tu non recipe iste e-mail.
+ send_instructions: Tu recipera un e-mail con instructiones explicante como disserrar tu conto in alcun minutas. Consulta tu dossier de spam si tu non recipe iste e-mail.
send_paranoid_instructions: Si tu conto existe, tu recipera un email con instructiones explicante como disserrar lo in alcun minutas. Verifica tu dossier de spam si tu non recipe iste e-mail.
- unlocked: Tu conto ha essite disserrate con successo. Aperi session pro continuar.
+ unlocked: Tu conto ha essite disserrate con successo. Per favor aperi session pro continuar.
errors:
messages:
already_confirmed: jam esseva confirmate, tenta aperir session
diff --git a/config/locales/devise.lt.yml b/config/locales/devise.lt.yml
index e36e60a758..f27b68b708 100644
--- a/config/locales/devise.lt.yml
+++ b/config/locales/devise.lt.yml
@@ -76,7 +76,7 @@ lt:
webauthn_disabled:
explanation: Tavo paskyrai išjungtas tapatybės nustatymas naudojant saugumo raktus.
extra: Prisijungimas dabar galimas naudojant tik susietos TOTP programėlės sugeneruotą prieigos raktą.
- subject: 'Mastodon: tapatybės nustatymas naudojant saugumo raktai išjungta'
+ subject: 'Mastodon: tapatybės nustatymas su saugumo raktai išjungta'
title: Saugumo raktai išjungti
webauthn_enabled:
explanation: Tavo paskyrai įjungtas saugumo rakto tapatybės nustatymas.
@@ -98,8 +98,8 @@ lt:
signed_up_but_inactive: Sėkmingai užsiregistravai. Tačiau negalėjome tavęs prijungti, nes tavo paskyra dar nėra aktyvuota.
signed_up_but_locked: Sėkmingai užsiregistravai. Tačiau negalėjome tavęs prijungti, nes tavo paskyra dar užrakinta.
signed_up_but_pending: Į tavo el. pašto adresą buvo išsiųstas laiškas su patvirtinimo nuoroda. Paspaudęs (-usi) nuorodą, peržiūrėsime tavo paraišką. Tau bus pranešta, jei ji patvirtinta.
- signed_up_but_unconfirmed: Į tavo el. pašto adresą buvo išsiųstas laiškas su patvirtinimo nuoroda. Paspausk nuorodą, kad aktyvuotum savo paskyrą. Jei negavai šio el. laiško, patikrink šlamšto aplanką.
- update_needs_confirmation: Sėkmingai atnaujinai savo paskyrą, bet mums reikia patvirtinti naująjį el. pašto adresą. Patikrink savo el. paštą ir paspausk patvirtinimo nuorodą, kad patvirtintum savo naują el. pašto adresą. Jei negavai šio el. laiško, patikrink šlamšto aplanką.
+ signed_up_but_unconfirmed: Į tavo el. pašto adresą buvo išsiųstas laiškas su patvirtinimo nuoroda. Sek nuorodą, kad aktyvuotum savo paskyrą. Jei negavai šio el. laiško, patikrink šlamšto aplanką.
+ update_needs_confirmation: Sėkmingai atnaujinai savo paskyrą, bet mums reikia patvirtinti naująjį el. pašto adresą. Patikrink savo el. paštą ir sek patvirtinimo nuorodą, kad patvirtintum savo naują el. pašto adresą. Jei negavai šio el. laiško, patikrink šlamšto aplanką.
updated: Tavo paskyra buvo sėkmingai atnaujinta.
sessions:
already_signed_out: Atsijungta sėkmingai.
@@ -107,7 +107,7 @@ lt:
signed_out: Atjungta sėkmingai.
unlocks:
send_instructions: Po kelių minučių gausi el. laišką su instrukcijomis, kaip atrakinti paskyrą. Jei negavai šio el. laiško, patikrink šlamšto aplanką.
- send_paranoid_instructions: Jei paskyra egzistuoja, po kelių minučių gausi el. laišką su instrukcijomis, kaip ją atrakinti. Jei negavai šio el. laiško, patikrink šlamšto aplanką.
+ send_paranoid_instructions: Jei tavo paskyra egzistuoja, po kelių minučių gausi el. laišką su instrukcijomis, kaip ją atrakinti. Jei negavai šio el. laiško, patikrink šlamšto aplanką.
unlocked: Tavo paskyra sėkmingai atrakinta. Norėdamas (-a) tęsti, prisijunk.
errors:
messages:
diff --git a/config/locales/devise.sv.yml b/config/locales/devise.sv.yml
index 27d424f618..1e14a7de52 100644
--- a/config/locales/devise.sv.yml
+++ b/config/locales/devise.sv.yml
@@ -30,14 +30,14 @@ sv:
explanation: 'E-postadressen för ditt konto ändras till:'
extra: Om du inte ändrade din e-post är det troligt att någon har fått tillgång till ditt konto. Vänligen ändra ditt lösenord omedelbart eller kontakta serveradministratören om du är utelåst från ditt konto.
subject: 'Mastodon: e-post ändrad'
- title: Ny e-post adress
+ title: Ny e-postadress
password_change:
explanation: Lösenordet för ditt konto har ändrats.
extra: Om du inte ändrade ditt lösenord är det troligt att någon har fått tillgång till ditt konto. Vänligen ändra ditt lösenord omedelbart eller kontakta serveradministratören om du är utelåst från ditt konto.
subject: 'Mastodon: Lösenordet har ändrats'
title: Lösenordet har ändrats
reconfirmation_instructions:
- explanation: Bekräfta den nya adressen för att ändra din e-post adress.
+ explanation: Bekräfta den nya adressen för att ändra din e-postadress.
extra: Om den här ändringen inte initierades av dig kan du ignorera det här e-postmeddelandet. E-postadressen för Mastodon-kontot ändras inte förrän du klickar på länken ovan.
subject: 'Mastodon: Bekräfta e-post för %{instance}'
title: Verifiera e-postadress
@@ -63,7 +63,7 @@ sv:
subtitle: De tidigare återhämtningskoderna har ogiltigförklarats och nya har skapats.
title: 2FA-återställningskoder ändrades
unlock_instructions:
- subject: 'Mastodon: Lås upp instruktioner'
+ subject: 'Mastodon: Instruktioner för upplåsning'
webauthn_credential:
added:
explanation: Följande säkerhetsnyckel har lagts till i ditt konto
diff --git a/config/locales/doorkeeper.en.yml b/config/locales/doorkeeper.en.yml
index 98776f2193..b623cc7135 100644
--- a/config/locales/doorkeeper.en.yml
+++ b/config/locales/doorkeeper.en.yml
@@ -135,6 +135,7 @@ en:
media: Media attachments
mutes: Mutes
notifications: Notifications
+ profile: Your Mastodon profile
push: Push notifications
reports: Reports
search: Search
@@ -165,6 +166,7 @@ en:
admin:write:reports: perform moderation actions on reports
crypto: use end-to-end encryption
follow: modify account relationships
+ profile: read only your account's profile information
push: receive your push notifications
read: read all your account's data
read:accounts: see accounts information
@@ -174,7 +176,6 @@ en:
read:filters: see your filters
read:follows: see your follows
read:lists: see your lists
- read:me: read only your account's basic information
read:mutes: see your mutes
read:notifications: see your notifications
read:reports: see your reports
diff --git a/config/locales/doorkeeper.ia.yml b/config/locales/doorkeeper.ia.yml
index 9c493e3d7f..40109a311c 100644
--- a/config/locales/doorkeeper.ia.yml
+++ b/config/locales/doorkeeper.ia.yml
@@ -61,7 +61,7 @@ ia:
title: Un error ha occurrite
new:
prompt_html: "%{client_name} vole haber le permission de acceder a tu conto. Illo es un application tertie. Si tu non confide in illo, alora tu non deberea autorisar lo."
- review_permissions: Revisionar le permissos
+ review_permissions: Revider permissiones
title: Autorisation necessari
show:
title: Copia iste codice de autorisation e colla lo in le application.
@@ -148,34 +148,34 @@ ia:
title: Autorisation OAuth necessari
scopes:
admin:read: leger tote le datos in le servitor
- admin:read:accounts: leger information sensibile de tote le contos
- admin:read:canonical_email_blocks: leger datos sensibile de tote le blocadas de email canonic
+ admin:read:accounts: leger informationes sensibile de tote le contos
+ admin:read:canonical_email_blocks: leger informationes sensibile de tote le blocadas de e-mail canonic
admin:read:domain_allows: leger informationes sensibile de tote le dominios permittite
admin:read:domain_blocks: leger informationes sensibile de tote le blocadas de dominio
- admin:read:email_domain_blocks: leger informationes sensibile de tote le blocadas de dominio email
- admin:read:ip_blocks: leger informationes sensibile de tote le blocadas de IP
- admin:read:reports: leger information sensibile de tote le reportos e contos signalate
+ admin:read:email_domain_blocks: leger informationes sensibile de tote le blocadas de dominio de e-mail
+ admin:read:ip_blocks: leger informationes sensibile de tote le blocadas de adresses IP
+ admin:read:reports: leger informationes sensibile de tote le reportos e contos reportate
admin:write: modificar tote le datos in le servitor
- admin:write:accounts: exequer action de moderation sur contos
- admin:write:canonical_email_blocks: exequer actiones de moderation sur blocadas de email canonic
+ admin:write:accounts: exequer actiones de moderation sur contos
+ admin:write:canonical_email_blocks: exequer actiones de moderation sur blocadas de e-mail canonic
admin:write:domain_allows: exequer actiones de moderation sur dominios permittite
admin:write:domain_blocks: exequer actiones de moderation sur blocadas de dominio
- admin:write:email_domain_blocks: exequer actiones de moderation sur blocadas de dominio email
- admin:write:ip_blocks: exequer actiones de moderation sur blocadas de IP
- admin:write:reports: exequer action de moderation sur reportos
- crypto: usar cryptation de extremo-a-extremo
- follow: modificar relationes del contos
+ admin:write:email_domain_blocks: exequer actiones de moderation sur blocadas de dominio de e-mail
+ admin:write:ip_blocks: exequer actiones de moderation sur blocadas de adresses IP
+ admin:write:reports: exequer actiones de moderation sur reportos
+ crypto: usar cryptation de puncta a puncta
+ follow: modificar relationes inter contos
push: reciper tu notificationes push
read: leger tote le datos de tu conto
- read:accounts: vider informationes de conto
+ read:accounts: vider informationes de contos
read:blocks: vider tu blocadas
read:bookmarks: vider tu marcapaginas
- read:favourites: vider tu favoritos
+ read:favourites: vider tu favorites
read:filters: vider tu filtros
- read:follows: vider tu sequites
+ read:follows: vider qui tu seque
read:lists: vider tu listas
read:me: leger solmente le information basic de tu conto
- read:mutes: vider tu silentiates
+ read:mutes: vider qui tu silentia
read:notifications: vider tu notificationes
read:reports: vider tu reportos
read:search: cercar in tu nomine
@@ -189,8 +189,8 @@ ia:
write:filters: crear filtros
write:follows: sequer personas
write:lists: crear listas
- write:media: incargar files de medios
+ write:media: incargar files multimedial
write:mutes: silentiar personas e conversationes
write:notifications: rader tu notificationes
- write:reports: signalar altere personas
+ write:reports: reportar altere personas
write:statuses: publicar messages
diff --git a/config/locales/doorkeeper.lv.yml b/config/locales/doorkeeper.lv.yml
index 5aa5daef3f..2005ce3c79 100644
--- a/config/locales/doorkeeper.lv.yml
+++ b/config/locales/doorkeeper.lv.yml
@@ -174,6 +174,7 @@ lv:
read:filters: apskatīt savus filtrus
read:follows: apskatīt savus sekotājus
read:lists: apskatīt savus sarakstus
+ read:me: lasīt tikai Tava konta pamatinformāciju
read:mutes: apskatīt savus apklusinātos
read:notifications: apskatīt savus paziņojumus
read:reports: apskatīt savus pārskatus
diff --git a/config/locales/ia.yml b/config/locales/ia.yml
index f8834136b9..b7f4ecf85d 100644
--- a/config/locales/ia.yml
+++ b/config/locales/ia.yml
@@ -38,7 +38,7 @@ ia:
avatar: Avatar
by_domain: Dominio
change_email:
- changed_msg: Email cambiate con successo!
+ changed_msg: E-mail cambiate con successo!
current_email: E-mail actual
label: Cambiar e-mail
new_email: Nove e-mail
@@ -56,12 +56,12 @@ ia:
delete: Deler datos
deleted: Delite
demote: Degradar
- destroyed_msg: Le datos de %{username} ora es in cauda pro su imminente deletion
+ destroyed_msg: Le datos de %{username} es ora in cauda pro lor imminente deletion
disable: Gelar
disable_sign_in_token_auth: Disactivar le authentication per token in e-mail
- disable_two_factor_authentication: Disactivar 2FA
+ disable_two_factor_authentication: Disactivar A2F
disabled: Gelate
- display_name: Nomine visibile
+ display_name: Nomine a monstrar
domain: Dominio
edit: Modificar
email: E-mail
@@ -82,7 +82,7 @@ ia:
all: Toto
local: Local
remote: Remote
- title: Location
+ title: Position
login_status: Stato de session
media_attachments: Annexos multimedial
memorialize: Render commemorative
@@ -105,10 +105,10 @@ ia:
not_subscribed: Non subscribite
pending: Attende revision
perform_full_suspension: Suspender
- previous_strikes: Previe admonitiones
+ previous_strikes: Sanctiones precedente
previous_strikes_description_html:
- one: Iste conto ha un admonition.
- other: Iste conto ha %{count} admonitiones.
+ one: Iste conto ha un sanction.
+ other: Iste conto ha %{count} sanctiones.
promote: Promover
protocol: Protocollo
public: Public
@@ -137,17 +137,17 @@ ia:
security: Securitate
security_measures:
only_password: Solmente contrasigno
- password_and_2fa: Contrasigno e 2FA
+ password_and_2fa: Contrasigno e A2F
sensitive: Fortiar sensibile
sensitized: Marcate como sensibile
shared_inbox_url: URL del cassa de entrata condividite
show:
created_reports: Reportos facite
- targeted_reports: Signalate per alteres
+ targeted_reports: Reportate per alteres
silence: Limitar
silenced: Limitate
statuses: Messages
- strikes: Previe admonitiones
+ strikes: Sanctiones precedente
subscribe: Subscriber
suspend: Suspender
suspended: Suspendite
@@ -178,34 +178,34 @@ ia:
confirm_user: Confirmar le usator
create_account_warning: Crear un advertimento
create_announcement: Crear annuncio
- create_canonical_email_block: Crear blocada de email
- create_custom_emoji: Crear emoticone personalisate
+ create_canonical_email_block: Crear blocada de e-mail
+ create_custom_emoji: Crear emoji personalisate
create_domain_allow: Crear permisso de dominio
create_domain_block: Crear blocada de dominio
- create_email_domain_block: Crear blocada de dominio email
+ create_email_domain_block: Crear blocada de dominio de e-mail
create_ip_block: Crear un regula IP
create_unavailable_domain: Crear dominio indisponibile
create_user_role: Crear un rolo
demote_user: Degradar usator
destroy_announcement: Deler annuncio
- destroy_canonical_email_block: Deler blocada de email
- destroy_custom_emoji: Deler emoticone personalisate
+ destroy_canonical_email_block: Deler blocada de e-mail
+ destroy_custom_emoji: Deler emoji personalisate
destroy_domain_allow: Deler permisso de dominio
destroy_domain_block: Deler blocada de dominio
- destroy_email_domain_block: Crear blocada de dominio email
+ destroy_email_domain_block: Crear blocada de dominio de e-mail
destroy_instance: Purgar dominio
destroy_ip_block: Deler le regula IP
- destroy_status: Deler le message
- destroy_unavailable_domain: Deler le dominio non disponibile
+ destroy_status: Deler message
+ destroy_unavailable_domain: Deler dominio indisponibile
destroy_user_role: Destruer rolo
- disable_2fa_user: Disactivar 2FA
+ disable_2fa_user: Disactivar A2F
disable_custom_emoji: Disactivar emoji personalisate
- disable_sign_in_token_auth_user: Disactivar le authentication per testimonio via email pro usator
+ disable_sign_in_token_auth_user: Disactivar le authentication per token de e-mail pro le usator
disable_user: Disactivar le usator
enable_custom_emoji: Activar emoji personalisate
- enable_sign_in_token_auth_user: Activar le authentication per testimonio via email pro usator
+ enable_sign_in_token_auth_user: Activar le authentication per token de e-mail pro le usator
enable_user: Activar le usator
- memorialize_account: Commemorar conto
+ memorialize_account: Converter conto in memorial
promote_user: Promover usator
reject_appeal: Rejectar appello
reject_user: Rejectar usator
@@ -214,14 +214,14 @@ ia:
resend_user: Reinviar message de confirmation
reset_password_user: Reinitialisar contrasigno
resolve_report: Resolver reporto
- sensitive_account: Marcar como sensibile le medios del conto
+ sensitive_account: Fortiar de marcar le conto como sensibile
silence_account: Limitar conto
suspend_account: Suspender conto
unassigned_report: Disassignar reporto
unblock_email_account: Disblocar adresse de e-mail
- unsensitive_account: Dismarcar como sensibile le medios del conto
- unsilence_account: Disfacer le limite de conto
- unsuspend_account: Annullar suspension de conto
+ unsensitive_account: Non plus fortiar de marcar le conto como sensibile
+ unsilence_account: Non plus limitar conto
+ unsuspend_account: Non plus suspender conto
update_announcement: Actualisar annuncio
update_custom_emoji: Actualisar emoji personalisate
update_domain_block: Actualisar blocada de dominio
@@ -234,62 +234,62 @@ ia:
assigned_to_self_report_html: "%{name} assignava reporto %{target} a se mesme"
change_email_user_html: "%{name} cambiava le adresse de e-mail address del usator %{target}"
change_role_user_html: "%{name} cambiava rolo de %{target}"
- confirm_user_html: "%{name} confirmava le adresse email del usator %{target}"
+ confirm_user_html: "%{name} confirmava le adresse de e-mail del usator %{target}"
create_account_warning_html: "%{name} inviava un advertimento a %{target}"
create_announcement_html: "%{name} creava un nove annuncio %{target}"
- create_canonical_email_block_html: "%{name} blocava email con le hash %{target}"
- create_custom_emoji_html: "%{name} cargava nove emoticone %{target}"
+ create_canonical_email_block_html: "%{name} blocava e-mail con le hash %{target}"
+ create_custom_emoji_html: "%{name} incargava le nove emoji %{target}"
create_domain_allow_html: "%{name} permitteva federation con dominio %{target}"
create_domain_block_html: "%{name} blocava dominio %{target}"
- create_email_domain_block_html: "%{name} blocava dominio email %{target}"
+ create_email_domain_block_html: "%{name} blocava dominio de e-mail %{target}"
create_ip_block_html: "%{name} creava regula pro IP %{target}"
- create_unavailable_domain_html: "%{name} stoppava consignation a dominio %{target}"
+ create_unavailable_domain_html: "%{name} stoppava livration al dominio %{target}"
create_user_role_html: "%{name} creava rolo de %{target}"
demote_user_html: "%{name} degradava usator %{target}"
destroy_announcement_html: "%{name} deleva annuncio %{target}"
- destroy_canonical_email_block_html: "%{name} disblocava email con le hash %{target}"
+ destroy_canonical_email_block_html: "%{name} disblocava e-mail con le hash %{target}"
destroy_custom_emoji_html: "%{name} deleva emoji %{target}"
destroy_domain_allow_html: "%{name} impediva le federation con dominio %{target}"
destroy_domain_block_html: "%{name} disblocava dominio %{target}"
- destroy_email_domain_block_html: "%{name} disblocava le dominio email %{target}"
+ destroy_email_domain_block_html: "%{name} disblocava dominio de e-mail %{target}"
destroy_instance_html: "%{name} purgava le dominio %{target}"
destroy_ip_block_html: "%{name} deleva le regula pro IP %{target}"
- destroy_status_html: "%{name} removeva le message de %{target}"
- destroy_unavailable_domain_html: "%{name} resumeva le consignation al dominio %{target}"
- destroy_user_role_html: "%{name} deleva le rolo de %{target}"
+ destroy_status_html: "%{name} removeva un message de %{target}"
+ destroy_unavailable_domain_html: "%{name} reprendeva le livration al dominio %{target}"
+ destroy_user_role_html: "%{name} deleva le rolo %{target}"
disable_2fa_user_html: "%{name} disactivava le authentication a duo factores pro le usator %{target}"
- disable_custom_emoji_html: "%{name} disactivava le emoticone %{target}"
- disable_sign_in_token_auth_user_html: "%{name} disactivava authentication per testimonio via email pro %{target}"
- disable_user_html: "%{name} disactivava le accesso pro le usator %{target}"
- enable_custom_emoji_html: "%{name} activava le emoticone %{target}"
- enable_sign_in_token_auth_user_html: "%{name} activava le authentication per testimonio via email pro %{target}"
- enable_user_html: "%{name} activava le accesso pro le usator %{target}"
- memorialize_account_html: "%{name} mutava le conto de %{target} in un pagina commemorative"
+ disable_custom_emoji_html: "%{name} disactivava le emoji %{target}"
+ disable_sign_in_token_auth_user_html: "%{name} disactivava le authentication per token de e-mail pro %{target}"
+ disable_user_html: "%{name} disactivava le apertura de session pro le usator %{target}"
+ enable_custom_emoji_html: "%{name} activava le emoji %{target}"
+ enable_sign_in_token_auth_user_html: "%{name} activava le authentication per token de e-mail pro %{target}"
+ enable_user_html: "%{name} activava le apertura de session pro le usator %{target}"
+ memorialize_account_html: "%{name} converteva le conto de %{target} in un pagina commemorative"
promote_user_html: "%{name} promoveva le usator %{target}"
reject_appeal_html: "%{name} refusava le appello del decision de moderation de %{target}"
reject_user_html: "%{name} refusava le inscription de %{target}"
remove_avatar_user_html: "%{name} removeva le avatar de %{target}"
reopen_report_html: "%{name} reaperiva le reporto %{target}"
- resend_user_html: "%{name} reinviava le email de confirmation pro %{target}"
+ resend_user_html: "%{name} reinviava le e-mail de confirmation pro %{target}"
reset_password_user_html: "%{name} reinitialisava le contrasigno del usator %{target}"
resolve_report_html: "%{name} resolveva le reporto %{target}"
- sensitive_account_html: "%{name} marcava como sensibile le medios de %{target}"
+ sensitive_account_html: "%{name} marcava le multimedia de %{target} como sensibile"
silence_account_html: "%{name} limitava le conto de %{target}"
suspend_account_html: "%{name} suspendeva le conto de %{target}"
- unassigned_report_html: "%{name} de-assignava le reporto %{target}"
- unblock_email_account_html: "%{name} disblocava le adresse email de %{target}"
- unsensitive_account_html: "%{name} dismarcava como sensibile le medios de %{target}"
+ unassigned_report_html: "%{name} disassignava le reporto %{target}"
+ unblock_email_account_html: "%{name} disblocava le adresse de e-mail de %{target}"
+ unsensitive_account_html: "%{name} dismarcava le multimedia de %{target} como sensibile"
unsilence_account_html: "%{name} removeva le limite del conto de %{target}"
unsuspend_account_html: "%{name} removeva le suspension del conto de %{target}"
update_announcement_html: "%{name} actualisava le annuncio %{target}"
- update_custom_emoji_html: "%{name} actualisava le emoticone %{target}"
+ update_custom_emoji_html: "%{name} actualisava le emoji %{target}"
update_domain_block_html: "%{name} actualisava le blocada de dominio pro %{target}"
- update_ip_block_html: "%{name} cambiava le regula pro IP %{target}"
- update_report_html: "%{name} actualisava le reporto %{target}"
- update_status_html: "%{name} actualisava le message per %{target}"
- update_user_role_html: "%{name} cambiava le rolo de %{target}"
+ update_ip_block_html: "%{name} cambiava regula pro IP %{target}"
+ update_report_html: "%{name} actualisava reporto %{target}"
+ update_status_html: "%{name} actualisava message de %{target}"
+ update_user_role_html: "%{name} cambiava rolo de %{target}"
deleted_account: conto delite
- empty: Nulle registrationes trovate.
+ empty: Nulle registros trovate.
filter_by_action: Filtrar per action
filter_by_user: Filtrar per usator
title: Registro de inspection
@@ -298,7 +298,7 @@ ia:
edit:
title: Modificar annuncio
empty: Necun annuncios trovate.
- live: Al vivo
+ live: In directo
new:
create: Crear annuncio
title: Nove annuncio
@@ -316,15 +316,15 @@ ia:
by_domain: Dominio
copied_msg: Copia local del emoji create con successo
copy: Copiar
- copy_failed_msg: Impossibile crear un copia local de ille emoticone
+ copy_failed_msg: Non poteva crear un copia local de ille emoji
create_new_category: Crear nove categoria
created_msg: Emoji create con successo!
delete: Deler
- destroyed_msg: Emoticone destruite con successo destroyed!
+ destroyed_msg: Emoji destruite con successo!
disable: Disactivar
disabled: Disactivate
disabled_msg: Emoji disactivate con successo
- emoji: Emoticone
+ emoji: Emoji
enable: Activar
enabled: Activate
enabled_msg: Emoji activate con successo
@@ -333,24 +333,24 @@ ia:
listed: Listate
new:
title: Adder nove emoji personalisate
- no_emoji_selected: Nulle emoticones ha essite cambiate perque nulle ha essite seligite
+ no_emoji_selected: Necun emoji ha essite cambiate perque necun ha essite seligite
not_permitted: Tu non es autorisate a exequer iste action
overwrite: Superscriber
- shortcode: Via breve
+ shortcode: Codice curte
shortcode_hint: Al minus 2 characteres, solo characteres alphanumeric e lineettas basse
title: Emojis personalisate
uncategorized: Sin categoria
unlist: Non listar
unlisted: Non listate
- update_failed_msg: Impossibile actualisar ille emoticone
- updated_msg: Emoticone actualisate con successo!
+ update_failed_msg: Non poteva actualisar le emoji
+ updated_msg: Emoji actualisate con successo!
upload: Incargar
dashboard:
active_users: usatores active
interactions: interactiones
- media_storage: Immagazinage de medios
+ media_storage: Immagazinage multimedial
new_users: nove usatores
- opened_reports: reportos aperte
+ opened_reports: reportos aperite
pending_appeals_html:
one: "%{count} appello pendente"
other: "%{count} appellos pendente"
@@ -377,7 +377,7 @@ ia:
title: Appellos
domain_allows:
add_new: Permitter federation con dominio
- created_msg: Le dominio ha essite permittite con successo pro federation
+ created_msg: Le dominio ha essite correctemente autorisate pro federation
destroyed_msg: Le dominio ha essite prohibite pro federation
export: Exportar
import: Importar
@@ -390,7 +390,7 @@ ia:
permanent_action: Disfacer le suspension non restaurara alcun datos o relation.
preamble_html: Tu es sur le puncto de suspender %{domain} e su subdominios.
remove_all_data: Isto removera de tu servitor tote le contento, multimedia e datos de profilo del contos de iste dominio.
- stop_communication: Tu servitor stoppara le communication con iste servitores.
+ stop_communication: Tu servitor cessara de communicar con iste servitores.
title: Confirmar le blocada del dominio %{domain}
undo_relationships: Isto disfacera omne relation de sequimento inter le contos de iste servitores e illos del tue.
created_msg: Le blocada del dominio es ora in tractamento
@@ -406,7 +406,7 @@ ia:
hint: Le blocada del dominio non impedira le creation de entratas de conto in le base de datos, ma applicara retroactive- e automaticamente le methodos specific de moderation a iste contos.
severity:
desc_html: "Limitar rendera le messages del contos de iste dominio invisibile pro tote persona que non los seque. Suspender removera de tu servitor tote le contento, multimedia e datos de profilo del contos de iste dominio. Usa Necun si tu solmente vole rejectar le files multimedial."
- noop: Nemo
+ noop: Necun
silence: Limitar
suspend: Suspender
title: Nove blocada de dominio
@@ -462,11 +462,11 @@ ia:
no_file: Necun file seligite
follow_recommendations:
description_html: "Le recommendationes de sequimento adjuta le nove usatores a trovar rapidemente contento interessante. Quando un usator non ha un historia sufficiente de interactiones con alteres pro formar recommendationes personalisate de sequimento, iste contos es recommendate. Illos se recalcula cata die a partir de un mixtura de contos con le plus grande numero de ingagiamentos recente e le numero de sequitores local le plus alte pro un lingua date."
- language: Per lingua
+ language: Pro le lingua
status: Stato
suppress: Supprimer recommendation de sequimento
suppressed: Supprimite
- title: Sequer le recommendationes
+ title: Recommendationes de contos a sequer
unsuppress: Restaurar recommendation de sequimento
instances:
availability:
@@ -504,7 +504,7 @@ ia:
instance_follows_measure: lor sequitores hic
instance_languages_dimension: Linguas principal
instance_media_attachments_measure: annexos multimedial immagazinate
- instance_reports_measure: signalationes sur illos
+ instance_reports_measure: reportos sur illes
instance_statuses_measure: messages immagazinate
delivery:
all: Totes
@@ -517,7 +517,7 @@ ia:
delivery_error_days: Dies de errores de livration
delivery_error_hint: Si le livration non es possibile durante %{count} dies, illo essera automaticamente marcate como non livrabile.
destroyed_msg: Le datos de %{domain} es ora in cauda pro deletion imminente.
- empty: Necun dominios trovate.
+ empty: Necun dominio trovate.
known_accounts:
one: "%{count} conto cognoscite"
other: "%{count} contos cognoscite"
@@ -533,7 +533,7 @@ ia:
total_blocked_by_us: Blocate per nos
total_followed_by_them: Sequite per illes
total_followed_by_us: Sequite per nos
- total_reported: Signalationes sur illes
+ total_reported: Reportos sur illes
total_storage: Annexos multimedial
totals_time_period_hint_html: Le totales monstrate hic infra include le datos de tote le tempore.
unknown_instance: Iste dominio non es actualmente cognoscite sur iste servitor.
@@ -579,24 +579,24 @@ ia:
status: Stato
title: Repetitores
report_notes:
- created_msg: Nota de signalation create con successo!
- destroyed_msg: Nota de signalation delite con successo!
+ created_msg: Nota de reporto create con successo!
+ destroyed_msg: Nota de reporto delite con successo!
reports:
account:
notes:
one: "%{count} nota"
other: "%{count} notas"
action_log: Registro de inspection
- action_taken_by: Action prendite per
+ action_taken_by: Mesura prendite per
actions:
- delete_description_html: Le messages signalate essera delite e un admonition essera registrate pro adjutar te a prender mesuras in caso de futur infractiones proveniente del mesme conto.
- mark_as_sensitive_description_html: Le files multimedial in le messages reportate essera marcate como sensibile e un admonition essera registrate pro adjutar te a prender mesuras in caso de futur infractiones proveniente del mesme conto.
+ delete_description_html: Le messages reportate essera delite e un sanction essera registrate pro adjutar te a prender mesuras adequate in caso de futur infractiones committite desde le mesme conto.
+ mark_as_sensitive_description_html: Le files multimedial in le messages reportate essera marcate como sensibile e un sanction essera registrate pro adjutar te a prender mesuras adequate in caso de futur infractiones committite desde le mesme conto.
other_description_html: Vider plus optiones pro controlar le comportamento del conto e personalisar le communication al conto signalate.
- resolve_description_html: Necun action essera prendite contra le conto signalate, necun admonition registrate, e le signalation essera claudite.
- silence_description_html: Iste conto essera visibile solmente a qui ja lo seque o manualmente lo cerca, limitante gravemente su portata. Pote sempre esser revertite. Claude tote le signalationes contra iste conto.
- suspend_description_html: Le conto e tote su contento essera inaccessible e finalmente delite, e interager con illo essera impossibile. Reversibile intra 30 dies. Claude tote le signalationes contra iste conto.
- actions_description_html: Decide qual action prender pro resolver iste signalation. Si tu prende un action punitive contra le conto signalate, le persona recipera un notification in e-mail, excepte si le categoria Spam es seligite.
- actions_description_remote_html: Decide qual action prender pro resolver iste signalation. Isto affectara solmente le maniera in que tu servitor communica con iste conto remote e gere su contento.
+ resolve_description_html: Necun mesura essera prendite contra le conto denunciate, necun sanction registrate, e le reporto essera claudite.
+ silence_description_html: Iste conto essera visibile solmente a qui ja lo seque o manualmente lo cerca, limitante gravemente su portata. Pote sempre esser revertite. Claude tote le reportos contra iste conto.
+ suspend_description_html: Le conto e tote su contento essera inaccessibile e finalmente delite, e interager con illo essera impossibile. Reversibile intra 30 dies. Claude tote le reportos contra iste conto.
+ actions_description_html: Decide qual mesura prender pro resolver iste reporto. Si tu prende un mesura punitive contra le conto reportate, le persona recipera un notification in e-mail, excepte si le categoria Spam es seligite.
+ actions_description_remote_html: Decide qual mesura prender pro resolver iste reporto. Isto affectara solmente le maniera in que tu servitor communica con iste conto remote e gere su contento.
add_to_report: Adder plus al reporto
already_suspended_badges:
local: Ja suspendite sur iste servitor
@@ -604,19 +604,19 @@ ia:
are_you_sure: Es tu secur?
assign_to_self: Assignar a me
assigned: Moderator assignate
- by_target_domain: Dominio del conto signalate
+ by_target_domain: Dominio del conto reportate
cancel: Cancellar
category: Categoria
- category_description_html: Le motivo pro le qual iste conto e/o contento ha essite signalate essera citate in le communication con le conto signalate
+ category_description_html: Le motivo pro le qual iste conto e/o contento ha essite reportate essera citate in le communication con le conto reportate
comment:
none: Necun
comment_description_html: 'Pro fornir plus information, %{name} ha scribite:'
confirm: Confirmar
- confirm_action: Confirmar le action de moderation contra %{acct}
- created_at: Signalate
+ confirm_action: Confirmar le mesura de moderation contra %{acct}
+ created_at: Reportate
delete_and_resolve: Deler le messages
forwarded: Reexpedite
- forwarded_replies_explanation: Iste signalation proveni de un usator remote e concerne contento remote. Illo te ha essite reexpedite perque le contento signalate es in responsa a un usator tue.
+ forwarded_replies_explanation: Iste reporto proveni de un usator remote e concerne contento remote. Illo te ha essite reexpedite perque le contento reportate es in responsa a un usator tue.
forwarded_to: Reexpedite a %{domain}
mark_as_resolved: Marcar como resolvite
mark_as_sensitive: Marcar como sensibile
@@ -627,41 +627,41 @@ ia:
create_and_resolve: Resolver con nota
create_and_unresolve: Reaperir con nota
delete: Deler
- placeholder: Describe le actiones prendite, o insere altere information pertinente...
+ placeholder: Describe le mesuras prendite, o insere altere information pertinente...
title: Notas
- notes_description_html: Vider e lassar notas pro altere moderatores e pro tu proprie futuro
+ notes_description_html: Vider e lassar notas a altere moderatores e a tu ego futur
processed_msg: 'Reporto #%{id} elaborate con successo'
quick_actions_description_html: 'Face un rapide action o rola a basso pro vider le contento reportate:'
remote_user_placeholder: le usator remote ab %{instance}
reopen: Reaperir reporto
report: 'Reporto #%{id}'
- reported_account: Conto signalate
- reported_by: Signalate per
+ reported_account: Conto reportate
+ reported_by: Reportate per
resolved: Resolvite
resolved_msg: Reporto resolvite con successo!
skip_to_actions: Saltar al actiones
status: Stato
- statuses: Contento signalate
- statuses_description_html: Le contento offensive sera citate in communication con le conto reportate
+ statuses: Contento reportate
+ statuses_description_html: Le contento offensive essera citate in communication con le conto reportate
summary:
action_preambles:
- delete_html: 'Tu va remover parte de messages de @%{acct}. Isto ira:'
- mark_as_sensitive_html: 'Tu va marcar parte de messages de @%{acct} como sensibile. Isto ira:'
- silence_html: 'Tu va limitar le conto de @%{acct}. Isto ira:'
- suspend_html: 'Tu va limitar le conto de @%{acct}. Isto ira:'
+ delete_html: 'Tu es sur le puncto de remover alcunes del messages de @%{acct}. Isto va:'
+ mark_as_sensitive_html: 'Tu es sur le puncto de marcar alcunes del messages de @%{acct} como sensibile. Isto va:'
+ silence_html: 'Tu es sur le puncto de limitar le conto de @%{acct}. Isto va:'
+ suspend_html: 'Tu es sur le puncto de suspender le conto de @%{acct}. Isto va:'
actions:
delete_html: Remover le messages offensive
- mark_as_sensitive_html: Marcar le medios de messages offensive como sensibile
+ mark_as_sensitive_html: Marcar le multimedia de messages offensive como sensibile
silence_html: Limitar gravemente le portata de @%{acct} rendente le profilo e contento visibile solmente a qui ja lo seque o lo cerca manualmente
suspend_html: Suspender @%{acct}, rendente le profilo e contento inaccessibile e le interaction con illo impossibile
- close_report: Marcar le signalation №%{id} como resolvite
- close_reports_html: Marcar tote le signalationes contra @%{acct} como resolvite
+ close_report: 'Marcar le reporto #%{id} como resolvite'
+ close_reports_html: Marcar tote le reportos contra @%{acct} como resolvite
delete_data_html: Deler le profilo e contento de @%{acct} in 30 dies excepte si le suspension es disfacite intertanto
preview_preamble_html: "@%{acct} recipera un advertimento con le sequente contento:"
- record_strike_html: Registrar un admonition contra @%{acct} pro adjutar te a imponer sanctiones in caso de futur violationes de iste conto
+ record_strike_html: Registra un sanction contra @%{acct} pro adjutar te a prender mesuras adequate in caso de futur violationes committite desde iste conto
send_email_html: Inviar un e-mail de advertimento a @%{acct}
warning_placeholder: Motivation supplementari facultative pro le action de moderation.
- target_origin: Origine del conto signalate
+ target_origin: Origine del conto reportate
title: Reportos
unassign: Disassignar
unknown_action_msg: 'Action incognite: %{action}'
@@ -707,7 +707,7 @@ ia:
manage_invites: Gerer le invitationes
manage_invites_description: Permitte que usatores examina e deactiva ligamines de invitation
manage_reports: Gerer le reportos
- manage_reports_description: Permitte que usatores revide signalationes e exeque actiones de moderation a base de illos
+ manage_reports_description: Permitte que usatores revide reportos e prende mesuras de moderation a base de illos
manage_roles: Gerer le rolos
manage_roles_description: Permitte que usatores gere e assigna rolos inferior a lor privilegios actual
manage_rules: Gerer le regulas
@@ -716,7 +716,7 @@ ia:
manage_settings_description: Permitte que usatores cambia le parametros del sito
manage_taxonomies: Gerer taxonomias
manage_taxonomies_description: Permitte que usatores revide contento in tendentias e actualisa le parametros de hashtag
- manage_user_access: Gerer le accessos de usator
+ manage_user_access: Gerer le accesso de usatores
manage_user_access_description: Permitte que usatores disactiva le authentication bifactorial de altere usatores, cambia lor adresses de e-mail, e reinitialisa lor contrasigno
manage_users: Gerer usatores
manage_users_description: Permitte que usatores vide le detalios de altere usatores e exeque actiones de moderation contra illes
@@ -741,7 +741,7 @@ ia:
manage_rules: Gerer le regulas del servitor
preamble: Fornir information detaliate sur le functionamento, moderation e financiamento del servitor.
rules_hint: Il ha un area dedicate al regulas que tu usatores debe acceptar.
- title: A proposito de
+ title: A proposito
appearance:
preamble: Personalisar le interfacie web de Mastodon.
title: Apparentia
@@ -756,43 +756,43 @@ ia:
preamble: Controlar como contento generate per le usator es immagazinate in Mastodon.
title: Retention de contento
default_noindex:
- desc_html: Affice tote le usatores qui non ha cambiate iste parametro per se mesme
- title: Refusar de ordinario le indexation del usatores per le motores de recerca
+ desc_html: Affecta tote le usatores qui non ha personalmente cambiate iste parametro
+ title: Excluder le usatores del indexation del motores de recerca per predefinition
discovery:
- follow_recommendations: Sequer le recommendationes
- preamble: Presentar contento interessante es instrumental in introducer nove usatores qui pote non cognoscer alcuno de Mastodon.
+ follow_recommendations: Recommendationes de contos a sequer
+ preamble: Presentar contento interessante es essential pro attraher e retener nove usatores qui pote non cognoscer alcun persona sur Mastodon. Controla como varie optiones de discoperta functiona sur tu servitor.
profile_directory: Directorio de profilos
public_timelines: Chronologias public
publish_discovered_servers: Publicar servitores discoperite
- publish_statistics: Publicar statistica
- title: Discoperi
+ publish_statistics: Publicar statisticas
+ title: Discoperta
trends: Tendentias
domain_blocks:
all: A omnes
disabled: A necuno
users: A usators local in session
registrations:
- moderation_recommandation: Per favor verifica que tu ha un adequate e reactive equipa de moderation ante que tu aperi registrationes a quicunque!
+ moderation_recommandation: Per favor assecura te de haber un equipa de moderation adequate e reactive ante de aperir le inscription a omnes!
preamble: Controla qui pote crear un conto sur tu servitor.
- title: Registrationes
+ title: Inscriptiones
registrations_mode:
modes:
approved: Approbation necessari pro le inscription
none: Nemo pote inscriber se
open: Quicunque pote inscriber se
- warning_hint: Nos consilia usar “Approbation necessari pro le inscription” si tu non crede que tu equipa de moderation pote tractar spam e registrationes maligne in un modo opportun.
+ warning_hint: Nos recommenda usar “Approbation necessari pro le inscription” si tu non es secur que tu equipa de moderation pote tractar spam e inscriptiones malevolente in tempore utile.
security:
authorized_fetch: Require authentication ab servitores federate
authorized_fetch_hint: Requirer authentication de servitores federate permitte un application plus stricte de blocadas a nivello de usator e de servitor. Nonobstante, isto diminue le prestationes del servitor, reduce le portata de tu responsas e pote introducer problemas de compatibilitate con certe servicios federate. In plus, isto non impedira le actores dedicate a recuperar tu messages public e tu contos.
- authorized_fetch_overridden_hint: Tu actualmente non pote cambiar iste parametros perque il es superate per un variabile de ambiente.
+ authorized_fetch_overridden_hint: Tu actualmente non pote cambiar iste parametro perque illo es supplantate per un variabile de ambiente.
federation_authentication: Application del authentication de federation
title: Parametros de servitor
site_uploads:
delete: Deler file incargate
- destroyed_msg: Incarga de sito delite con successo!
+ destroyed_msg: Le file incargate al sito ha essite delite!
software_updates:
- critical_update: Critic! Actualisa tosto
- description: Il es recommendate de mantener actualisate tu installation de Mastodon pro beneficiar del ultime reparationes e functiones. In ultra, il es aliquando critic actualisar Mastodon in maniera opportun pro evitar problemas de securitate. Pro iste rationes, Mastodon controla pro actualisationes cata 30 minutas, e te notificara secundo tu preferentias de notificationes per email.
+ critical_update: Critic – per favor, actualisa rapidemente
+ description: Il es recommendate mantener tu installation de Mastodon actualisate pro beneficiar del ultime reparationes e functiones. In ultra, de tempore a tempore, il es de importantia critic actualisar Mastodon in tempore utile pro evitar problemas de securitate. Pro iste rationes, Mastodon verifica le presentia de actualisationes cata 30 minutas, e te notificara secundo tu preferentias de notification in e-mail.
documentation_link: Pro saper plus
release_notes: Notas de version
title: Actualisationes disponibile
@@ -800,33 +800,33 @@ ia:
types:
major: Version major
minor: Version minor
- patch: 'Version de pecias: remedios de bugs e cambiamentos facile a applicar'
+ patch: 'Version corrective: remedios de bugs e cambiamentos facile a applicar'
version: Version
statuses:
account: Autor
application: Application
- back_to_account: Retro al pagina de conto
+ back_to_account: Retornar al pagina del conto
back_to_report: Retro al pagina de reporto
batch:
- remove_from_report: Remover ab reporto
+ remove_from_report: Remover del reporto
report: Reporto
deleted: Delite
- favourites: Favoritos
- history: Chronologia del versiones
- in_reply_to: Replicante a
+ favourites: Favorites
+ history: Historia de versiones
+ in_reply_to: In responsa a
language: Lingua
media:
- title: Medios
+ title: Multimedia
metadata: Metadatos
- no_status_selected: Nulle messages era cambiate perque necun era seligite
+ no_status_selected: Necun message ha essite cambiate perque necun ha essite seligite
open: Aperir message
original_status: Message original
- reblogs: Promotiones
- status_changed: Messages cambiate
+ reblogs: Republicationes
+ status_changed: Message cambiate
title: Messages del conto
trending: Tendentias
visibility: Visibilitate
- with_media: Con medios
+ with_media: Con multimedia
strikes:
actions:
delete_statuses: "%{name} ha delite le messages de %{target}"
@@ -853,31 +853,31 @@ ia:
message_html: Tu aggregation Elasticsearch ha plus que un nodo, ma Mastodon non es configurate a usar los.
elasticsearch_preset_single_node:
action: Vide documentation
- message_html: Tu aggregation Elasticsearch ha un sol nodo, ES_PRESET deberea esser predefinite a single_node_cluster.
+ message_html: Tu aggregation Elasticsearch ha un sol nodo, ES_PRESET deberea esser mittite a single_node_cluster.
elasticsearch_reset_chewy:
- message_html: Le indexation de tu systema Elasticsearch es obsolete per un cambio de configuration. Per cfavor exeque tootctl search deploy --reset-chewy pro actualisar lo.
+ message_html: Le indexation de tu systema Elasticsearch es obsolete a causa de un cambio de parametro. Per favor exeque tootctl search deploy --reset-chewy pro actualisar lo.
elasticsearch_running_check:
- message_html: Impossibile connecter se a Elasticsearch. Verifica que illo flue, o disactiva le recerca a plen texto
+ message_html: Impossibile connecter se a Elasticsearch. Verifica que illo es active, o disactiva le recerca a plen texto
elasticsearch_version_check:
message_html: 'Version de Elasticsearch incompatibile: %{value}'
- version_comparison: Elasticsearch %{running_version} es currente dum %{required_version} es necesse
+ version_comparison: Elasticsearch %{running_version} es active, ma %{required_version} es requirite
rules_check:
action: Gerer le regulas del servitor
- message_html: Tu non ha definite ulle regulas de servitor.
+ message_html: Tu non ha definite alcun regula de servitor.
sidekiq_process_check:
- message_html: Nulle processo Sidekiq currente pro le %{value} cauda(s). Controla tu configuration de Sidekiq
+ message_html: Necun processo Sidekiq es active pro le cauda(s) %{value}. Per favor verifica tu configuration de Sidekiq
software_version_critical_check:
action: Vider le actualisationes disponibile
- message_html: Un actualisation critic de Mastodon es disponibile, actualisa lo le plus rapide possibile.
+ message_html: Un actualisation critic de Mastodon es disponibile. Per favor actualisa lo le plus tosto possibile.
software_version_patch_check:
action: Vider le actualisationes disponibile
message_html: Un actualisation de remedio de bug pro Mastodon es disponibile.
upload_check_privacy_error:
- action: Verifica hic pro plus de information
- message_html: "Tu servitor de web es mal-configurate. Le confidentialitate de tu usatores es a risco."
+ action: Consulta hic pro plus information
+ message_html: "Tu servitor web es mal configurate. Le confidentialitate de tu usatores es in risco."
upload_check_privacy_error_object_storage:
- action: Verifica hic pro plus de information
- message_html: "Tu immagazinage de objectos es mal-configurate. Le confidentialitate de tu usatores es a risco."
+ action: Consulta hic pro plus information
+ message_html: "Tu immagazinage de objectos es mal configurate. Le confidentialitate de tu usatores es in risco."
tags:
review: Revide le stato
updated_msg: Parametros de hashtag actualisate con successo
@@ -885,67 +885,67 @@ ia:
trends:
allow: Permitter
approved: Approbate
- disallow: Impedir
+ disallow: Refusar
links:
allow: Permitter ligamine
- allow_provider: Permitter editor
- description_html: Istos es ligamines que es actualmente multo compartite per contos de que tu servitor vide messages. Illo pote adjutar tu usatores a discoperir lo que eveni in le mundo. Nulle ligamines es monstrate publicamente usque tu non approba le editor. Tu alsi pote permitter o rejectar ligamines singule.
- disallow: Impedir ligamine
- disallow_provider: Impedir editor
- no_link_selected: Nulle ligamine era cambiate perque nulle era seligite
+ allow_provider: Autorisar le publicator
+ description_html: Istes es ligamines que es actualmente compartite multo per contos del quales tu servitor recipe messages. Illos pote adjutar tu usatores a discoperir lo que eveni in le mundo. Necun ligamine es monstrate publicamente usque tu autorisa le publicator. Tu pote tamben permitter o rejectar ligamines singule.
+ disallow: Prohibir le ligamine
+ disallow_provider: Prohibir le publicator
+ no_link_selected: Necun ligamine ha essite cambiate perque necun ha essite seligite
publishers:
- no_publisher_selected: Nulle editores era cambiate perque nemo era seligite
+ no_publisher_selected: Necun publicator ha essite cambiate perque necun ha essite seligite
shared_by_over_week:
one: Compartite per un persona le septimana passate
other: Compartite per %{count} personas le septimana passate
- title: Ligamines de tendentia
- usage_comparison: Compartite %{today} vices hodie, comparate al %{yesterday} de heri
- not_allowed_to_trend: Non permittite haber tendentia
- only_allowed: Solo permittite
+ title: Ligamines in tendentia
+ usage_comparison: Compartite %{today} vices hodie, in comparation con le %{yesterday} de heri
+ not_allowed_to_trend: Non autorisate a apparer in tendentias
+ only_allowed: Solo permittites
pending_review: Attende revision
preview_card_providers:
- allowed: Ligamines ab iste editor pote haber tendentia
- description_html: Il ha dominios ab que ligamines es sovente compartite sur tu servitor. Ligamines non habera publicamente tendentia salvo que le dominio del ligamine es approbate. Tu approbation (o rejection) se extende al sub-dominios.
- rejected: Ligamines ab iste editor non habera tendentia
- title: Editores
+ allowed: Ligamines de iste publicator pote apparer in tendentias
+ description_html: Istes es le dominios del quales le ligamines es frequentemente compartite sur tu servitor. Le ligamines solmente apparera in le tendentias public si le dominio del ligamine es approbate. Tu approbation (o rejection) se extende al subdominios.
+ rejected: Ligamines de iste publicator non apparera in tendentias
+ title: Publicatores
rejected: Rejectate
statuses:
allow: Permitter message
allow_account: Permitter autor
- description_html: Istos es messages que tu servitor cognosce perque illos es al momento multo compartite e favorite. Isto pote adjutar tu nove e renovate usatores a trovar altere personas a sequer. Nulle messages es monstrate publicamente usque tu approba le autor, e le autor permitte que su conto es suggerite a alteres. Tu alsi pote permitter o rejectar messages singule.
- disallow: Impedir message
- disallow_account: Impedir autor
- no_status_selected: Nulle messages era cambiate perque nulle era seligite
- not_discoverable: Le autor non ha optate pro esser detectabile
+ description_html: Istes es le messages cognoscite sur tu servitor que al momento es multo compartite e marcate como favorite. Illos pote adjutar tu usatores nove e reveniente a trovar plus personas a sequer. Necun message es monstrate publicamente usque tu approba le autor, a condition que le autor permitte que su conto es suggerite a alteres. Tu pote tamben permitter o rejectar messages singule.
+ disallow: Non permitter message
+ disallow_account: Non permitter autor
+ no_status_selected: Necun message in tendentia ha essite cambiate perque necun ha essite seligite
+ not_discoverable: Le autor non ha optate pro esser discoperibile
shared_by:
- one: Compartite e favorite un tempore
- other: Compartite e favorite %{friendly_count} tempores
- title: Messages de tendentia
+ one: Compartite o marcate como favorite un vice
+ other: Compartite o marcate como favorite %{friendly_count} vices
+ title: Messages in tendentia
tags:
- current_score: Punctuage actual %{score}
+ current_score: Score actual %{score}
dashboard:
tag_accounts_measure: usos unic
tag_languages_dimension: Linguas principal
tag_servers_dimension: Servitores principal
tag_servers_measure: servitores differente
tag_uses_measure: usos total
- description_html: Istos es hashtags que actualmente appare in tante messages que tu servitor vide. Illo pote adjutar tu usatores a discoperir re que le personas parla plus al momento. Nulle hashtags es monstrate publicamente usque tu los approba.
+ description_html: Istes es hashtags que actualmente appare in multe messages que tu servitor vide. Illos pote adjutar tu usatores a discoperir le cosas sur le quales le gente parla le plus al momento. Nulle hashtags es monstrate publicamente usque tu los approba.
listable: Pote esser suggerite
- no_tag_selected: Nulle placas era cambiate perque nulle era seligite
- not_listable: Non sera suggerite
+ no_tag_selected: Necun etiquetta ha essite cambiate perque necun ha essite seligite
+ not_listable: Non essera suggerite
not_trendable: Non apparera sub tendentias
not_usable: Non pote esser usate
- peaked_on_and_decaying: Habeva un picco %{date}, ora decade
- title: Hashtags de tendentia
+ peaked_on_and_decaying: Ha attingite su maximo le %{date}, ora in declino
+ title: Hashtags in tendentia
trendable: Pote apparer sub tendentias
- trending_rank: 'De tendentia #%{rank}'
+ trending_rank: 'Tendentia #%{rank}'
usable: Pote esser usate
- usage_comparison: Usate %{today} vices hodie, al contrario del %{yesterday} de heri
+ usage_comparison: Usate %{today} vices hodie, in comparation con le %{yesterday} de heri
used_by_over_week:
- one: Usate per un persona le ultime septimana
- other: Usate per %{count} personas le ultime septimana
+ one: Usate per un persona in le ultime septimana
+ other: Usate per %{count} personas in le ultime septimana
title: Tendentias
- trending: Tendentias
+ trending: In tendentia
warning_presets:
add_new: Adder nove
delete: Deler
@@ -953,46 +953,46 @@ ia:
empty: Tu non ha ancora definite alcun avisos predefinite.
title: Predefinitiones de avisos
webhooks:
- add_new: Adder terminal
+ add_new: Adder puncto final
delete: Deler
- description_html: Un croc web habilita Mastodon a transmitter notificationes in tempore real re eventos seligite pro tu pro activar application, assi tu application pote automaticamente discatenar reactiones.
+ description_html: Un webhook o puncto de ancorage web permitte a Mastodon transmitter notificationes in tempore real sur eventos seligite a tu proprie application, de maniera que tu application pote automaticamente activar reactiones.
disable: Disactivar
disabled: Disactivate
- edit: Rediger terminal
- empty: Tu ancora non ha configurate alcun punctos final de web croc.
+ edit: Rediger puncto final
+ empty: Tu ancora non ha configurate alcun punctos final de webhook.
enable: Activar
enabled: Active
enabled_events:
one: 1 evento activate
other: "%{count} eventos activate"
events: Eventos
- new: Nove croc web
- rotate_secret: Rotar secrete
- secret: Firmante secrete
+ new: Nove webhook
+ rotate_secret: Rotar le secreto
+ secret: Secreto de signatura
status: Stato
- title: Crocs web
- webhook: Crocs web
+ title: Webhooks
+ webhook: Webhook
admin_mailer:
auto_close_registrations:
- body: Per un carentia recente de activate de moderator, le registrationes sur %{instance} ha essite automaticamente mutate a besoniante revision manual, pro impedir %{instance} de esser usate como un platteforma pro potential mal actores. Tu pote mutar lo retro pro sempre aperir le registrationes.
- subject: Le registrationes pro %{instance} ha essite automaticamente mutate a besoniante de approbation
+ body: A causa de un manco de activate recente de moderatores, le parametros de inscription sur %{instance} ha essite automaticamente cambiate pro exiger un verification manual, a fin de impedir le possibile uso de %{instance} per actores malevolente. Tu pote reaperir le inscription a omne momento.
+ subject: Le inscriptiones a %{instance} ha essite automaticamente cambiate pro exiger approbation
new_appeal:
actions:
- delete_statuses: pro deler lor messages
- disable: pro gelar lor conto
- mark_statuses_as_sensitive: pro marcar lor messages como sensibile
- none: pro advertir
- sensitive: a marcar lor conto como sensibile
- silence: pro limitar lor conto
- suspend: pro suspender lor conto
- body: "%{target} appella un decision de moderation per %{action_taken_by} ab le %{date}, que era %{type}. Ille scribeva:"
- next_steps: Tu pote approbar le appello a disfacer le decision de moderation, o ignorar lo.
- subject: "%{username} appella un decision de moderation sur %{instance}"
+ delete_statuses: deler su messages
+ disable: gelar su conto
+ mark_statuses_as_sensitive: marcar su messages como sensibile
+ none: emitter un advertimento
+ sensitive: marcar su conto como sensibile
+ silence: limitar su conto
+ suspend: suspender su conto
+ body: "%{target} appella contra un decision de moderation, prendite per %{action_taken_by} le %{date}, de %{type}. Le appellante ha scribite:"
+ next_steps: Tu pote approbar le appello pro disfacer le decision de moderation, o ignorar lo.
+ subject: "%{username} appella contra un decision de moderation sur %{instance}"
new_critical_software_updates:
- body: Nove versiones critic de Mastodon ha essite publicate, tu poterea voler actualisar al plus tosto possibile!
+ body: Nove versiones critic de Mastodon ha essite publicate, per favor considera actualisar le plus tosto possibile!
subject: Actualisationes critic de Mastodon es disponibile pro %{instance}!
new_pending_account:
- body: Le detalios del nove conto es infra.
+ body: Le detalios del nove conto es infra. Tu pote approbar o refusar iste demanda.
subject: Nove conto preste a revider sur %{instance} (%{username})
new_report:
body: "%{reporter} ha reportate %{target}"
@@ -1002,30 +1002,30 @@ ia:
body: Nove versiones de Mastodon ha essite publicate, tu poterea voler actualisar!
subject: Nove versiones de Mastodon es disponibile pro %{instance}!
new_trends:
- body: 'Le sequente elementos besoniar de un recension ante que illos pote esser monstrate publicamente:'
+ body: 'Le sequente entratas require un revision ante que illos pote esser monstrate publicamente:'
new_trending_links:
- title: Ligamines de tendentia
+ title: Ligamines in tendentia
new_trending_statuses:
- title: Messages de tendentia
+ title: Messages in tendentia
new_trending_tags:
- title: Hashtags de tendentia
- subject: Nove tendentias pro recenser sur %{instance}
+ title: Hashtags in tendentia
+ subject: Nove tendentias a revider sur %{instance}
aliases:
add_new: Crear alias
- created_msg: Create con successo un nove alias. Ora tu pote initiar le motion ab le vetere conto.
- deleted_msg: Removite con successo le alias. Mover de ille conto a isto non sera plus possibile.
+ created_msg: Le nove alias ha essite create. Ora tu pote initiar le migration desde le conto ancian.
+ deleted_msg: Le alias ha essite removite. Non essera plus possibile migrar de ille conto a iste.
empty: Tu non ha aliases.
- hint_html: Si tu desira mover ab un altere conto a isto, ci tu pote crear un alias, que es requirite ante que tu pote continuar con mover sequaces ab le vetere conto a isto. Iste action per se mesme es innocue e reversibile. Le migration de conto es initiate ab le vetere conto.
+ hint_html: Si tu vole migrar de un altere conto a iste, tu pote crear un alias ci, que es necessari pro poter transferer le sequitores del conto ancian a iste. Iste action per se es innocue e reversibile. Le migration del conto es initiate desde le conto ancian.
remove: Disligar alias
appearance:
advanced_web_interface: Interfacie web avantiate
- advanced_web_interface_hint: 'Si tu desira facer uso de tu integre largessa de schermo, le interfacie web avantiate te permitte de configurar plure columnas differente pro vider al mesme tempore tante informationes como tu vole: pagina principal, notificationes, chronogramma federate, ulle numero de listas e hashtags.'
+ advanced_web_interface_hint: 'Si tu vole utilisar tote le largessa de tu schermo, le interfacie web avantiate te permitte configurar multe columnas differente pro vider al mesme tempore tante informationes como tu vole: pagina principal, notificationes, chronologia federate, un numero illimitate de listas e hashtags.'
animations_and_accessibility: Animationes e accessibilitate
confirmation_dialogs: Dialogos de confirmation
discovery: Discoperta
localization:
body: Mastodon es traducite per voluntarios.
- guide_link: https://crowdin.com/project/mastodon
+ guide_link: https://crowdin.com/project/mastodon/ia
guide_link_text: Totes pote contribuer.
sensitive_content: Contento sensibile
application_mailer:
@@ -1033,110 +1033,110 @@ ia:
salutation: "%{name},"
settings: 'Cambiar preferentias de e-mail: %{link}'
unsubscribe: Desubscriber
- view: 'Vider:'
+ view: 'Visita:'
view_profile: Vider profilo
view_status: Vider message
applications:
created: Application create con successo
destroyed: Application delite con successo
- logout: Clauder le session
- regenerate_token: Regenerar testimonio de accesso
- token_regenerated: Testimonio de accesso regenerate con successo
- warning: Sia multo attente con iste datos. Jammais compartir los con quicunque!
- your_token: Tu testimonio de accesso
+ logout: Clauder session
+ regenerate_token: Regenerar token de accesso
+ token_regenerated: Le token de accesso ha essite regenerate
+ warning: Sia multo prudente con iste datos. Non comparti los jammais con alcuno!
+ your_token: Tu token de accesso
auth:
- apply_for_account: Peter un conto
+ apply_for_account: Requestar un conto
captcha_confirmation:
help_html: Si tu ha problemas a solver le CAPTCHA, tu pote contactar nos per %{email} e nos pote assister te.
- hint_html: Justo un altere cosa! Nos debe confirmar que tu es un human (isto es assi proque nos pote mantener foras le spam!). Solve le CAPTCHA infra e clicca "Continuar".
+ hint_html: Solo un altere cosa! Nos debe confirmar que tu es un humano (de sorta que nos pote mantener le spam foras!). Solve le CAPTCHA infra e clicca sur "Continuar".
title: Controlo de securitate
confirmations:
- awaiting_review: Tu adresse email es confirmate! Le personal de %{domain} ora revide tu registration. Tu recipera un email si illes approba tu conto!
- awaiting_review_title: Tu registration es revidite
- clicking_this_link: cliccante iste ligamine
- login_link: acceder
- proceed_to_login_html: Ora tu pote continuar a %{login_link}.
- redirect_to_app_html: Tu deberea haber essite re-dirigite al app %{app_name}. Si isto non eveni, tenta %{clicking_this_link} o manualmente retorna al app.
- registration_complete: Tu registration sur %{domain} es ora complete!
+ awaiting_review: Tu adresse de e-mail es confirmate! Le personal de %{domain} ora revide tu registration. Tu recipera un e-mail si illes approba tu conto!
+ awaiting_review_title: Tu inscription es in curso de revision
+ clicking_this_link: cliccar sur iste ligamine
+ login_link: aperir session
+ proceed_to_login_html: Ora tu pote %{login_link}.
+ redirect_to_app_html: Tu deberea haber essite redirigite al app %{app_name}. Si isto non ha evenite, tenta %{clicking_this_link} o retornar manualmente al app.
+ registration_complete: Tu inscription sur %{domain} es ora concludite!
welcome_title: Benvenite, %{name}!
- wrong_email_hint: Si ille adresse email non es correcte, tu pote cambiar lo in parametros de conto.
+ wrong_email_hint: Si ille adresse de e-mail non es correcte, tu pote cambiar lo in le parametros del conto.
delete_account: Deler le conto
- delete_account_html: Si tu vole a dele tu conto, tu pote continuar ci. Te sera demandate confirmation.
+ delete_account_html: Si tu vole deler tu conto, tu pote facer lo hic. Te essera demandate un confirmation.
description:
prefix_invited_by_user: "@%{name} te invita a junger te a iste servitor de Mastodon!"
prefix_sign_up: Inscribe te sur Mastodon hodie!
- suffix: Con un conto, tu potera sequer personas, messages de actualisation e excambios de messages con usatores de ulle servitor de Mastodon e plus!
+ suffix: Con un conto, tu potera sequer personas, publicar tu pensatas e excambiar messages con usatores de qualcunque servitor de Mastodon e multo plus!
didnt_get_confirmation: Non recipeva tu un ligamine de confirmation?
dont_have_your_security_key: Non ha tu le clave de securitate?
forgot_password: Contrasigno oblidate?
- invalid_reset_password_token: Pete un nove.
- link_to_otp: Insere un codice a duo factores o un codice de recuperation ab tu telephono
+ invalid_reset_password_token: Le token pro reinitialisar le contrasigno non es valide o ha expirate. Per favor requesta un nove.
+ link_to_otp: Insere un codice a duo factores de tu telephono o un codice de recuperation
link_to_webauth: Usa tu apparato clave de securitate
- log_in_with: Accede con
- login: Accede
- logout: Clauder le session
- migrate_account: Move a un conto differente
- migrate_account_html: Si tu vole re-adressar iste conto a un altere, tu pote configurar lo ci.
- or_log_in_with: O accede con
- privacy_policy_agreement_html: Io ha legite e acceptar le politica de confidentialitate
+ log_in_with: Aperir session con
+ login: Aperir session
+ logout: Clauder session
+ migrate_account: Migrar a un altere conto
+ migrate_account_html: Si tu vole rediriger iste conto a un altere, tu pote configurar lo hic.
+ or_log_in_with: O aperi session con
+ privacy_policy_agreement_html: Io ha legite e accepta le politica de confidentialitate
progress:
- confirm: Confirma le email
+ confirm: Confirmar e-mail
details: Tu detalios
review: Nostre revision
rules: Accepta le regulas
providers:
cas: CAS
saml: SAML
- register: Inscribe te
+ register: Inscriber se
registration_closed: "%{instance} non accepta nove membros"
resend_confirmation: Reinviar ligamine de confirmation
- reset_password: Remontar le contrasigno
+ reset_password: Reinitialisar contrasigno
rules:
accept: Acceptar
back: Retro
invited_by: 'Tu pote junger te a %{domain} gratias al invitation que tu ha recipite de:'
- preamble: Illos es predefinite e fortiarte per le moderatores de %{domain}.
- preamble_invited: Ante que tu continua, considera le regulas base definite per le moderatores de %{domain}.
- title: Alcun regulas base.
+ preamble: Istes es definite e applicate per le moderatores de %{domain}.
+ preamble_invited: Ante que tu continua, considera le regulas de base definite per le moderatores de %{domain}.
+ title: Alcun regulas de base.
title_invited: Tu ha essite invitate.
security: Securitate
set_new_password: Definir un nove contrasigno
setup:
- email_below_hint_html: Verifica tu plica de spam, o pete un altero. Tu pote corriger tu adresse email si illo es errate.
- email_settings_hint_html: Clicca le ligamine que nos te inviava pro verificar %{email}.
- link_not_received: Non obteneva tu un ligamine?
- new_confirmation_instructions_sent: Tu recipera un nove email con le ligamine de confirmation in alcun minutas!
- title: Verifica tu cassa de ingresso
+ email_below_hint_html: Consulta tu dossier de spam, o requesta un altere ligamine de confirmation. Tu pote corriger tu adresse de e-mail si illo es errate.
+ email_settings_hint_html: Clicca sur le ligamine que nos te ha inviate pro verificar %{email}. Nos te attendera hic.
+ link_not_received: Necun ligamine recipite?
+ new_confirmation_instructions_sent: Tu recipera un nove e-mail con le ligamine de confirmation in poc minutas!
+ title: Consulta tu cassa de entrata
sign_in:
- preamble_html: Accede con tu %{domain} credentiales. Si tu conto es hospite sur un differente servitor, tu non potera authenticar te ci.
- title: Acceder a %{domain}
+ preamble_html: Aperi session con tu credentiales de %{domain}. Si tu conto es albergate sur un altere servitor, tu non potera aperir session hic.
+ title: Aperir session sur %{domain}
sign_up:
- manual_review: Le inscriptiones sur %{domain} passa per revision manual de nostre moderatores. Pro adjutar nos a processar tu registration, scribe un poco re te mesme e perque tu vole un conto sur %{domain}.
- preamble: Con un conto sur iste servitor de Mastodon, tu potera sequer ulle altere persona in rete, sin reguardo de ubi lor conto es hospite.
- title: Lassa que nos te configura sur %{domain}.
+ manual_review: Le inscriptiones sur %{domain} passa per un revision manual de nostre moderatores. Pro adjutar nos a processar tu inscription, per favor scribe un poco sur te e explica proque tu vole un conto sur %{domain}.
+ preamble: Con un conto sur iste servitor de Mastodon, tu potera sequer qualcunque altere persona sur le rete, independentemente de ubi su conto es albergate.
+ title: Lassa nos installar tu conto sur %{domain}.
status:
account_status: Stato del conto
- confirming: Attendente esser completate email de confirmation.
- functional: Tu conto es plenmente operative.
- pending: Tu application es pendente de revision per nostre personal. Isto pote prender alcun tempore. Tu recipera un email si tu application es approbate.
- redirecting_to: Tu conto es inactive perque illo es actualmente re-adressa a %{acct}.
- self_destruct: Dum %{domain} va clauder, tu solo habera accesso limitate a tu conto.
- view_strikes: Examinar le admonitiones passate contra tu conto
- too_fast: Formulario inviate troppo velocemente, retenta.
+ confirming: Attendente le termination del confirmation del adresse de e-mail.
+ functional: Tu conto es completemente operative.
+ pending: Tu demanda attende le revision per nostre personal. Isto pote prender alcun tempore. Tu recipera un e-mail si tu demanda es approbate.
+ redirecting_to: Tu conto es inactive perque illo actualmente redirige a %{acct}.
+ self_destruct: Perque %{domain} va clauder, tu solo habera accesso limitate a tu conto.
+ view_strikes: Examinar le sanctiones passate contra tu conto
+ too_fast: Formulario inviate troppo rapidemente. Tenta lo de novo.
use_security_key: Usar clave de securitate
challenge:
confirm: Continuar
- hint_html: "Consilio: Nos non te demandara tu contrasigno ancora pro le proxime hora."
+ hint_html: "Consilio: Nos non te demandara tu contrasigno de novo in le proxime hora."
invalid_password: Contrasigno non valide
prompt: Confirma le contrasigno pro continuar
crypto:
errors:
invalid_key: non es un clave Ed25519 o Curve25519 valide
- invalid_signature: non es un valide firma Ed25519
+ invalid_signature: non es un signatura Ed25519 valide
date:
formats:
- default: "%b %d, %Y"
- with_month_name: "%B %d, %Y"
+ default: "%d %b %Y"
+ with_month_name: "%d de %B %Y"
datetime:
distance_in_words:
about_x_hours: "%{count}h"
@@ -1144,44 +1144,44 @@ ia:
about_x_years: "%{count}a"
almost_x_years: "%{count}a"
half_a_minute: Justo ora
- less_than_x_minutes: "%{count} m"
+ less_than_x_minutes: "%{count}m"
less_than_x_seconds: Justo ora
over_x_years: "%{count}a"
x_days: "%{count}d"
- x_minutes: "%{count} m"
+ x_minutes: "%{count}m"
x_months: "%{count}me"
x_seconds: "%{count}s"
deletes:
- challenge_not_passed: Le informationes que tu ha inserite non era correcte
+ challenge_not_passed: Le informationes que tu ha inserite non es correcte
confirm_password: Insere tu contrasigno actual pro verificar tu identitate
- confirm_username: Insere tu actual contrasigno pro verificar tu identitate
+ confirm_username: Insere tu nomine de usator pro confirmar le procedura
proceed: Deler le conto
- success_msg: Tu conto esseva delite con successo
+ success_msg: Tu conto ha essite delite
warning:
- before: 'Insere tu nomine de usator pro confirmar le procedura:'
- caches: Contente que ha essite in cache per altere servitores pote persister
+ before: 'Ante de continuar, per favor lege attentemente iste notas:'
+ caches: Le contento que altere servitores ha immagazinate in cache pote persister
data_removal: Tu messages e altere datos essera removite permanentemente
email_change_html: Tu pote cambiar tu adresse de e-mail sin deler tu conto
- email_contact_html: Si illo ancora non arriva, tu pote inviar email a %{email} pro peter adjuta
- email_reconfirmation_html: Si tu non recipe le email de confirmation, tu pote %{email} pro peter adjuta
+ email_reconfirmation_html: Si tu non recipe le e-mail de confirmation, tu pote politica de confidentialitate.
+ more_details_html: Pro plus detalios, vide le politica de confidentialitate.
username_available: Tu nomine de usator essera disponibile novemente
username_unavailable: Tu nomine de usator remanera indisponibile
disputes:
strikes:
- action_taken: Action prendite
- appeal: Facer appello
- appeal_approved: Iste admonition ha essite annullate in appello e non es plus valide
+ action_taken: Mesura prendite
+ appeal: Appellar
+ appeal_approved: Iste sanction ha essite annullate in appello e non es plus valide
appeal_rejected: Le appello ha essite rejectate
appeal_submitted_at: Appello submittite
appealed_msg: Tu appello ha essite submittite. Si es approbate, tu recipera notification.
appeals:
submit: Submitter appello
approve_appeal: Approbar apello
- associated_report: Signalation associate
+ associated_report: Le reporto associate
created_at: Del data
- description_html: Istes es le actiones prendite contra tu conto e le advertimentos que te ha essite inviate per le personal de %{instance}.
+ description_html: Istes es le mesuras prendite contra tu conto e le advertimentos que te ha essite inviate per le personal de %{instance}.
recipient: Adressate a
reject_appeal: Rejectar appello
status: Message №%{id}
@@ -1202,23 +1202,23 @@ ia:
invalid_domain: non es un nomine de dominio valide
edit_profile:
basic_information: Information basic
- hint_html: "Personalisa lo que le personas vide sur tu profilo public e presso tu messages. Il es plus probabile que altere personas te seque e interage con te quando tu ha un profilo compilate e un photo de profilo."
+ hint_html: "Personalisa lo que le personas vide sur tu profilo public e presso tu messages. Il es plus probabile que altere personas te seque e interage con te quando tu ha un profilo complete e un photo."
other: Alteres
errors:
- '400': Le requesta que tu inviava era non valide o mal formate.
- '403': Tu non ha le permisso pro acceder a iste pagina.
+ '400': Le requesta que tu ha inviate non es valide o es mal formate.
+ '403': Tu non ha le permission de acceder a iste pagina.
'404': Le pagina que tu cerca non es ci.
- '406': Iste pagina non es disponibile in le formato requirite.
+ '406': Iste pagina non es disponibile in le formato demandate.
'410': Le pagina que tu cercava non plus existe ci.
'422':
content: Le verification de securitate ha fallite. Bloca tu le cookies?
title: Falleva le verification de securitate
- '429': Troppe requestas
+ '429': Troppo de requestas
'500':
- content: Nos lo regretta, ma alco errate eveniva sur nostre extremo.
+ content: Nos lo regretta, ma qualcosa non ha functionate de nostre latere.
title: Iste pagina non es correcte
- '503': Le pagina non poteva esser servite per un panna de servitor temporari.
- noscript_html: A usar le application web Mastodon, activa JavaScript. In alternativa, tenta un del apps native de Mastodon pro tu platteforma.
+ '503': Le pagina non poteva esser servite a causa de un panna temporari del servitor.
+ noscript_html: Pro usar le application web Mastodon, es necessari activar JavaScript. Tu pote tamben probar un del apps native de Mastodon pro tu platteforma.
existing_username_validator:
not_found: impossibile trovar un usator local con ille nomine de usator
not_found_multiple: non poteva trovar %{usernames}
@@ -1226,9 +1226,9 @@ ia:
archive_takeout:
date: Data
download: Discargar tu archivo
- hint_html: Tu pote requirer un archivo de tu messages e medios cargate. Le datos exportate sera in le formato ActivityPub, legibile per ulle software conforme.
+ hint_html: Tu pote requestar un archivo de tu messages e files multimedial incargate. Le datos exportate essera in le formato ActivityPub, legibile per qualcunque software conforme. Tu pote requestar un archivo cata 7 dies.
in_progress: Compilante tu archivo...
- request: Pete tu archivo
+ request: Requestar tu archivo
size: Dimension
blocks: Tu ha blocate
bookmarks: Marcapaginas
@@ -1236,16 +1236,16 @@ ia:
domain_blocks: Blocadas de dominio
lists: Listas
mutes: Tu ha silentiate
- storage: Immagazinage de medios
+ storage: Immagazinage multimedial
featured_tags:
add_new: Adder nove
errors:
- limit: Tu ha jam consiliate le maxime numero de hashtags
- hint_html: "Consilia tu plus importante hashtags sur tu profilo. Un grande instrumento pro tener tracia de tu labores creative e projectos de longe-tempore, le hashtags consiliate es monstrate prominentemente sur tu profilo e permitte accesso rapide a tu proprie messages."
+ limit: Tu ha jam mittite in evidentia le maxime numero de hashtags
+ hint_html: "Monstra tu plus importante hashtags sur tu profilo. Un excellente instrumento pro tener tracia de tu labores creative e projectos de longe termino, le hashtags que tu mitte in evidentia appare prominentemente sur tu profilo e permitte le accesso rapide a tu proprie messages."
filters:
contexts:
account: Profilos
- home: Pagina de initio e listas
+ home: Initio e listas
notifications: Notificationes
public: Chronologias public
thread: Conversationes
@@ -1253,11 +1253,11 @@ ia:
add_keyword: Adder parola clave
keywords: Parolas clave
statuses: Messages individual
- statuses_hint_html: Iste filtro se applica a seliger messages singule sin reguardo si illes concorda le parolas clave infra. Revide o remove le messages ab le filtro.
+ statuses_hint_html: Iste filtro se applica a un selection de messages individual, independentemente de si illos corresponde al parolas clave infra. Revide o remove messages del filtro.
title: Modificar filtro
errors:
- deprecated_api_multiple_keywords: Iste parametros non pote esser cambiate ab iste application perque illos se applica a plus que un sol parola clave del filtro. Usa un application plus recente o le interfacie web.
- invalid_context: Nulle o non valide contexto supplite
+ deprecated_api_multiple_keywords: Iste parametros non pote esser cambiate desde iste application perque illos se applica a plus de un parola clave del filtro. Usa un application plus recente o le interfacie web.
+ invalid_context: Contexto mancante o non valide
index:
contexts: Filtros in %{contexts}
delete: Deler
@@ -1271,8 +1271,8 @@ ia:
one: "%{count} message"
other: "%{count} messages"
statuses_long:
- one: "%{count} singule message celate"
- other: "%{count} singule messages celate"
+ one: "%{count} message individual celate"
+ other: "%{count} messages individual celate"
title: Filtros
new:
save: Salveguardar nove filtro
@@ -1280,9 +1280,9 @@ ia:
statuses:
back_to_filter: Retro al filtro
batch:
- remove: Remover ab filtro
+ remove: Remover del filtro
index:
- hint: Iste filtro se applica pro seliger messages singule sin reguardo de altere criterios. Tu pote adder altere messages a iste filtro ab le interfacie web.
+ hint: Iste filtro se applica a un selection de messages individual, independentemente de altere criterios. Tu pote adder plus messages a iste filtro desde le interfacie web.
title: Messages filtrate
generic:
all: Toto
@@ -1290,53 +1290,53 @@ ia:
one: "%{count} elemento sur iste pagina es seligite."
other: Tote le %{count} elementos sur iste pagina es seligite.
all_matching_items_selected_html:
- one: "%{count} elemento concordante que tu cerca es seligite."
- other: Tote le %{count} elementos concordante que tu cerca es seligite.
+ one: "%{count} elemento correspondente al recerca es seligite."
+ other: Tote le %{count} elementos correspondente al recerca es seligite.
cancel: Cancellar
changes_saved_msg: Cambios salveguardate con successo!
confirm: Confirmar
copy: Copiar
delete: Deler
deselect: Deseliger toto
- none: Nemo
+ none: Necun
order_by: Ordinar per
save_changes: Salvar le cambios
select_all_matching_items:
- one: Selige %{count} elemento concordante tu recerca.
- other: Selige %{count} elementos concordante tu recerca.
+ one: Selige %{count} elemento correspondente a tu recerca.
+ other: Selige %{count} elementos correspondente a tu recerca.
today: hodie
validation_errors:
- one: Alco non es multo bon ancora! Controla le error infra
- other: Alco non es multo bon ancora! Controla %{count} errores infra
+ one: Qualcosa ancora non es multo bon! Per favor controla le error infra
+ other: Qualcosa ancora non es multo bon! Per favor controla le %{count} errores infra
imports:
errors:
empty: File CSV vacue
incompatible_type: Incompatibile con le typo de importation seligite
invalid_csv_file: 'File CSV non valide. Error: %{error}'
- over_rows_processing_limit: contine plus que %{count} rangos
- too_large: Le file es troppo longe
+ over_rows_processing_limit: contine plus de %{count} lineas
+ too_large: Le file es troppo grande
failures: Fallimentos
imported: Importate
- mismatched_types_warning: Il appare que tu pote haber seligite le typo errate pro iste importation, controla duo vices.
+ mismatched_types_warning: Il pare que tu pote haber seligite le typo errate pro iste importation. Per favor reverifica lo.
modes:
- merge: Funder
- merge_long: Mantene le registrationes existente e adde illos nove
+ merge: Fusionar
+ merge_long: Conservar le registros existente e adder noves
overwrite: Superscriber
overwrite_long: Reimplaciar registros actual con le noves
overwrite_preambles:
blocking_html: Tu es sur le puncto de reimplaciar tu lista de blocadas per usque a %{total_items} contos proveniente de %{filename}.
- bookmarks_html: Tu va reimplaciar tu lista de blocadas per usque a %{total_items} contos proveniente de %{filename}.
+ bookmarks_html: Tu es sur le puncto de reimplaciar tu marcapaginas per usque a %{total_items} messages desde %{filename}.
domain_blocking_html: Tu es sur le puncto de reimplaciar tu lista de blocadas de dominio per usque a %{total_items} dominios proveniente de %{filename}.
- following_html: Tu va sequer usque %{total_items} contos de %{filename} e cessar de sequer ulle altere.
- lists_html: Tu va reimplaciar tu lista con contentos de %{filename}. Usque %{total_items} contos sera addite a nove listas.
- muting_html: Tu va reimplaciar tu lista de contos silentiate con usque %{total_items} contos ab %{filename}.
+ following_html: Tu es sur le puncto de sequer usque a %{total_items} contos de %{filename} e cessar de sequer tote le alteres.
+ lists_html: Tu es sur le puncto de reimplaciar tu listas per le contento de %{filename}. Usque a %{total_items} contos essera addite a nove listas.
+ muting_html: Tu es sur le puncto de reimplaciar tu lista de contos silentiate con usque a %{total_items} contos desde %{filename}.
preambles:
blocking_html: Tu es sur le puncto de blocar usque a %{total_items} contos a partir de %{filename}.
- bookmarks_html: Tu va adder usque %{total_items} messages de %{filename} a tu marcapaginas.
+ bookmarks_html: Tu es sur le puncto de adder usque a %{total_items} messages desde %{filename} a tu marcapaginas.
domain_blocking_html: Tu es sur le puncto de blocar usque a %{total_items} dominios a partir de %{filename}.
- following_html: Tu va blocar usque a %{total_items} dominios ab %{filename}.
- lists_html: Tu va adder usque %{total_items} contos ab %{filename} a tu lista. Nove listas sera create si il non ha lista a adder.
- muting_html: Tu va silentiar usque %{total_items} contos ab %{filename}.
+ following_html: Tu es sur le puncto de sequer usque a %{total_items} contos desde %{filename}.
+ lists_html: Tu es sur le puncto de adder usque %{total_items} contos desde %{filename} a tu listas. Nove listas essera create si il non ha un lista al qual adder los.
+ muting_html: Tu es sur le puncto de silentiar usque a %{total_items} contos desde %{filename}.
preface: Tu pote importar datos que tu ha exportate de un altere servitor, como un lista de personas que tu seque o bloca.
recent_imports: Importationes recente
states:
@@ -1345,7 +1345,7 @@ ia:
scheduled: Planificate
unconfirmed: Non confirmate
status: Stato
- success: Tu datos era cargate con successo e sera processate in tempore debite
+ success: Tu datos ha essite correctemente incargate e essera tractate in tempore debite
time_started: Initiate le
titles:
blocking: Importation de contos blocate
@@ -1362,9 +1362,9 @@ ia:
blocking: Lista de blocadas
bookmarks: Marcapaginas
domain_blocking: Lista de dominios blocate
- following: Sequente lista
+ following: Lista de contos sequite
lists: Listas
- muting: Lista del silentiates
+ muting: Lista de contos silentiate
upload: Incargar
invites:
delete: Disactivar
@@ -1399,10 +1399,10 @@ ia:
sign_in_token: codice de securitate de e-mail
webauthn: claves de securitate
description_html: Si tu vide activitate que tu non recognosce, considera de cambiar tu contrasigno e activar le authentication a duo factores.
- empty: Nulle chronologia de authentication disponibile
+ empty: Nulle historia de authentication disponibile
failed_sign_in_html: Tentativa de authentication fallite con %{method} ab %{ip} (%{browser})
- successful_sign_in_html: Apertura de session con successo con %{method} ab %{ip} (%{browser})
- title: Chronologia de authentication
+ successful_sign_in_html: Apertura de session succedite con %{method} desde %{ip} (%{browser})
+ title: Historia de authentication
mail_subscriptions:
unsubscribe:
action: Si, desubscriber
@@ -1421,127 +1421,127 @@ ia:
media_attachments:
validations:
images_and_video: Impossibile annexar un video a un message que jam contine imagines
- not_ready: Impossibile annexar un video a un message que jam contine imagines. Retenta post un momento!
- too_many: Impossibile annexar plus que 4 files
+ not_ready: Impossibile annexar files que non ha ancora essite processate. Retenta post un momento!
+ too_many: Impossibile annexar plus de 4 files
migrations:
- acct: Movite a
+ acct: Ha migrate a
cancel: Cancellar redirection
- cancel_explanation: Cancellar le redirection reactivara tu conto actual, ma non reportara sequaces que ha essite movite in ille conto.
+ cancel_explanation: Cancellar le redirection reactivara tu conto actual, ma non te retornara le sequitores que ha essite transferite al altere conto.
cancelled_msg: Redirection cancellate con successo.
errors:
- already_moved: is the same account you have already moved to
+ already_moved: es le mesme conto al qual tu ha ja migrate
missing_also_known_as: non es un alias de iste conto
move_to_self: non pote esser le conto actual
- not_found: non poterea esser trovate
+ not_found: non poteva esser trovate
on_cooldown: Tu es in pausa
- followers_count: Sequaces a tempore de mover
- incoming_migrations: Movente ab un conto differente
- incoming_migrations_html: Pro mover ab un altere conto a isto, primo tu debe crear un alias de conto.
- moved_msg: Tu conto ora es redirigite a %{acct} e tu sequaces es movite super.
- not_redirecting: Tu conto actualmente non es redirigite a ulle altere conto.
- on_cooldown: Tu recentemente ha migrate tu conto. Iste function de novo sera disponibile in %{count} dies.
+ followers_count: Sequitores al momento de migration
+ incoming_migrations: Migrar de un altere conto
+ incoming_migrations_html: Pro migrar de un altere conto a iste, primo tu debe crear un alias de conto.
+ moved_msg: Tu conto es ora redirigite a %{acct} e le transferentia de tu sequitores es in curso.
+ not_redirecting: Tu conto actualmente non es redirigite a un altere conto.
+ on_cooldown: Tu ha recentemente migrate tu conto. Iste function essera disponibile de novo in %{count} dies.
past_migrations: Migrationes passate
- proceed_with_move: Mover sequaces
+ proceed_with_move: Transferer sequitores
redirected_msg: Tu conto es ora redirigite a %{acct}.
redirecting_to: Tu conto es redirigite a %{acct}.
- set_redirect: Predefinir redirection
+ set_redirect: Definir redirection
warning:
- backreference_required: Le nove conto debe primo esser configurate pro referer se a isto
- before: 'Ante de continuar, lege iste notas accuratemente:'
- cooldown: Post le movimento il ha un periodo de pausa durante le qual tu non potera mover te ancora
- disabled_account: Tu conto actual non sera plenmente usabile postea. Comocunque, tu habera accesso a exportation de datos e re-activation.
- followers: Iste action movera tote le sequaces ab le conto actual al nove conto
- only_redirect_html: In alternativa, tu pote solo superponer un redirection sur tu profilo.
- other_data: Nulle altere datos sera movite automaticamente
- redirect: Le profilo de tu conto actual sera actualisate con un aviso de redirection e sera excludite de recercas
+ backreference_required: Le nove conto debe primo esser configurate pro referer se a iste
+ before: 'Ante de continuar, lege attentemente iste notas:'
+ cooldown: Post le migration il ha un periodo de pausa durante le qual tu non potera migrar de novo
+ disabled_account: Tu conto actual non essera plenmente usabile postea. Nonobstante, tu habera accesso al exportation de datos e al reactivation.
+ followers: Iste action transferera tote le sequitores del conto actual al conto nove
+ only_redirect_html: Como alternativa, tu pote poner solmente un redirection sur tu profilo.
+ other_data: Nulle altere datos essera migrate automaticamente
+ redirect: Le profilo de tu conto actual essera actualisate con un aviso de redirection e excludite de recercas
moderation:
title: Moderation
move_handler:
carry_blocks_over_text: Iste usator ha cambiate de conto desde %{acct}, que tu habeva blocate.
- carry_mutes_over_text: Iste usator moveva ab %{acct}, que tu habeva silentiate.
- copy_account_note_text: 'Iste usator moveva ab %{acct}, ci era tu previe notas re ille:'
+ carry_mutes_over_text: Iste usator ha migrate de %{acct}, que tu habeva silentiate.
+ copy_account_note_text: 'Iste usator ha migrate de %{acct}, ecce tu previe notas sur iste persona:'
navigation:
- toggle_menu: Mutar menu
+ toggle_menu: Commutar menu
notification_mailer:
admin:
report:
- subject: "%{name} inviava un reporto"
+ subject: "%{name} ha inviate un reporto"
sign_up:
subject: "%{name} se ha inscribite"
favourite:
- body: 'Tu message era favorite per %{name}:'
- subject: "%{name} favoriva tu message"
- title: Nove preferito
+ body: 'Tu message ha essite marcate como favorite per %{name}:'
+ subject: "%{name} ha marcate tu message como favorite"
+ title: Nove favorite
follow:
body: "%{name} ora te seque!"
subject: "%{name} ora te seque"
title: Nove sequitor
follow_request:
- action: Gere requestas de sequer
+ action: Gerer requestas de sequimento
body: "%{name} ha demandate de sequer te"
- subject: 'Sequace pendente: %{name}'
+ subject: 'Sequitor pendente: %{name}'
title: Nove requesta de sequimento
mention:
action: Responder
- body: 'Tu era mentionate per %{name} in:'
- subject: Tu ha essite mentionate per %{name}
+ body: "%{name} te ha mentionate in:"
+ subject: "%{name} te ha mentionate"
title: Nove mention
poll:
- subject: Un inquesta de %{name} ha finite
+ subject: Un sondage de %{name} ha finite
reblog:
- body: 'Tu message ha essite impulsate per %{name}:'
+ body: "%{name} ha impulsate tu message:"
subject: "%{name} ha impulsate tu message"
title: Nove impulso
status:
- subject: "%{name} justo ha publicate"
+ subject: "%{name} ha publicate un message"
update:
subject: "%{name} ha modificate un message"
notifications:
- administration_emails: Avisos de email per administrator
- email_events: Eventos pro avisos de email
- email_events_hint: 'Selige eventos pro que tu vole reciper avisos:'
+ administration_emails: Notificationes per e-mail pro administratores
+ email_events: Eventos pro notificationes per e-mail
+ email_events_hint: 'Selige eventos pro le quales tu vole reciper notificationes:'
number:
human:
decimal_units:
- format: "%n%u"
+ format: "%n %u"
units:
- billion: B
- million: M
- quadrillion: Q
- thousand: K
- trillion: T
+ billion: mld
+ million: mln
+ quadrillion: bld
+ thousand: mil
+ trillion: bln
otp_authentication:
code_hint: Insere le codice generate per tu app de authentication pro confirmar
- description_html: Si tu activa le authentication a duo factores per un app de authentication, le authentication requirera que tu es in possession de tu telephono, que generara testimonios pro facer te entrar.
+ description_html: Si tu activa le authentication a duo factores usante un app de authentication, le authentication requirera que tu es in possession de tu telephono, que generara tokens que tu debera inserer.
enable: Activar
- instructions_html: "Scande iste codice QR in Google Authenticator o un simile app TOTP sur tu telephono. Desde ora in avante, ille app generara testimonios que tu debera inserer quando tu te authenticara."
- manual_instructions: 'Si tu non pote scander le codice QR e besonia de inserer lo manualmente, ecce le texto-simple secrete:'
+ instructions_html: "Scanna iste codice QR in Google Authenticator o un app TOTP simile sur tu telephono. Desde ora in avante, ille app generara tokens que tu debera inserer quando tu aperi session."
+ manual_instructions: 'Si tu non pote scannar le codice QR e debe inserer lo manualmente, ecce le secreto in texto simple:'
setup: Configurar
- wrong_code: Le codice inserite non era valide! Es tempore de servitor e tempore de apparato correcte?
+ wrong_code: Le codice inserite non es valide! Es le hora del servitor e del apparato correcte?
pagination:
- newer: Plus recente
+ newer: Plus nove
next: Sequente
- older: Plus vetere
+ older: Plus ancian
prev: Previe
truncate: "…"
polls:
errors:
already_voted: Tu jam ha votate in iste sondage
duplicate_options: contine elementos duplicate
- duration_too_long: il es troppo lontan in le futuro
- duration_too_short: il es troppo tosto
+ duration_too_long: es troppo lontan in le futuro
+ duration_too_short: es troppo tosto
expired: Le sondage ha jam finite
invalid_choice: Le option de voto eligite non existe
over_character_limit: non pote esser plus longe que %{max} characteres cata un
- self_vote: Tu non pote vota in tu proprie sondages
- too_few_options: debe haber plus que un elemento
- too_many_options: non pote continer plus que %{max} elementos
+ self_vote: Tu non pote votar in tu proprie sondages
+ too_few_options: debe haber plus de un elemento
+ too_many_options: non pote continer plus de %{max} elementos
preferences:
- other: Altere
- posting_defaults: Publicationes predefinite
+ other: Alteres
+ posting_defaults: Parametros de publication predefinite
public_timelines: Chronologias public
privacy:
- hint_html: "Personalisa como tu vole que tu profilo e tu messages a es trovate. Un varietate de functiones in Mastodon pote adjutar te attinger un plus large auditorio si activate. Prende un momento pro revider iste parametros pro assecurar te que illos se adapta a tu caso de uso."
+ hint_html: "Personalisa como tu vole que tu profilo e tu messages es trovate. Un varietate de functiones in Mastodon pote adjutar te a attinger un plus grande publico quando activate. Prende un momento pro revider iste parametros pro assecurar te que illos se adapta a tu besonios."
privacy: Confidentialitate
privacy_hint_html: Controla quanto tu vole divulgar pro le beneficio de alteres. Le gente discoperi profilos e applicationes interessante percurrente le profilos sequite per altere personas e vidente a partir de qual applicationes illos publica lor messages, ma tu pote preferer de mantener tal information private.
reach: Portata
@@ -1554,47 +1554,47 @@ ia:
reactions:
errors:
limit_reached: Limite de reactiones differente attingite
- unrecognized_emoji: non es un emoticone recognoscite
+ unrecognized_emoji: non es un emoji recognoscite
redirects:
- prompt: Si tu te fide de iste ligamine, clicca lo pro continuar.
+ prompt: Si tu te fide a iste ligamine, clicca sur illo pro continuar.
title: Tu va lassar %{instance}.
relationships:
activity: Activitate del conto
- confirm_follow_selected_followers: Desira tu vermente remover le sequaces seligite?
- confirm_remove_selected_followers: Desira tu vermente remover le sequaces seligite?
- confirm_remove_selected_follows: Desira tu vermente remover le sequaces seligite?
+ confirm_follow_selected_followers: Es tu secur que tu vole sequer le sequitores seligite?
+ confirm_remove_selected_followers: Es tu secur que tu vole remover le sequitores seligite?
+ confirm_remove_selected_follows: Es tu secur que tu vole cessar de sequer le contos seligite?
dormant: Dormiente
- follow_failure: Impossibile sequer alcun del contos seligite.
- follow_selected_followers: Sequer le sequaces seligite
- followers: Sequaces
+ follow_failure: Impossibile sequer alcunes del contos seligite.
+ follow_selected_followers: Sequer le sequitores seligite
+ followers: Sequitores
following: Sequente
invited: Invitate
- last_active: Ultimo active
+ last_active: Ultime activitate
most_recent: Plus recente
- moved: Movite
+ moved: Migrate
mutual: Mutue
primary: Primari
relationship: Relation
- remove_selected_domains: Remover tote le sequaces ab le dominios seligite
- remove_selected_followers: Remover le sequaces seligite
+ remove_selected_domains: Remover tote le sequitores del dominios seligite
+ remove_selected_followers: Remover le sequitores seligite
remove_selected_follows: Non plus sequer le usatores seligite
status: Stato del conto
remote_follow:
- missing_resource: Impossibile trovar le requirite re-adresse URL pro tu conto
+ missing_resource: Impossibile trovar le URL de redirection requirite pro tu conto
reports:
errors:
- invalid_rules: non referentia regulas valide
+ invalid_rules: non face referentia a regulas valide
rss:
content_warning: 'Advertimento de contento:'
descriptions:
account: Messages public de @%{acct}
- tag: 'Messages public plachettate #%{hashtag}'
+ tag: 'Messages public con hashtag #%{hashtag}'
scheduled_statuses:
over_daily_limit: Tu ha excedite le limite de %{limit} messages programmate pro hodie
over_total_limit: Tu ha excedite le limite de %{limit} messages programmate
too_soon: Le data programmate debe esser in le futuro
self_destruct:
- lead_html: Infortunatemente, %{domain} va clauder permanentemente. Si tu habeva un conto illac, tu non potera continuar a usar lo, ma tu pote ancora peter un salveguarda de tu datos.
+ lead_html: Infortunatemente, %{domain} tosto claudera permanentemente. Si tu habeva un conto illac, tu non potera continuar a usar lo, ma tu pote ancora requestar un copia de tu datos.
title: Iste servitor va clauder
sessions:
activity: Ultime activitate
@@ -1617,12 +1617,12 @@ ia:
qq: QQ Browser
safari: Safari
uc_browser: UC Browser
- unknown_browser: Navigator Incognite
+ unknown_browser: Navigator incognite
weibo: Weibo
current_session: Session actual
date: Data
description: "%{browser} sur %{platform}"
- explanation: Il ha navigatores del web actualmente connexe a tu conto Mastodon.
+ explanation: Istes es le navigatores web actualmente in session sur tu conto Mastodon.
ip: IP
platforms:
adobe_air: Adobe Air
@@ -1641,29 +1641,29 @@ ia:
revoke: Revocar
revoke_success: Session revocate con successo
title: Sessiones
- view_authentication_history: Vider chronologia de authentication de tu conto
+ view_authentication_history: Vider le historia de authentication de tu conto
settings:
account: Conto
account_settings: Parametros de conto
aliases: Aliases de conto
appearance: Apparentia
authorized_apps: Apps autorisate
- back: Tornar a Mastodon
+ back: Retornar a Mastodon
delete: Deletion de conto
development: Disveloppamento
edit_profile: Modificar profilo
export: Exportation de datos
- featured_tags: Hashtags eminente
+ featured_tags: Hashtags in evidentia
import: Importar
import_and_export: Importar e exportar
migrate: Migration de conto
- notifications: Notificationes de e-mail
+ notifications: Notificationes per e-mail
preferences: Preferentias
profile: Profilo public
relationships: Sequites e sequitores
severed_relationships: Relationes rupte
statuses_cleanup: Deletion de message automatic
- strikes: Admonitiones de moderation
+ strikes: Sanctiones de moderation
two_factor_authentication: Authentication a duo factores
webauthn_authentication: Claves de securitate
severed_relationships:
@@ -1675,7 +1675,7 @@ ia:
lost_followers: Sequitores perdite
lost_follows: Sequites perdite
preamble: Tu pote perder sequites e sequitores quando tu bloca un dominio o quando tu moderatores decide suspender un servitor remote. Quando isto occurre, tu potera discargar listas de relationes rumpite, a inspectar e eventualmente importar in un altere servitor.
- purged: Le information re iste servitor ha essite purgate per le administratores de tu servitor.
+ purged: Le information sur iste servitor ha essite purgate per le administratores de tu servitor.
type: Evento
statuses:
attached:
@@ -1698,7 +1698,7 @@ ia:
edited_at_html: Modificate le %{date}
errors:
in_reply_not_found: Le message a que tu tenta responder non pare exister.
- open_in_web: Aperir in le web
+ open_in_web: Aperir sur le web
over_character_limit: limite de characteres de %{max} excedite
pin_errors:
direct: Messages que es solo visibile a usatores mentionate non pote esser appunctate
@@ -1714,11 +1714,11 @@ ia:
other: "%{count} votos"
vote: Votar
show_more: Monstrar plus
- show_thread: Monstrar argumento
- title: '%{name}: "%{quote}"'
+ show_thread: Monstrar discussion
+ title: "%{name}: “%{quote}”"
visibilities:
direct: Directe
- private: Solo-sequaces
+ private: Solmente sequitores
private_long: Solmente monstrar a sequitores
public: Public
public_long: Omnes pote vider
@@ -1729,22 +1729,22 @@ ia:
enabled_hint: Dele automaticamente tu messages un vice que illos attinge un limine de etate specificate, salvo que illes concorda un del exceptiones infra
exceptions: Exceptiones
explanation: Pois que deler messages es un operation costose, isto es facite lentemente in le tempore quando le servitor non es alteremente occupate. Pro iste ration, tu messages pote esser delite un poco post que illos attinge le limine de etate.
- ignore_favs: Ignorar favoritos
+ ignore_favs: Ignorar favorites
ignore_reblogs: Ignorar impulsos
- interaction_exceptions: Exceptiones basate super interactiones
+ interaction_exceptions: Exceptiones basate sur interactiones
interaction_exceptions_explanation: Nota que il non ha garantia que le messages essera delite si illos va sub le limine de favorites o impulsos post haber lo superate un vice.
keep_direct: Mantener le messages directe
- keep_direct_hint: Non dele alcuno de tu messages directe
- keep_media: Mantener messages con annexos de medios
- keep_media_hint: Non dele alcuno de tu messages que ha annexos de medios
- keep_pinned: Mantener messages appunctate
- keep_pinned_hint: Non dele alcuno de tu messages appunctate
+ keep_direct_hint: Non dele alcun de tu messages directe
+ keep_media: Conservar messages con annexos multimedial
+ keep_media_hint: Non dele alcun de tu messages que ha annexos multimedial
+ keep_pinned: Conservar le messages fixate
+ keep_pinned_hint: Non dele alcun de tu messages fixate
keep_polls: Mantener sondages
- keep_polls_hint: Non dele ulle de tu sondages
- keep_self_bookmark: Mantener messages que tu marcava con marcapaginas
- keep_self_bookmark_hint: Non dele tu proprie messages si tu los ha marcate con marcapaginas
- keep_self_fav: Mantene messages que tu favoriva
- keep_self_fav_hint: Non dele tu proprie messages si tu los ha favorite
+ keep_polls_hint: Non dele alcun de tu sondages
+ keep_self_bookmark: Conservar le messages que tu ha in marcapaginas
+ keep_self_bookmark_hint: Non dele tu proprie messages si tu los ha addite al marcapaginas
+ keep_self_fav: Conservar tu messages favorite
+ keep_self_fav_hint: Non dele tu proprie messages si tu los ha marcate como favorite
min_age:
'1209600': 2 septimanas
'15778476': 6 menses
@@ -1755,17 +1755,17 @@ ia:
'63113904': 2 annos
'7889238': 3 menses
min_age_label: Limine de etate
- min_favs: Mantener messages favorite al minus
- min_favs_hint: Non deler alcuno de tu messages que ha recipite al minus iste numero de favoritos. Lassar blanc pro deler messages sin reguardo de lor numero de favoritos
- min_reblogs: Mantener messages impulsate al minus
+ min_favs: Conservar messages marcate como favorite al minus
+ min_favs_hint: Non dele alcun de tu messages que ha essite marcate como favorite al minus iste numero de vices. Lassa vacue pro deler messages independentemente de lor numero de marcas como favorite
+ min_reblogs: Conservar messages impulsate al minus
min_reblogs_hint: Non dele alcun de tu messages que ha essite impulsate al minus iste numero de vices. Lassar vacue pro deler messages independentemente de lor numero de impulsos
stream_entries:
sensitive_content: Contento sensibile
strikes:
errors:
- too_late: Es troppo tarde pro facer appello contra iste admonition
+ too_late: Es troppo tarde pro appellar contra iste sanction
tags:
- does_not_match_previous_name: non concorda le nomine previe
+ does_not_match_previous_name: non corresponde al nomine precedente
themes:
contrast: Mastodon (Alte contrasto)
default: Mastodon (Obscur)
@@ -1776,22 +1776,22 @@ ia:
default: "%d %b %Y, %H:%M"
month: "%b %Y"
time: "%H:%M"
- with_time_zone: "%b %d, %Y, %H:%M %Z"
+ with_time_zone: "%d %b %Y, %H:%M %Z"
translation:
errors:
quota_exceeded: Le quota de utilisation del servitor pro le servicio de traduction ha essite excedite.
- too_many_requests: Il ha habite troppe requestas al servicio de traduction recentemente.
+ too_many_requests: Il ha habite troppo de requestas al servicio de traduction recentemente.
two_factor_authentication:
add: Adder
- disable: Disactivar 2FA
+ disable: Disactivar A2F
disabled_success: Authentication a duo factores disactivate con successo
edit: Modificar
enabled: Le authentication a duo factores es activate
enabled_success: Authentication a duo factores activate con successo
generate_recovery_codes: Generar codices de recuperation
- lost_recovery_codes: Le codices de recuperation te permitte de reganiar accesso a tu conto si tu perde tu telephono. Si tu ha perdite tu codices de recuperation, tu pote regenerar los ci. Tu vetere codices de recuperation sera invalidate.
+ lost_recovery_codes: Le codices de recuperation te permitte reganiar le accesso a tu conto si tu perde tu telephono. Si tu ha perdite tu codices de recuperation, tu pote regenerar los hic. Tu ancian codices de recuperation essera invalidate.
methods: Methodos a duo factores
- otp: App de authenticator
+ otp: App authenticator
recovery_codes: Salveguardar codices de recuperation
recovery_codes_regenerated: Codices de recuperation regenerate con successo
recovery_instructions_html: Si tu perde le accesso a tu telephono, tu pote usar un del codices de recuperation hic infra pro reganiar le accesso a tu conto. Mantene le codices de recuperation secur. Per exemplo, tu pote imprimer los e guardar los con altere documentos importante.
@@ -1799,33 +1799,33 @@ ia:
user_mailer:
appeal_approved:
action: Parametros de conto
- explanation: Le appello contra le admonition contra tu conto del %{strike_date}, que tu ha submittite le %{appeal_date}, ha essite approbate. Tu conto ha de novo un bon reputation.
- subject: Tu appello ab %{date} ha essite approbate
- subtitle: Tu conto es ancora un vice in regula.
+ explanation: Le appello contra le sanction del %{strike_date} contra tu conto, que tu ha submittite le %{appeal_date}, ha essite approbate. Tu conto es de bon reputation de novo.
+ subject: Tu appello del %{date} ha essite approbate
+ subtitle: Tu conto es de bon reputation de novo.
title: Appello approbate
appeal_rejected:
- explanation: Le appello contra le admonition contra tu conto del %{strike_date}, que tu ha submittite le %{appeal_date}, ha essite rejectate.
- subject: Tu appello ab %{date} ha essite rejectate
+ explanation: Le appello contra le sanction del %{strike_date} contra tu conto, que tu ha submittite le %{appeal_date}, ha essite rejectate.
+ subject: Tu appello del %{date} ha essite rejectate
subtitle: Tu appello ha essite rejectate.
title: Appello rejectate
backup_ready:
explanation: Tu ha requestate un copia de securitate complete de tu conto de Mastodon.
- extra: Isto es preste pro discargar!
+ extra: Illo es ora preste pro discargar!
subject: Tu archivo es preste pro discargar
title: Discargar archivo
failed_2fa:
- details: 'Hic es le detalios del tentativa de initio de session:'
+ details: 'Ecce le detalios del tentativa de apertura de session:'
explanation: Alcuno ha tentate aperir session a tu conto ma ha fornite un secunde factor de authentication non valide.
further_actions_html: Si non se tractava de te, nos recommenda %{action} immediatemente perque illo pote esser compromittite.
- subject: Fallimento del authentication de duo factores
- title: Falleva le authentication de duo factores
+ subject: Fallimento de authentication del secunde factor
+ title: Ha fallite le authentication del secunde factor
suspicious_sign_in:
change_password: cambiar tu contrasigno
- details: 'Hic es le detalios del initio de session:'
- explanation: Nos ha detegite un initio de session a tu conto ab un nove adresse IP.
+ details: 'Ecce le detalios del apertura de session:'
+ explanation: Nos ha detegite un apertura de session sur tu conto desde un nove adresse IP.
further_actions_html: Si non se tractava de te, nos recommenda %{action} immediatemente e activar le authentication bifactorial pro mantener tu conto secur.
subject: Alcuno ha accedite a tu conto desde un nove adresse IP
- title: Un nove initio de session
+ title: Un nove apertura de session
warning:
appeal: Submitter un appello
appeal_description: Si tu crede que se tracta de un error, tu pote presentar un appello al personal de %{instance}.
@@ -1840,9 +1840,9 @@ ia:
silence: Tu pote ancora usar tu conto ma solmente le personas qui ja te seque videra tu messages sur iste servitor, e tu pote esser excludite de varie functiones de discoperta. Nonobstante, altere personas pote ancora sequer te manualmente.
suspend: Tu non pote plus usar tu conto, e tu profilo e altere datos non es plus accessibile. Tu pote ancora aperir session pro requestar un copia de reserva de tu datos usque lor elimination in circa 30 dies. Nos retenera certe datos de base pro impedir que tu evade le suspension.
reason: 'Ration:'
- statuses: 'Message citate:'
+ statuses: 'Messages citate:'
subject:
- delete_statuses: Tu messages sur %{acct} esseva removite
+ delete_statuses: Tu messages sur %{acct} ha essite removite
disable: Tu conto %{acct} ha essite gelate
mark_statuses_as_sensitive: Tu messages sur %{acct} ha essite marcate como sensibile
none: Advertimento pro %{acct}
@@ -1858,7 +1858,7 @@ ia:
silence: Conto limitate
suspend: Conto suspendite
welcome:
- apps_android_action: Obtene lo sur Google Play
+ apps_android_action: Obtener lo sur Google Play
apps_ios_action: Discargar sur le App Store
apps_step: Discarga nostre applicationes official.
apps_title: Applicationes de Mastodon
@@ -1870,7 +1870,7 @@ ia:
explanation: Ecce alcun consilios pro initiar
feature_action: Apprender plus
feature_audience: Mastodon te presenta le possibilitate unic de gerer tu audientia sin intermediarios. Mastodon, installate sur tu proprie infrastructura, te permitte sequer, e esser sequite per, personas sur qualcunque altere servitor Mastodon in linea, e necuno lo controla salvo tu.
- feature_audience_title: Crea tu auditorio in fiducia
+ feature_audience_title: Crea tu audientia in confidentia
feature_control: Tu sape melio lo que tu vole vider sur tu fluxo de initio. Nulle algorithmos o annuncios dissipa tu tempore. Seque quicinque sur qualcunque servitor Mastodon desde un sol conto, recipe lor messages in ordine chronologic, e face te un angulo del internet ubi tu te senti a casa.
feature_control_title: Mantene le controlo de tu proprie chronologia
feature_creativity: Mastodon supporta messages con audio, video e imagines, descriptiones de accessibilitate, sondages, advertimentos de contento, avatares con animation, emojis personalisate, controlo de retalio de miniaturas, e plus, pro adjutar te a exprimer te in linea. Que tu publica tu arte, tu musica o tu podcast, Mastodon existe pro te.
@@ -1879,13 +1879,13 @@ ia:
feature_moderation_title: Moderation como deberea esser
follow_action: Sequer
follow_step: Sequer personas interessante es le ration de esser de Mastodon.
- follow_title: Personalisa tu fluxo de initio
+ follow_title: Personalisa tu fluxo principal
follows_subtitle: Seque contos popular
follows_title: Qui sequer
- follows_view_more: Vider plus de personas a sequer
+ follows_view_more: Vider plus personas a sequer
hashtags_recent_count:
one: "%{people} persona in le passate duo dies"
- other: "%{people} personas in le passate duo diea"
+ other: "%{people} personas in le passate duo dies"
hashtags_subtitle: Explora le tendentias del passate 2 dies
hashtags_title: Hashtags in tendentia
hashtags_view_more: Vider plus de hashtags in tendentia
@@ -1929,4 +1929,4 @@ ia:
not_enabled: Tu ancora non ha activate WebAuthn
not_supported: Iste navigator non supporta claves de securitate
otp_required: Pro usar le claves de securitate activa prime le authentication de duo factores.
- registered_on: Registrate le %{date}
+ registered_on: Inscribite le %{date}
diff --git a/config/locales/lt.yml b/config/locales/lt.yml
index 77fcf42866..9e60ddfe52 100644
--- a/config/locales/lt.yml
+++ b/config/locales/lt.yml
@@ -265,10 +265,10 @@ lt:
destroy_user_role_html: "%{name} ištrynė %{target} vaidmenį"
disable_2fa_user_html: "%{name} išjungė dviejų veiksnių reikalavimą naudotojui %{target}"
disable_custom_emoji_html: "%{name} išjungė jaustuką %{target}"
- disable_sign_in_token_auth_user_html: "%{name} išjungė el. pašto prieigos tapatybės nustatymą %{target}"
+ disable_sign_in_token_auth_user_html: "%{name} išjungė el. pašto prieigos tapatybės nustatymą naudotojui %{target}"
disable_user_html: "%{name} išjungė prisijungimą naudotojui %{target}"
enable_custom_emoji_html: "%{name} įjungė jaustuką %{target}"
- enable_sign_in_token_auth_user_html: "%{name} įjungė el. pašto prieigos tapatybės nustatymą %{target}"
+ enable_sign_in_token_auth_user_html: "%{name} įjungė el. pašto prieigos tapatybės nustatymą naudotojui %{target}"
enable_user_html: "%{name} įjungė prisijungimą naudotojui %{target}"
memorialize_account_html: "%{name} pavertė %{target} paskyrą į atminimo puslapį"
promote_user_html: "%{name} paaukštino naudotoją %{target}"
@@ -440,9 +440,13 @@ lt:
create: Pridėto domeną
title: Naujas el pašto juodojo sąrašo įtraukimas
title: El pašto juodasis sąrašas
+ export_domain_blocks:
+ import:
+ description_html: Netrukus importuosi domenų blokavimų sąrašą. Labai atidžiai peržiūrėk šį sąrašą, ypač jei ne tu jį sudarei.
instances:
availability:
title: Prieinamumas
+ warning: Paskutinis bandymas prisijungti prie šio serverio buvo nesėkmingas
back_to_all: Visi
back_to_limited: Apribotas
back_to_warning: Įspėjimas
@@ -485,7 +489,7 @@ lt:
inbox_url: Perdavimo URL
pending: Laukiama perdavimo patvirtinimo
save_and_enable: Išsaugoti ir įjungti
- setup: Sukurti perdavimo ryšį
+ setup: Nustatyti perdavimo ryšį
status: Statusas
title: Perdavimai
report_notes:
@@ -493,6 +497,7 @@ lt:
destroyed_msg: Skundo žinutė sekmingai ištrinta!
reports:
action_taken_by: Veiksmo ėmėsi
+ actions_description_html: Nuspręsk, kokių veiksmų imtis, kad išspręstum šią ataskaitą. Jei imsis baudžiamųjų veiksmų prieš paskyrą, apie kurią pranešta, jiems bus išsiųstas el. laiško pranešimas, išskyrus atvejus, kai pasirinkta kategorija Šlamštas.
already_suspended_badges:
local: Jau sustabdytas šiame serveryje
remote: Jau sustabdytas jų serveryje
@@ -534,6 +539,7 @@ lt:
manage_invites: Tvarkyti kvietimus
manage_invites_description: Leidžia naudotojams naršyti ir deaktyvuoti kvietimų nuorodas.
manage_taxonomies_description: Leidžia naudotojams peržiūrėti tendencingą turinį ir atnaujinti saitažodžių nustatymus
+ manage_user_access_description: Leidžia naudotojams išjungti kitų naudotojų dvigubo tapatybės nustatymą, pakeisti el. pašto adresą ir iš naujo nustatyti slaptažodį.
settings:
captcha_enabled:
desc_html: Tai priklauso nuo hCaptcha išorinių skriptų, kurie gali kelti susirūpinimą dėl saugumo ir privatumo. Be to, dėl to registracijos procesas kai kuriems žmonėms (ypač neįgaliesiems) gali būti gerokai sunkiau prieinami. Dėl šių priežasčių apsvarstyk alternatyvias priemones, pavyzdžiui, patvirtinimu arba kvietimu grindžiamą registraciją.
@@ -546,6 +552,15 @@ lt:
all: Visiems
registrations:
moderation_recommandation: Prieš atidarant registraciją visiems, įsitikink, kad turi tinkamą ir reaguojančią prižiūrėjimo komandą!
+ registrations_mode:
+ modes:
+ approved: Registracijai privalomas patvirtinimas
+ warning_hint: Rekomenduojame naudoti „Registracijai privalomas patvirtinimas“, nebent esi tikras (-a), kad tavo prižiūrėjimo komanda gali laiku apdoroti šlamštus ir kenkėjiškas registracijas.
+ security:
+ authorized_fetch: Reikalauti tapatybės nustatymo iš federacinių serverių
+ authorized_fetch_hint: Reikalauti tapatybės nustatymo iš federacinių serverių leidžia griežčiau užtikrinti tiek naudotojo, tiek serverio lygio blokų vykdymą. Tačiau dėl to nukenčia našumas, sumažėja atsakymų pasiekiamumas ir gali kilti suderinamumo su kai kuriomis federacinėmis paslaugomis problemų. Be to, tai nesutrukdys skirtiems dalyviams gauti tavo viešų įrašų ir paskyrų.
+ authorized_fetch_overridden_hint: Šiuo metu negali pakeisti šio nustatymo, nes jį pakeičia aplinkos kintamasis.
+ federation_authentication: Federacijos tapatybės nustatymo vykdymas
software_updates:
description: Rekomenduojama nuolat atnaujinti Mastodon diegyklę, kad galėtum naudotis naujausiais pataisymais ir funkcijomis. Be to, kartais labai svarbu laiku atnaujinti Mastodon, kad būtų išvengta saugumo problemų. Dėl šių priežasčių Mastodon kas 30 minučių tikrina, ar yra naujinimų, ir praneša tau apie tai pagal tavo el. pašto pranešimų parinktis.
documentation_link: Sužinoti daugiau
@@ -586,6 +601,8 @@ lt:
elasticsearch_preset_single_node:
action: Žiūrėti dokumentaciją
message_html: Tavo Elasticsearch klasteris turi tik vieną mazgą, ES_PRESET turėtų būti nustatyta į single_node_cluster.
+ elasticsearch_running_check:
+ message_html: Nepavyko prijungti prie Elasticsearch. Patikrink, ar ji veikia, arba išjunk viso teksto paiešką.
title: Administracija
trends:
allow: Leisti
@@ -687,34 +704,71 @@ lt:
warning: Būkite atsargūs su šia informacija. Niekada jos nesidalinkite!
your_token: Tavo prieigos raktas
auth:
+ apply_for_account: Prašyti paskyros
+ captcha_confirmation:
+ help_html: Jei turi problemų išsprendžiant CAPTCHA, gali susisiekti su mumis per %{email} ir mes tau padėsime.
+ hint_html: Dar vienas dalykas! Turime patvirtinti, kad esi žmogus (kad galėtume išvengti šlamšto). Išspręsk toliau pateiktą CAPTCHA ir spausk Tęsti.
+ title: Saugumo patikrinimas
confirmations:
+ awaiting_review: Tavo el. pašto adresas yra patvirtintas! Domeno %{domain} personalas dabar tikrina tavo registraciją. Jei jie patvirtins tavo paskyrą, gausi el. laišką.
+ awaiting_review_title: Peržiūrima tavo registracija
+ clicking_this_link: paspausti šį nuorodą
+ login_link: prisijungti
+ proceed_to_login_html: Dabar gali pereiti prie %{login_link}.
+ redirect_to_app_html: Turėjei būti nukreiptas (-a) į %{app_name} programėlę. Jei taip neatsitiko, pabandyk %{clicking_this_link} arba rankiniu būdu grįžk į programėlę.
+ registration_complete: Tavo registracija domene %{domain} baigta!
welcome_title: Sveiki, %{name}!
+ wrong_email_hint: Jei šis el. pašto adresas neteisingas, gali jį pakeisti paskyros nustatymuose.
delete_account: Ištrinti paskyrą
- delete_account_html: Jeigu norite ištrinti savo paskyrą, galite eiti čia. Jūsų prašys patvirtinti pasirinkimą.
+ delete_account_html: Jei nori ištrinti savo paskyrą, gali tęsti čia. Tavęs bus paprašyta patvirtinimo.
description:
prefix_invited_by_user: "@%{name} kviečia prisijungti prie šio Mastodon serverio!"
- prefix_sign_up: Užsiregistruok Mastodon šiandien!
+ prefix_sign_up: Užsiregistruok sistemoje Mastodon šiandien!
+ suffix: Su paskyra galėsi sekti žmones, skelbti naujienas ir keistis žinutėmis su bet kurio Mastodon serverio naudotojais ir dar daugiau!
didnt_get_confirmation: Negavai patvirtinimo nuorodos?
dont_have_your_security_key: Neturi saugumo rakto?
forgot_password: Pamiršai slaptažodį?
invalid_reset_password_token: Slaptažodžio atkūrimo raktas yra netinkamas arba nebegaliojantis. Paprašyk naujo.
+ link_to_otp: Įvesk dvigubą kodą iš telefono arba atkūrimo kodą
+ link_to_webauth: Naudoti saugumo rakto įrenginį
log_in_with: Prisijungti su
login: Prisijungti
logout: Atsijungti
- migrate_account: Prisijungti prie kitos paskyros
- migrate_account_html: Jeigu norite nukreipti šią paskyrą į kita, galite tai konfiguruoti čia.
+ migrate_account: Persikelti prie kitos paskyros
+ migrate_account_html: Jei nori šią paskyrą nukreipti į kitą, gali sukonfigūruoti ją čia.
or_log_in_with: Arba prisijungti su
+ privacy_policy_agreement_html: Perskaičiau ir sutinku su privatumo politika
+ progress:
+ confirm: Patvirtinti el. paštą
+ details: Tavo duomenys
+ review: Mūsų peržiūra
+ rules: Priimti taisykles
providers:
cas: CAS
saml: SAML
register: Užsiregistruoti
- reset_password: Atstatyti slaptažodį
+ registration_closed: "%{instance} nepriima naujų narių"
+ resend_confirmation: Iš naujo siųsti patvirtinimo nuorodą
+ reset_password: Nustatyti iš naujo slaptažodį
rules:
+ accept: Priimti
+ back: Grįžti
invited_by: 'Gali prisijungti prie %{domain} pagal kvietimą, kurį gavai iš:'
+ preamble: Tai nustatė ir taiko %{domain} prižiūrėtojai.
preamble_invited: Prieš tęsiant, atsižvelk į pagrindines taisykles, kurias nustatė %{domain} prižiūrėtojai.
+ title: Kelios pagrindinės taisyklės.
title_invited: Esi pakviestas.
security: Apsauga
set_new_password: Nustatyti naują slaptažodį
+ setup:
+ email_below_hint_html: Patikrink šlamšto aplanką arba paprašyk kito. Gali ištaisyti savo el. pašto adresą, jei jis neteisingas.
+ email_settings_hint_html: Spustelėk mūsų atsiųstą nuorodą, kad patikrintum %{email}. Mes lauksime čia.
+ link_not_received: Negavai nuorodos?
+ new_confirmation_instructions_sent: Po kelių minučių gausi naują el. laišką su patvirtinimo nuoroda!
+ title: Patikrinti pašto dėžutę
+ sign_in:
+ preamble_html: Prisijunk su savo %{domain} kredencialais. Jei tavo yra kitame serveryje, čia prisijungti negalėsi.
+ title: Prisijungti prie %{domain}
status:
account_status: Paskyros būsena
redirecting_to: Tavo paskyra yra neaktyvi, nes šiuo metu ji nukreipiama į %{acct}.
@@ -851,6 +905,12 @@ lt:
expires_at: Baigsis
uses: Naudojimai
title: Kviesti žmones
+ login_activities:
+ authentication_methods:
+ otp: dvigubas tapatybės nustatymo programėlė
+ description_html: Jei pastebėjei neatpažįstamą veiklą, apsvarstyk galimybę pakeisti slaptažodį ir įjungti dvigubą tapatybės nustatymą.
+ empty: Tapatybės nustatymas istorijos nėra
+ title: Tapatybės nustatymo istorija
media_attachments:
validations:
images_and_video: Negalima pridėti video prie statuso, kuris jau turi nuotrauką
@@ -893,6 +953,10 @@ lt:
billion: mlrd.
million: mln.
thousand: tūkst.
+ otp_authentication:
+ code_hint: Įvesk autentifikatoriaus programėlės sugeneruotą kodą, kad patvirtintum
+ description_html: Jei įjungsi dvigubo tapatybės nustatymą naudojant autentifikatoriaus programėlę, prisijungiant reikės turėti telefoną, kuris generuos prieigos raktos, kuriuos turėsi įvesti.
+ instructions_html: "Nuskenuok šį QR kodą į Google Authenticator arba panašią TOTP programėlę savo telefone. Nuo šiol ši programėlė generuos prieigos raktus, kuriuos turėsi įvesti prisijungiant."
pagination:
newer: Naujesnis
next: Kitas
@@ -963,6 +1027,7 @@ lt:
revoke: Naikinti
revoke_success: Seansas sėkmingai panaikintas.
title: Seansai
+ view_authentication_history: Peržiūrėti paskyros tapatybės nustatymo istoriją
settings:
account: Paskyra
account_settings: Paskyros nustatymai
@@ -982,7 +1047,7 @@ lt:
profile: Viešas profilis
relationships: Sekimai ir sekėjai
severed_relationships: Nutrūkę sąryšiai
- two_factor_authentication: Dviejų veiksnių autentikacija
+ two_factor_authentication: Dvigubas tapatybės nustatymas
severed_relationships:
download: Atsisiųsti (%{count})
preamble: Užblokavus domeną arba prižiūrėtojams nusprendus pristabdyti nuotolinio serverio veiklą, gali prarasti sekimus ir sekėjus. Kai taip atsitiks, galėsi atsisiųsti nutrauktų sąryšių sąrašus, kad juos patikrinti ir galbūt importuoti į kitą serverį.
@@ -1035,10 +1100,12 @@ lt:
two_factor_authentication:
add: Pridėti
disable: Išjungti 2FA
- enabled: Dviejų veiksnių autentikacija įjungta
- enabled_success: Dviejų veiksnių autentikacija sėkmingai įjungta
+ disabled_success: Dvigubas tapatybės nustatymas sėkmingai išjungtas
+ enabled: Dvigubas tapatybės nustatymas įjungtas
+ enabled_success: Dvigubas tapatybės nustatymas sėkmingai įjungtas
generate_recovery_codes: Sugeneruoti atkūrimo kodus
lost_recovery_codes: Atkūrimo kodai jums leidžia atgauti prisijungimą prie Jūsų paskyros, jeigu prarandate telefoną. Jeigu praradote atkūrimo kodus, juos galite sugeneruoti čia. Jūsų senieji atkūrimo kodai nebeveiks.
+ otp: Autentifikatoriaus programėlė
recovery_codes: Atsarginio atkūrimo kodai
recovery_codes_regenerated: Atkūrimo kodai sėkmingai sugeneruoti
recovery_instructions_html: Jeigu prarandate prieiga prie telefono, jūs galite naudoti atkūrimo kodus esančius žemiau, kad atgautumėte priega prie savo paskyros.Laikykite atkūrimo kodus saugiai Pavyzdžiui, galite norėti juos išspausdinti, ir laikyti kartu su kitais svarbiais dokumentais.
@@ -1055,11 +1122,15 @@ lt:
title: Archyvas išimtas
failed_2fa:
details: 'Štai išsami informacija apie bandymą prisijungti:'
- explanation: Kažkas bandė prisijungti prie tavo paskyros, bet nurodė netinkamą antrąjį tapatybės nustatymo veiksnį.
+ explanation: Kažkas bandė prisijungti prie tavo paskyros, bet nurodė netinkamą dvigubą tapatybės nustatymą.
further_actions_html: Jei tai buvo ne tu, rekomenduojame nedelsiant imtis %{action}, nes jis gali būti pažeistas.
- subject: Antrojo veiksnio tapatybės nustatymas nesėkmingai
- title: Nepavyko atlikti antrojo veiksnio tapatybės nustatymo
+ subject: Dvigubas tapatybės nustatymas nesėkmingai
+ title: Nepavyko atlikti dvigubo tapatybės nustatymo
+ suspicious_sign_in:
+ further_actions_html: Jei tai buvai ne tu, rekomenduojame nedelsiant %{action} ir įjungti dvigubą tapatybės nustatymą, kad tavo paskyra būtų saugi.
warning:
+ categories:
+ spam: Šlamštas
subject:
disable: Jūsų paskyra %{acct} buvo užšaldyta
none: Įspėjmas vartotojui %{acct}
@@ -1134,3 +1205,4 @@ lt:
success: Tavo saugumo raktas buvo sėkmingai ištrintas.
nickname_hint: Įvesk naujojo saugumo rakto slapyvardį
not_enabled: Dar neįjungei WebAuthn
+ otp_required: Norint naudoti saugumo raktus, pirmiausia įjunk dvigubą tapatybės nustatymą.
diff --git a/config/locales/simple_form.ia.yml b/config/locales/simple_form.ia.yml
index 51329edd88..2d0af3001e 100644
--- a/config/locales/simple_form.ia.yml
+++ b/config/locales/simple_form.ia.yml
@@ -3,42 +3,42 @@ ia:
simple_form:
hints:
account:
- discoverable: Tu messages public e tu profilo pote esser consiliate o recommendate in varie areas de Mastodon e tu profilo pote esser suggerite a altere usatores.
+ discoverable: Tu messages public e tu profilo pote esser mittite in evidentia o recommendate in varie areas de Mastodon e tu profilo pote esser suggerite a altere usatores.
display_name: Tu prenomine e nomine de familia o tu pseudonymo.
- fields: Tu pagina principal, pronomines, etate, toto lo que tu vole.
- indexable: Tu messages public pote apparer in resultatos del recerca sur Mastodon. Illes qui ha interagite con tu messages totevia pote cercar les.
+ fields: Tu pagina principal, pronomines, etate, tote lo que tu vole.
+ indexable: Tu messages public pote apparer in le resultatos de recerca sur Mastodon. Le personas qui ha interagite con tu messages pote cercar los in omne caso.
note: 'Tu pote @mentionar altere personas o #hashtags.'
- show_collections: Le personas potera navigar per tu sequites e sequaces. Le personas potera navigar per tu sequites e sequaces.
- unlocked: Le personas potera sequer te sin requestar approbation. Dismarca si tu desira revider le requestas de sequer e selige si acceptar o rejectar nove sequaces.
+ show_collections: Le gente potera percurrer le listas de personas que tu seque e qui te seque. Le personas que tu seque videra que tu les seque in omne caso.
+ unlocked: Le personas potera sequer te sin requestar approbation. Dismarca si tu vole revider le requestas de sequimento e seliger si acceptar o rejectar nove sequitores.
account_alias:
- acct: Specifica le nomine_de_usator@dominio del conto ab que tu vole mover
+ acct: Specifica le nomine_de_usator@dominio del conto desde le qual tu vole migrar
account_migration:
- acct: Specifica le nomine_de_usator@dominio del conto a que tu vole mover
+ acct: Specifica le nomine_de_usator@dominio del conto al qual tu vole migrar
account_warning_preset:
- text: Tu pote usar le syntaxe de message, tal como URLs, hashtags e mentiones
+ text: Tu pote usar le syntaxe de messages, como URLs, hashtags e mentiones
title: Optional. Non visibile al destinatario
admin_account_action:
- include_statuses: Le usator videra que messages ha causate le action o aviso de moderation
- send_email_notification: Le usator recipera un explication de cosa eveniva con lor conto
- text_html: Optional. Tu pote usar le syntaxe de message. Tu pote adder avisos preconfigurate pro sparniar tempore
- type_html: Selige lo que tu vole facer con %{acct}
+ include_statuses: Le usator videra qual messages ha causate le action o advertimento de moderation
+ send_email_notification: Le usator recipera un explication de lo que ha evenite con su conto
+ text_html: Optional. Tu pote usar le syntaxe de messages. Tu pote adder advertimentos preconfigurate pro sparniar tempore
+ type_html: Selige lo que facer con %{acct}
types:
- disable: Impedir al usator de usar lor conto, sin deler o celar lor contentos.
- none: Usar lo pro inviar un aviso al usator, sin discatenar ulle altere action.
- sensitive: Fortiar tote le annexos multimedial de iste usator a esser signalate como sensibile.
- silence: Impedir al usator de poter publicar messages con public visibilitate, celar lor messages e notificationes ab gente non sequente illes. Clauder tote le reportos contra iste conto.
- suspend: Impedir ulle interaction de o a iste conto e deler su contentos. Reversibile intra 30 dies. Clauder tote le reportos contra iste conto.
- warning_preset_id: Optional. Tu pote ancora adder personal texto a fin del preconfigurate
+ disable: Impedir al usator de usar su conto, sin deler o celar su contento.
+ none: Usa isto pro inviar un advertimento al usator, sin prender alcun altere mesura.
+ sensitive: Fortiar tote le annexos multimedial de iste usator a esser marcate como sensibile.
+ silence: Impedir al usator de publicar messages con visibilitate public, celante su messages e notificationes a qui non le seque. Claude tote le reportos contra iste conto.
+ suspend: Impedir tote interaction desde o verso iste conto e deler su contento. Reversibile intra 30 dies. Claude tote le reportos contra iste conto.
+ warning_preset_id: Optional. Tu pote ancora adder texto personalisate al fin del preconfigurate
announcement:
- all_day: Si marcate, solo le datas del campo tempore sera monstrate
- ends_at: Le annuncio sera automaticamente obscurate a iste tempore
- scheduled_at: Lassar blanc pro publicar le annuncio immediatemente
- starts_at: Optional. In caso tu annuncio es ligate con un specific campo tempore
- text: Tu pote usar le syntaxe de message. Presta attention al spatio que le annuncio occupara sur le schermo de usator
+ all_day: Si marcate, solmente le datas del intervallo de tempore essera monstrate
+ ends_at: Optional. Le annuncio essera automaticamente retirate del publication a iste tempore
+ scheduled_at: Lassa vacue pro publicar le annuncio immediatemente
+ starts_at: Optional. In caso que tu annuncio es ligate a un intervallo specific de tempore
+ text: Tu pote usar le syntaxe de messages. Presta attention al spatio que le annuncio occupara sur le schermo del usator
appeal:
- text: Tu pote solo appellar te un vice
+ text: Tu pote solo appellar contra un sanction un vice
defaults:
- autofollow: Illes qui se inscribe per le invitation automaticamente devenira tu sequaces
+ autofollow: Le personas qui se inscribe per medio del invitation te sequera automaticamente
avatar: WEBP, PNG, GIF or JPG. Al maximo %{size}. Sera diminuite a %{dimensions}px
bot: Signala a alteres que le conto principalmente exeque actiones automatisate e poterea non esser surveliate
context: Un o plure contextos ubi le filtro deberea applicar se
@@ -53,7 +53,7 @@ ia:
password: Usa al minus 8 characteres
phrase: Sera concordate ignorante majuscule/minuscule in le texto o avisos de contento de un message
scopes: A que APIs sera permittite acceder al application. Si tu selige un ambito de maxime nivello, tu non besonia de seliger los singulemente.
- setting_aggregate_reblogs: Non monstra nove stimulos pro messages que ha essite recentemente stimulate (stimulos solo affice los novemente recipite)
+ setting_aggregate_reblogs: Non monstrar nove impulsos pro messages que ha essite recentemente impulsate (affecta solmente le impulsos novemente recipite)
setting_always_send_emails: Normalmente le avisos de email non sera inviate quando tu activemente usa Mastodon
setting_default_sensitive: Le medios sensibile es celate de ordinario e pote esser revelate con un clic
setting_display_media_default: Celar le medios marcate como sensibile
@@ -64,7 +64,7 @@ ia:
username: Tu pote usar litteras, numeros e tractos de sublineamento
whole_word: Quando le parola o expression clave es solo alphanumeric, illo sera solo applicate si illo concorda con tote le parola
domain_allow:
- domain: Iste dominio potera reportar datos ab iste servitor e le datos in ingresso ab illo sera processate e immagazinate
+ domain: Iste dominio potera extraher datos de iste servitor e le datos entrante de illo essera processate e immagazinate
email_domain_block:
domain: Isto pote esser le nomine de dominio que apparera in le adresse email o le registration MX que illo usa. Illos sera verificate durante le inscription.
with_dns_records: Un tentativa sera facite pro resolver le registrationes de DNS del dominio date e le resultatos sera alsi blocate
@@ -81,7 +81,7 @@ ia:
backups_retention_period: Le usatores pote generar archivos de lor messages pro discargar los plus tarde. Quando predefinite a un valor positive, iste archivos sera automaticamente delite de tu immagazinage post le specificate numero de dies.
bootstrap_timeline_accounts: Iste contos sera appunctate al summitate del recommendationes a sequer del nove usatores.
closed_registrations_message: Monstrate quando le inscriptiones es claudite
- content_cache_retention_period: Tote messages de altere servitores (includite stimulos e responsas) sera delite post le specificate numero de dies, sin considerar alcun interaction de usator local con ille messages. Isto include messages ubi un usator local los ha marcate como marcapaginas o favoritos. Mentiones private inter usatores de differente instantias sera alsi perdite e impossibile a restaurar. Le uso de iste parametros es intendite pro specific instantias e infringe multe expectationes de usator quando implementate pro uso general.
+ content_cache_retention_period: Tote le messages de altere servitores (includite impulsos e responsas) essera delite post le numero de dies specificate, independentemente de tote interaction de usatores local con ille messages. Isto include le messages addite al marcapaginas o marcate como favorite per un usator local. Le mentiones private inter usatores de differente instantias tamben essera irrecuperabilemente perdite. Le uso de iste parametro es intendite pro instantias con scopos specific e viola multe expectationes de usatores si es implementate pro uso general.
custom_css: Tu pote applicar stilos personalisate sur le version de web de Mastodon.
favicon: WEBP, PNG, GIF o JPG. Supplanta le favicone predefinite de Mastodon con un icone personalisate.
mascot: Illo substitue le illustration in le interfacie web avantiate.
@@ -125,9 +125,9 @@ ia:
webauthn: Si illo es un clave USB cura de inserer lo e, si necessari, tocca lo.
settings:
indexable: Tu pagina del profilo pote apparer in resultatos del recerca sur Google, Bing, e alteros.
- show_application: Tu sempre sera capace totevia de vider que app publicava tu message.
+ show_application: In omne caso, tu potera sempre vider qual app ha publicate tu message.
tag:
- name: Tu pote solo cambiar le inveloppe del litteras, per exemplo, pro render lo plus legibile
+ name: Tu pote solmente cambiar le litteras inter majusculas e minusculas, per exemplo, pro render lo plus legibile
user:
chosen_languages: Si marcate, solo le messages in le linguas seligite sera monstrate in chronologias public
role: Le rolo controla que permissos ha le usator
@@ -158,7 +158,7 @@ ia:
text: Texto predefinite
title: Titulo
admin_account_action:
- include_statuses: Includer messages reportate in le email
+ include_statuses: Includer le messages reportate in le e-mail
send_email_notification: Notificar le usator per e-mail
text: Advertimento personalisate
type: Action
@@ -203,10 +203,10 @@ ia:
password: Contrasigno
phrase: Parola o phrase clave
setting_advanced_layout: Activar le interfacie web avantiate
- setting_aggregate_reblogs: Gruppa promotiones in classificationes temporal
+ setting_aggregate_reblogs: Gruppar impulsos in chronologias
setting_always_send_emails: Sempre inviar notificationes per e-mail
setting_auto_play_gif: Auto-reproduce GIFs animate
- setting_boost_modal: Monstrar dialogo de confirmation ante promover
+ setting_boost_modal: Monstrar dialogo de confirmation ante de impulsar
setting_default_language: Lingua de publication
setting_default_privacy: Confidentialitate del messages
setting_default_sensitive: Sempre marcar le medios cmo sensbile
@@ -269,7 +269,7 @@ ia:
trends: Activar tendentias
trends_as_landing_page: Usar tendentias como pagina de destination
interactions:
- must_be_follower: Blocar notificationes de non-sequaces
+ must_be_follower: Blocar notificationes de personas qui non te seque
must_be_following: Blocar notificationes de gente que tu non sequer
must_be_following_dm: Blocar messages directe de gente que tu non seque
invite:
@@ -292,7 +292,7 @@ ia:
follow_request: Alcuno requireva de sequer te
mention: Alcuno te mentionava
pending_account: Nove conto besonia de revision
- reblog: Alcuno promoveva tu message
+ reblog: Alcuno ha impulsate tu message
report: Un nove reporto es inviate
software_updates:
all: Notificar sur tote le actualisationes
diff --git a/config/locales/simple_form.lv.yml b/config/locales/simple_form.lv.yml
index 711484b642..017acd0a53 100644
--- a/config/locales/simple_form.lv.yml
+++ b/config/locales/simple_form.lv.yml
@@ -77,9 +77,12 @@ lv:
warn: Paslēp filtrēto saturu aiz brīdinājuma, kurā minēts filtra nosaukums
form_admin_settings:
activity_api_enabled: Vietēji publicēto ziņu, aktīvo lietotāju un jauno reģistrāciju skaits nedēļas kopās
+ app_icon: WEBP, PNG, GIF vai JPG. Mobilajās ierīcēs aizstāj noklusējuma lietotnes ikonu ar pielāgotu.
+ backups_retention_period: Lietotājiem ir iespēja izveidot savu ierakstu arhīvu lejupielādēšanai vēlāk. Kad iestatīta pozitīva vērtība, šie arhīvi tiks automātiski izdzēsti no krātuves pēc norādītā dienu skaita.
bootstrap_timeline_accounts: Šie konti tiks piesprausti jauno lietotāju ieteikumu augšdaļā.
closed_registrations_message: Tiek rādīts, kad reģistrēšanās ir slēgta
custom_css: Vari lietot pielāgotus stilus Mastodon tīmekļa versijā.
+ favicon: WEBP, PNG, GIF vai JPG. Aizstāj noklusējuma Mastodon favikonu ar pielāgotu.
mascot: Ignorē ilustrāciju uzlabotajā tīmekļa saskarnē.
peers_api_enabled: Domēna vārdu saraksts, ar kuriem šis serveris ir saskāries fediversā. Šeit nav iekļauti dati par to, vai tu veic federāciju ar noteiktu serveri, tikai tavs serveris par to zina. To izmanto dienesti, kas apkopo statistiku par federāciju vispārīgā nozīmē.
profile_directory: Profilu direktorijā ir uzskaitīti visi lietotāji, kuri ir izvēlējušies būt atklājami.
@@ -113,6 +116,7 @@ lv:
sign_up_requires_approval: Jaunām reģistrācijām būs nepieciešams tavs apstiprinājums
severity: Izvēlies, kas notiks ar pieprasījumiem no šīs IP adreses
rule:
+ hint: Izvēles. Sniedz vairāk informācijas par nosacījumu
text: Apraksti nosacījumus vai prasības šī servera lietotājiem. Centies, lai tas būtu īss un vienkāršs
sessions:
otp: 'Ievadi divfaktoru kodu, ko ģenerējusi tava tālruņa lietotne, vai izmanto kādu no atkopšanas kodiem:'
@@ -239,6 +243,7 @@ lv:
backups_retention_period: Lietotāja arhīva glabāšanas periods
bootstrap_timeline_accounts: Vienmēr iesaki šos kontus jaunajiem lietotājiem
closed_registrations_message: Pielāgots ziņojums, ja reģistrēšanās nav pieejama
+ content_cache_retention_period: Attālā satura paturēšanas laika posms
custom_css: Pielāgots CSS
mascot: Pielāgots talismans (mantots)
media_cache_retention_period: Multivides kešatmiņas saglabāšanas periods
@@ -295,6 +300,7 @@ lv:
patch: Paziņot par novērsto kļūdu atjauninājumiem
trending_tag: Jaunā tendence ir jāpārskata
rule:
+ hint: Papildu informācija
text: Noteikumi
settings:
indexable: Ietvert profila lapu meklēšanas dzinējos
diff --git a/config/routes/api.rb b/config/routes/api.rb
index cb5a2301e1..03a79b2286 100644
--- a/config/routes/api.rb
+++ b/config/routes/api.rb
@@ -40,6 +40,7 @@ namespace :api, format: false do
resource :direct, only: :show, controller: :direct
resource :home, only: :show, controller: :home
resource :public, only: :show, controller: :public
+ resource :link, only: :show, controller: :link
resources :tag, only: :show
resources :list, only: :show
end
@@ -329,6 +330,18 @@ namespace :api, format: false do
end
end
+ namespace :v2_alpha do
+ resources :notifications, only: [:index, :show] do
+ collection do
+ post :clear
+ end
+
+ member do
+ post :dismiss
+ end
+ end
+ end
+
namespace :web do
resource :settings, only: [:update]
resources :embeds, only: [:show]
diff --git a/db/migrate/20240513095755_add_group_key_to_notifications.rb b/db/migrate/20240513095755_add_group_key_to_notifications.rb
new file mode 100644
index 0000000000..2e2a302fff
--- /dev/null
+++ b/db/migrate/20240513095755_add_group_key_to_notifications.rb
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+class AddGroupKeyToNotifications < ActiveRecord::Migration[7.1]
+ def change
+ add_column :notifications, :group_key, :string
+ end
+end
diff --git a/db/migrate/20240513123807_add_index_notifications_on_account_id_and_group_key.rb b/db/migrate/20240513123807_add_index_notifications_on_account_id_and_group_key.rb
new file mode 100644
index 0000000000..66874418b2
--- /dev/null
+++ b/db/migrate/20240513123807_add_index_notifications_on_account_id_and_group_key.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+class AddIndexNotificationsOnAccountIdAndGroupKey < ActiveRecord::Migration[7.1]
+ disable_ddl_transaction!
+
+ def change
+ add_index :notifications, [:account_id, :group_key], algorithm: :concurrently, where: 'group_key IS NOT NULL'
+ end
+end
diff --git a/db/post_migrate/20240603195202_change_read_me_scope_to_profile.rb b/db/post_migrate/20240603195202_change_read_me_scope_to_profile.rb
new file mode 100644
index 0000000000..05e5984c48
--- /dev/null
+++ b/db/post_migrate/20240603195202_change_read_me_scope_to_profile.rb
@@ -0,0 +1,23 @@
+# frozen_string_literal: true
+
+class ChangeReadMeScopeToProfile < ActiveRecord::Migration[7.1]
+ def up
+ replace_scopes('read:me', 'profile')
+ end
+
+ def down
+ replace_scopes('profile', 'read:me')
+ end
+
+ private
+
+ def replace_scopes(old_scope, new_scope)
+ Doorkeeper::Application.where("scopes LIKE '%#{old_scope}%'").in_batches do |applications|
+ applications.update_all("scopes = replace(scopes, '#{old_scope}', '#{new_scope}')")
+ end
+
+ Doorkeeper::AccessToken.where("scopes LIKE '%#{old_scope}%'").in_batches do |access_tokens|
+ access_tokens.update_all("scopes = replace(scopes, '#{old_scope}', '#{new_scope}')")
+ end
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 6fa9c9b891..8e45142bac 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema[7.1].define(version: 2024_05_22_041528) do
+ActiveRecord::Schema[7.1].define(version: 2024_06_03_195202) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -724,6 +724,8 @@ ActiveRecord::Schema[7.1].define(version: 2024_05_22_041528) do
t.bigint "from_account_id", null: false
t.string "type"
t.boolean "filtered", default: false, null: false
+ t.string "group_key"
+ t.index ["account_id", "group_key"], name: "index_notifications_on_account_id_and_group_key", where: "(group_key IS NOT NULL)"
t.index ["account_id", "id", "type"], name: "index_notifications_on_account_id_and_id_and_type", order: { id: :desc }
t.index ["account_id", "id", "type"], name: "index_notifications_on_filtered", order: { id: :desc }, where: "(filtered = false)"
t.index ["activity_id", "activity_type"], name: "index_notifications_on_activity_id_and_activity_type"
diff --git a/docker-compose.yml b/docker-compose.yml
index e7ae95ea7a..7089b0d14f 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,3 +1,6 @@
+# This file is designed for production server deployment, not local development work
+# For a containerized local dev environment, see: https://github.com/mastodon/mastodon/blob/main/README.md#docker
+
services:
db:
restart: always
diff --git a/lib/active_record/with_recursive.rb b/lib/active_record/with_recursive.rb
new file mode 100644
index 0000000000..4bd3e81eed
--- /dev/null
+++ b/lib/active_record/with_recursive.rb
@@ -0,0 +1,65 @@
+# frozen_string_literal: true
+
+# Add support for writing recursive CTEs in ActiveRecord
+
+# Initially from Lorin Thwaits (https://github.com/lorint) as per comment:
+# https://github.com/vlado/activerecord-cte/issues/16#issuecomment-1433043310
+
+# Modified from the above code to change the signature to
+# `with_recursive(hash)` and extending CTE hash values to also includes arrays
+# of values that get turned into UNION ALL expressions.
+
+# This implementation has been merged in Rails: https://github.com/rails/rails/pull/51601
+
+module ActiveRecord
+ module QueryMethodsExtensions
+ def with_recursive(*args)
+ @with_is_recursive = true
+ check_if_method_has_arguments!(__callee__, args)
+ spawn.with_recursive!(*args)
+ end
+
+ # Like #with_recursive but modifies the relation in place.
+ def with_recursive!(*args) # :nodoc:
+ self.with_values += args
+ @with_is_recursive = true
+ self
+ end
+
+ private
+
+ def build_with(arel)
+ return if with_values.empty?
+
+ with_statements = with_values.map do |with_value|
+ raise ArgumentError, "Unsupported argument type: #{with_value} #{with_value.class}" unless with_value.is_a?(Hash)
+
+ build_with_value_from_hash(with_value)
+ end
+
+ # Was: arel.with(with_statements)
+ @with_is_recursive ? arel.with(:recursive, with_statements) : arel.with(with_statements)
+ end
+
+ def build_with_value_from_hash(hash)
+ hash.map do |name, value|
+ Arel::Nodes::TableAlias.new(build_with_expression_from_value(value), name)
+ end
+ end
+
+ def build_with_expression_from_value(value)
+ case value
+ when Arel::Nodes::SqlLiteral then Arel::Nodes::Grouping.new(value)
+ when ActiveRecord::Relation then value.arel
+ when Arel::SelectManager then value
+ when Array then value.map { |e| build_with_expression_from_value(e) }.reduce { |result, value| Arel::Nodes::UnionAll.new(result, value) }
+ else
+ raise ArgumentError, "Unsupported argument type: `#{value}` #{value.class}"
+ end
+ end
+ end
+end
+
+ActiveSupport.on_load(:active_record) do
+ ActiveRecord::QueryMethods.prepend(ActiveRecord::QueryMethodsExtensions)
+end
diff --git a/lib/arel/union_parenthesizing.rb b/lib/arel/union_parenthesizing.rb
new file mode 100644
index 0000000000..852d8e92d8
--- /dev/null
+++ b/lib/arel/union_parenthesizing.rb
@@ -0,0 +1,51 @@
+# frozen_string_literal: true
+
+# Fix an issue with `LIMIT` ocurring on the left side of a `UNION` causing syntax errors.
+# See https://github.com/rails/rails/issues/40181
+
+# The fix has been merged in ActiveRecord: https://github.com/rails/rails/pull/51549
+# TODO: drop this when available in ActiveRecord
+
+# rubocop:disable all -- This is a mostly vendored file
+
+module Arel
+ module Visitors
+ class ToSql
+ private
+
+ def infix_value_with_paren(o, collector, value, suppress_parens = false)
+ collector << "( " unless suppress_parens
+ collector = if o.left.class == o.class
+ infix_value_with_paren(o.left, collector, value, true)
+ else
+ select_parentheses o.left, collector, false # Changed from `visit o.left, collector`
+ end
+ collector << value
+ collector = if o.right.class == o.class
+ infix_value_with_paren(o.right, collector, value, true)
+ else
+ select_parentheses o.right, collector, false # Changed from `visit o.right, collector`
+ end
+ collector << " )" unless suppress_parens
+ collector
+ end
+
+ def select_parentheses(o, collector, always_wrap_selects = true)
+ if o.is_a?(Nodes::SelectStatement) && (always_wrap_selects || require_parentheses?(o))
+ collector << "("
+ visit o, collector
+ collector << ")"
+ collector
+ else
+ visit o, collector
+ end
+ end
+
+ def require_parentheses?(o)
+ !o.orders.empty? || o.limit || o.offset
+ end
+ end
+ end
+end
+
+# rubocop:enable all
diff --git a/lib/paperclip/blurhash_transcoder.rb b/lib/paperclip/blurhash_transcoder.rb
index c22c20c57a..e9cecef50c 100644
--- a/lib/paperclip/blurhash_transcoder.rb
+++ b/lib/paperclip/blurhash_transcoder.rb
@@ -5,12 +5,26 @@ module Paperclip
def make
return @file unless options[:style] == :small || options[:blurhash]
- pixels = convert(':source -depth 8 RGB:-', source: File.expand_path(@file.path)).unpack('C*')
- geometry = options.fetch(:file_geometry_parser).from_file(@file)
+ width, height, data = blurhash_params
+ # Guard against segfaults if data has unexpected size
+ raise RangeError("Invalid image data size (expected #{width * height * 3}, got #{data.size})") if data.size != width * height * 3 # TODO: should probably be another exception type
- attachment.instance.blurhash = Blurhash.encode(geometry.width, geometry.height, pixels, **(options[:blurhash] || {}))
+ attachment.instance.blurhash = Blurhash.encode(width, height, data, **(options[:blurhash] || {}))
@file
end
+
+ private
+
+ def blurhash_params
+ if Rails.configuration.x.use_vips
+ image = Vips::Image.thumbnail(@file.path, 100)
+ [image.width, image.height, image.colourspace(:srgb).extract_band(0, n: 3).to_a.flatten]
+ else
+ pixels = convert(':source -depth 8 RGB:-', source: File.expand_path(@file.path)).unpack('C*')
+ geometry = options.fetch(:file_geometry_parser).from_file(@file)
+ [geometry.width, geometry.height, pixels]
+ end
+ end
end
end
diff --git a/lib/paperclip/color_extractor.rb b/lib/paperclip/color_extractor.rb
index d2f7e7c602..b5992f90bc 100644
--- a/lib/paperclip/color_extractor.rb
+++ b/lib/paperclip/color_extractor.rb
@@ -7,15 +7,10 @@ module Paperclip
MIN_CONTRAST = 3.0
ACCENT_MIN_CONTRAST = 2.0
FREQUENCY_THRESHOLD = 0.01
+ BINS = 10
def make
- depth = 8
-
- # Determine background palette by getting colors close to the image's edge only
- background_palette = palette_from_histogram(convert(':source -alpha set -gravity Center -region 75%x75% -fill None -colorize 100% -alpha transparent +region -format %c -colors :quantity -depth :depth histogram:info:', source: File.expand_path(@file.path), quantity: 10, depth: depth), 10)
-
- # Determine foreground palette from the whole image
- foreground_palette = palette_from_histogram(convert(':source -format %c -colors :quantity -depth :depth histogram:info:', source: File.expand_path(@file.path), quantity: 10, depth: depth), 10)
+ background_palette, foreground_palette = Rails.configuration.x.use_vips ? palettes_from_libvips : palettes_from_imagemagick
background_color = background_palette.first || foreground_palette.first
foreground_colors = []
@@ -78,6 +73,75 @@ module Paperclip
private
+ def palettes_from_libvips
+ image = downscaled_image
+ block_edge_dim = (image.height * 0.25).floor
+ line_edge_dim = (image.width * 0.25).floor
+
+ edge_image = begin
+ top = image.crop(0, 0, image.width, block_edge_dim)
+ bottom = image.crop(0, image.height - block_edge_dim, image.width, block_edge_dim)
+ left = image.crop(0, block_edge_dim, line_edge_dim, image.height - (block_edge_dim * 2))
+ right = image.crop(image.width - line_edge_dim, block_edge_dim, line_edge_dim, image.height - (block_edge_dim * 2))
+ top.join(bottom, :vertical).join(left, :horizontal).join(right, :horizontal)
+ end
+
+ background_palette = palette_from_image(edge_image)
+ foreground_palette = palette_from_image(image)
+ [background_palette, foreground_palette]
+ end
+
+ def palettes_from_imagemagick
+ depth = 8
+
+ # Determine background palette by getting colors close to the image's edge only
+ background_palette = palette_from_im_histogram(convert(':source -alpha set -gravity Center -region 75%x75% -fill None -colorize 100% -alpha transparent +region -format %c -colors :quantity -depth :depth histogram:info:', source: File.expand_path(@file.path), quantity: 10, depth: depth), 10)
+
+ # Determine foreground palette from the whole image
+ foreground_palette = palette_from_im_histogram(convert(':source -format %c -colors :quantity -depth :depth histogram:info:', source: File.expand_path(@file.path), quantity: 10, depth: depth), 10)
+ [background_palette, foreground_palette]
+ end
+
+ def downscaled_image
+ image = Vips::Image.new_from_file(@file.path, access: :random).thumbnail_image(100)
+
+ image.colourspace(:srgb).extract_band(0, n: 3)
+ end
+
+ def palette_from_image(image)
+ # `hist_find_ndim` will create a BINS×BINS×BINS 3D histogram of the image
+ # represented as an image of size BINS×BINS with `BINS` bands.
+ # The number of occurrences of a color (r, g, b) is thus encoded in band `b` at pixel position `(r, g)`
+ histogram = image.hist_find_ndim(bins: BINS)
+
+ # `histogram.max` returns an array of maxima with their pixel positions, but we don't know in which
+ # band they are
+ _, colors = histogram.max(size: 10, out_array: true, x_array: true, y_array: true)
+
+ colors['out_array'].zip(colors['x_array'], colors['y_array']).map do |v, x, y|
+ rgb_from_xyv(histogram, x, y, v)
+ end.reverse
+ end
+
+ # rubocop:disable Naming/MethodParameterName
+ def rgb_from_xyv(image, x, y, v)
+ pixel = image.getpoint(x, y)
+
+ # Unfortunately, we only have the first 2 dimensions, so try to
+ # guess the third one by looking up the value
+
+ # NOTE: this means that if multiple bins with the same `r` and `g`
+ # components have the same number of occurrences, we will always return
+ # the one with the lowest `b` value. This means that in case of a tie,
+ # we will return the same color twice and skip the ones it tied with.
+ z = pixel.find_index(v)
+
+ r = (x + 0.5) * 256 / BINS
+ g = (y + 0.5) * 256 / BINS
+ b = (z + 0.5) * 256 / BINS
+ ColorDiff::Color::RGB.new(r, g, b)
+ end
+
def w3c_contrast(color1, color2)
luminance1 = (color1.to_xyz.y * 0.01) + 0.05
luminance2 = (color2.to_xyz.y * 0.01) + 0.05
@@ -89,7 +153,6 @@ module Paperclip
end
end
- # rubocop:disable Naming/MethodParameterName
def rgb_to_hsl(r, g, b)
r /= 255.0
g /= 255.0
@@ -170,7 +233,7 @@ module Paperclip
ColorDiff::Color::RGB.new(*hsl_to_rgb(hue, saturation, light))
end
- def palette_from_histogram(result, quantity)
+ def palette_from_im_histogram(result, quantity)
frequencies = result.scan(/([0-9]+):/).flatten.map(&:to_f)
hex_values = result.scan(/\#([0-9A-Fa-f]{6,8})/).flatten
total_frequencies = frequencies.sum.to_f
diff --git a/lib/paperclip/vips_lazy_thumbnail.rb b/lib/paperclip/vips_lazy_thumbnail.rb
new file mode 100644
index 0000000000..06d99bf79d
--- /dev/null
+++ b/lib/paperclip/vips_lazy_thumbnail.rb
@@ -0,0 +1,141 @@
+# frozen_string_literal: true
+
+module Paperclip
+ class LazyThumbnail < Paperclip::Processor
+ GIF_MAX_FPS = 60
+ GIF_MAX_FRAMES = 3000
+ GIF_PALETTE_COLORS = 32
+
+ ALLOWED_FIELDS = %w(
+ icc-profile-data
+ ).freeze
+
+ class PixelGeometryParser
+ def self.parse(current_geometry, pixels)
+ width = Math.sqrt(pixels * (current_geometry.width.to_f / current_geometry.height)).round.to_i
+ height = Math.sqrt(pixels * (current_geometry.height.to_f / current_geometry.width)).round.to_i
+
+ Paperclip::Geometry.new(width, height)
+ end
+ end
+
+ def initialize(file, options = {}, attachment = nil)
+ super
+
+ @crop = options[:geometry].to_s[-1, 1] == '#'
+ @current_geometry = options.fetch(:file_geometry_parser, Geometry).from_file(@file)
+ @target_geometry = options[:pixels] ? PixelGeometryParser.parse(@current_geometry, options[:pixels]) : options.fetch(:string_geometry_parser, Geometry).parse(options[:geometry].to_s)
+ @format = options[:format]
+ @current_format = File.extname(@file.path)
+ @basename = File.basename(@file.path, @current_format)
+
+ correct_current_format!
+ end
+
+ def make
+ return File.open(@file.path) unless needs_convert?
+
+ dst = TempfileFactory.new.generate([@basename, @format ? ".#{@format}" : @current_format].join)
+
+ if preserve_animation?
+ if @target_geometry.nil? || (@current_geometry.width <= @target_geometry.width && @current_geometry.height <= @target_geometry.height)
+ target_width = 'iw'
+ target_height = 'ih'
+ else
+ scale = [@target_geometry.width.to_f / @current_geometry.width, @target_geometry.height.to_f / @current_geometry.height].min
+ target_width = (@current_geometry.width * scale).round
+ target_height = (@current_geometry.height * scale).round
+ end
+
+ # The only situation where we use crop on GIFs is cropping them to a square
+ # aspect ratio, such as for avatars, so this is the only special case we
+ # implement. If cropping ever becomes necessary for other situations, this will
+ # need to be expanded.
+ crop_width = crop_height = [target_width, target_height].min if @target_geometry&.square?
+
+ filter = begin
+ if @crop
+ "scale=#{target_width}:#{target_height}:force_original_aspect_ratio=increase,crop=#{crop_width}:#{crop_height}"
+ else
+ "scale=#{target_width}:#{target_height}:force_original_aspect_ratio=decrease"
+ end
+ end
+
+ command = Terrapin::CommandLine.new(Rails.configuration.x.ffmpeg_binary, '-nostdin -i :source -map_metadata -1 -fpsmax :max_fps -frames:v :max_frames -filter_complex :filter -y :destination', logger: Paperclip.logger)
+ command.run({ source: @file.path, filter: "#{filter},split[a][b];[a]palettegen=max_colors=#{GIF_PALETTE_COLORS}[p];[b][p]paletteuse=dither=bayer", max_fps: GIF_MAX_FPS, max_frames: GIF_MAX_FRAMES, destination: dst.path })
+ else
+ transformed_image.write_to_file(dst.path, **save_options)
+ end
+
+ dst
+ rescue Terrapin::ExitStatusError => e
+ raise Paperclip::Error, "Error while optimizing #{@basename}: #{e}"
+ rescue Terrapin::CommandNotFoundError
+ raise Paperclip::Errors::CommandNotFoundError, 'Could not run the `ffmpeg` command. Please install ffmpeg.'
+ end
+
+ private
+
+ def correct_current_format!
+ # If the attachment was uploaded through a base64 payload, the tempfile
+ # will not have a file extension. It could also have the wrong file extension,
+ # depending on what the uploaded file was named. We correct for this in the final
+ # file name, which is however not yet physically in place on the temp file, so we
+ # need to use it here. Mind that this only reliably works if this processor is
+ # the first in line and we're working with the original, unmodified file.
+ @current_format = File.extname(attachment.instance_read(:file_name))
+ end
+
+ def transformed_image
+ # libvips has some optimizations for resizing an image on load. If we don't need to
+ # resize the image, we have to load it a different way.
+ if @target_geometry.nil?
+ Vips::Image.new_from_file(preserve_animation? ? "#{@file.path}[n=-1]" : @file.path, access: :sequential).copy.mutate do |mutable|
+ (mutable.get_fields - ALLOWED_FIELDS).each do |field|
+ mutable.remove!(field)
+ end
+ end
+ else
+ Vips::Image.thumbnail(@file.path, @target_geometry.width, height: @target_geometry.height, **thumbnail_options).mutate do |mutable|
+ (mutable.get_fields - ALLOWED_FIELDS).each do |field|
+ mutable.remove!(field)
+ end
+ end
+ end
+ end
+
+ def thumbnail_options
+ @crop ? { crop: :centre } : { size: :down }
+ end
+
+ def save_options
+ case @format
+ when 'jpg'
+ { Q: 90, interlace: true }
+ else
+ {}
+ end
+ end
+
+ def preserve_animation?
+ @format == 'gif' || (@format.blank? && @current_format == '.gif')
+ end
+
+ def needs_convert?
+ needs_different_geometry? || needs_different_format? || needs_metadata_stripping?
+ end
+
+ def needs_different_geometry?
+ (options[:geometry] && @current_geometry.width != @target_geometry.width && @current_geometry.height != @target_geometry.height) ||
+ (options[:pixels] && @current_geometry.width * @current_geometry.height > options[:pixels])
+ end
+
+ def needs_different_format?
+ @format.present? && @current_format != ".#{@format}"
+ end
+
+ def needs_metadata_stripping?
+ @attachment.instance.respond_to?(:local?) && @attachment.instance.local?
+ end
+ end
+end
diff --git a/lib/tasks/tests.rake b/lib/tasks/tests.rake
index c8e0312bbd..c8e4dc31cd 100644
--- a/lib/tasks/tests.rake
+++ b/lib/tasks/tests.rake
@@ -130,11 +130,20 @@ namespace :tests do
# This is checking the attribute rather than the method, to avoid the legacy fallback
# and ensure the data has been migrated
unless Account.find_local('qcuser').user[:otp_secret] == 'anotpsecretthatshouldbeencrypted'
- puts "DEBUG: #{Account.find_local('qcuser').user.inspect}"
puts 'OTP secret for user not preserved as expected'
exit(1)
end
+ unless Doorkeeper::Application.find(2)[:scopes] == 'write:accounts profile'
+ puts 'Application OAuth scopes not rewritten as expected'
+ exit(1)
+ end
+
+ unless Doorkeeper::Application.find(2).access_tokens.first[:scopes] == 'write:accounts profile'
+ puts 'OAuth access token scopes not rewritten as expected'
+ exit(1)
+ end
+
puts 'No errors found. Database state is consistent with a successful migration process.'
end
@@ -152,6 +161,23 @@ namespace :tests do
VALUES
(1, 'https://example.com/users/foobar', 'foobar@example.com', now(), now()),
(1, 'https://example.com/users/foobar', 'foobar@example.com', now(), now());
+
+ /* Doorkeeper records
+ While the `read:me` scope was technically not valid in 3.3.0,
+ it is still useful for the purposes of testing the `ChangeReadMeScopeToProfile`
+ migration.
+ */
+
+ INSERT INTO "oauth_applications"
+ (id, name, uid, secret, redirect_uri, scopes, created_at, updated_at)
+ VALUES
+ (2, 'foo', 'foo', 'foo', 'https://example.com/#foo', 'write:accounts read:me', now(), now()),
+ (3, 'bar', 'bar', 'bar', 'https://example.com/#bar', 'read:me', now(), now());
+
+ INSERT INTO "oauth_access_tokens"
+ (token, application_id, scopes, resource_owner_id, created_at)
+ VALUES
+ ('secret', 2, 'write:accounts read:me', 4, now());
SQL
end
diff --git a/spec/fabricators/user_fabricator.rb b/spec/fabricators/user_fabricator.rb
index 9031d5cd04..0df7caea60 100644
--- a/spec/fabricators/user_fabricator.rb
+++ b/spec/fabricators/user_fabricator.rb
@@ -1,7 +1,12 @@
# frozen_string_literal: true
Fabricator(:user) do
- account { Fabricate.build(:account, user: nil) }
+ account do |attrs|
+ Fabricate.build(
+ :account,
+ attrs.fetch(:account_attributes, {}).merge(user: nil)
+ )
+ end
email { sequence(:email) { |i| "#{i}#{Faker::Internet.email}" } }
password '123456789'
confirmed_at { Time.zone.now }
diff --git a/spec/fabricators/web_push_subscription_fabricator.rb b/spec/fabricators/web_push_subscription_fabricator.rb
index baffdbf83e..6b4028342c 100644
--- a/spec/fabricators/web_push_subscription_fabricator.rb
+++ b/spec/fabricators/web_push_subscription_fabricator.rb
@@ -2,6 +2,10 @@
Fabricator(:web_push_subscription, from: Web::PushSubscription) do
endpoint Faker::Internet.url
- key_p256dh Faker::Internet.password
- key_auth Faker::Internet.password
+ key_p256dh do
+ curve = OpenSSL::PKey::EC.generate('prime256v1')
+ ecdh_key = curve.public_key.to_bn.to_s(2)
+ Base64.urlsafe_encode64(ecdh_key)
+ end
+ key_auth { Base64.urlsafe_encode64(Random.new.bytes(16)) }
end
diff --git a/spec/fixtures/files/monochrome.png b/spec/fixtures/files/monochrome.png
new file mode 100644
index 0000000000..fa36101cad
Binary files /dev/null and b/spec/fixtures/files/monochrome.png differ
diff --git a/spec/lib/scope_transformer_spec.rb b/spec/lib/scope_transformer_spec.rb
index 8a9c7cf967..7bc226e94f 100644
--- a/spec/lib/scope_transformer_spec.rb
+++ b/spec/lib/scope_transformer_spec.rb
@@ -20,6 +20,12 @@ describe ScopeTransformer do
end
end
+ context 'with scope "profile"' do
+ let(:input) { 'profile' }
+
+ it_behaves_like 'a scope', nil, 'profile', 'read'
+ end
+
context 'with scope "read"' do
let(:input) { 'read' }
diff --git a/spec/models/media_attachment_spec.rb b/spec/models/media_attachment_spec.rb
index 1b9a13c38c..221645ac5a 100644
--- a/spec/models/media_attachment_spec.rb
+++ b/spec/models/media_attachment_spec.rb
@@ -139,6 +139,12 @@ RSpec.describe MediaAttachment, :paperclip_processing do
it_behaves_like 'static 600x400 image', 'image/png', '.png'
end
+ describe 'monochrome jpg' do
+ let(:media) { Fabricate(:media_attachment, file: attachment_fixture('monochrome.png')) }
+
+ it_behaves_like 'static 600x400 image', 'image/png', '.png'
+ end
+
describe 'webp' do
let(:media) { Fabricate(:media_attachment, file: attachment_fixture('600x400.webp')) }
@@ -203,7 +209,9 @@ RSpec.describe MediaAttachment, :paperclip_processing do
expect(media.type).to eq 'audio'
expect(media.file.meta['original']['duration']).to be_within(0.05).of(0.235102)
expect(media.thumbnail.present?).to be true
- expect(media.file.meta['colors']['background']).to eq '#3088d4'
+
+ # NOTE: Our libvips and ImageMagick implementations currently have different results
+ expect(media.file.meta['colors']['background']).to eq(ENV['MASTODON_USE_LIBVIPS'] ? '#268cd9' : '#3088d4')
expect(media.file_file_name).to_not eq 'boop.ogg'
end
end
diff --git a/spec/models/notification_spec.rb b/spec/models/notification_spec.rb
index 3c7d51ae1a..d498ee02a5 100644
--- a/spec/models/notification_spec.rb
+++ b/spec/models/notification_spec.rb
@@ -151,6 +151,66 @@ RSpec.describe Notification do
end
end
+ describe '.paginate_groups_by_max_id' do
+ let(:account) { Fabricate(:account) }
+
+ let!(:notifications) do
+ ['group-1', 'group-1', nil, 'group-2', nil, 'group-1', 'group-2', 'group-1']
+ .map { |group_key| Fabricate(:notification, account: account, group_key: group_key) }
+ end
+
+ context 'without since_id or max_id' do
+ it 'returns the most recent notifications, only keeping one notification per group' do
+ expect(described_class.without_suspended.paginate_groups_by_max_id(4).pluck(:id))
+ .to eq [notifications[7], notifications[6], notifications[4], notifications[2]].pluck(:id)
+ end
+ end
+
+ context 'with since_id' do
+ it 'returns the most recent notifications, only keeping one notification per group' do
+ expect(described_class.without_suspended.paginate_groups_by_max_id(4, since_id: notifications[4].id).pluck(:id))
+ .to eq [notifications[7], notifications[6]].pluck(:id)
+ end
+ end
+
+ context 'with max_id' do
+ it 'returns the most recent notifications after max_id, only keeping one notification per group' do
+ expect(described_class.without_suspended.paginate_groups_by_max_id(4, max_id: notifications[7].id).pluck(:id))
+ .to eq [notifications[6], notifications[5], notifications[4], notifications[2]].pluck(:id)
+ end
+ end
+ end
+
+ describe '.paginate_groups_by_min_id' do
+ let(:account) { Fabricate(:account) }
+
+ let!(:notifications) do
+ ['group-1', 'group-1', nil, 'group-2', nil, 'group-1', 'group-2', 'group-1']
+ .map { |group_key| Fabricate(:notification, account: account, group_key: group_key) }
+ end
+
+ context 'without min_id or max_id' do
+ it 'returns the oldest notifications, only keeping one notification per group' do
+ expect(described_class.without_suspended.paginate_groups_by_min_id(4).pluck(:id))
+ .to eq [notifications[0], notifications[2], notifications[3], notifications[4]].pluck(:id)
+ end
+ end
+
+ context 'with max_id' do
+ it 'returns the oldest notifications, stopping at max_id, only keeping one notification per group' do
+ expect(described_class.without_suspended.paginate_groups_by_min_id(4, max_id: notifications[4].id).pluck(:id))
+ .to eq [notifications[0], notifications[2], notifications[3]].pluck(:id)
+ end
+ end
+
+ context 'with min_id' do
+ it 'returns the most oldest notifications after min_id, only keeping one notification per group' do
+ expect(described_class.without_suspended.paginate_groups_by_min_id(4, min_id: notifications[0].id).pluck(:id))
+ .to eq [notifications[1], notifications[2], notifications[3], notifications[4]].pluck(:id)
+ end
+ end
+ end
+
describe '.preload_cache_collection_target_statuses' do
subject do
described_class.preload_cache_collection_target_statuses(notifications) do |target_statuses|
diff --git a/spec/requests/api/v1/accounts/credentials_spec.rb b/spec/requests/api/v1/accounts/credentials_spec.rb
index 1b6a065593..ce5940d468 100644
--- a/spec/requests/api/v1/accounts/credentials_spec.rb
+++ b/spec/requests/api/v1/accounts/credentials_spec.rb
@@ -29,8 +29,8 @@ RSpec.describe 'credentials API' do
})
end
- describe 'allows the read:me scope' do
- let(:scopes) { 'read:me' }
+ describe 'allows the profile scope' do
+ let(:scopes) { 'profile' }
it 'returns the response successfully' do
subject
diff --git a/spec/requests/api/v1/push/subscriptions_spec.rb b/spec/requests/api/v1/push/subscriptions_spec.rb
index 700250ee2a..54ef5a13ad 100644
--- a/spec/requests/api/v1/push/subscriptions_spec.rb
+++ b/spec/requests/api/v1/push/subscriptions_spec.rb
@@ -4,14 +4,18 @@ require 'rails_helper'
describe 'API V1 Push Subscriptions' do
let(:user) { Fabricate(:user) }
+ let(:endpoint) { 'https://fcm.googleapis.com/fcm/send/fiuH06a27qE:APA91bHnSiGcLwdaxdyqVXNDR9w1NlztsHb6lyt5WDKOC_Z_Q8BlFxQoR8tWFSXUIDdkyw0EdvxTu63iqamSaqVSevW5LfoFwojws8XYDXv_NRRLH6vo2CdgiN4jgHv5VLt2A8ah6lUX' }
+ let(:keys) do
+ {
+ p256dh: 'BEm_a0bdPDhf0SOsrnB2-ategf1hHoCnpXgQsFj5JCkcoMrMt2WHoPfEYOYPzOIs9mZE8ZUaD7VA5vouy0kEkr8=',
+ auth: 'eH_C8rq2raXqlcBVDa1gLg==',
+ }
+ end
let(:create_payload) do
{
subscription: {
- endpoint: 'https://fcm.googleapis.com/fcm/send/fiuH06a27qE:APA91bHnSiGcLwdaxdyqVXNDR9w1NlztsHb6lyt5WDKOC_Z_Q8BlFxQoR8tWFSXUIDdkyw0EdvxTu63iqamSaqVSevW5LfoFwojws8XYDXv_NRRLH6vo2CdgiN4jgHv5VLt2A8ah6lUX',
- keys: {
- p256dh: 'BEm_a0bdPDhf0SOsrnB2-ategf1hHoCnpXgQsFj5JCkcoMrMt2WHoPfEYOYPzOIs9mZE8ZUaD7VA5vouy0kEkr8=',
- auth: 'eH_C8rq2raXqlcBVDa1gLg==',
- },
+ endpoint: endpoint,
+ keys: keys,
},
}.with_indifferent_access
end
@@ -36,6 +40,16 @@ describe 'API V1 Push Subscriptions' do
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
let(:headers) { { 'Authorization' => "Bearer #{token.token}" } }
+ shared_examples 'validation error' do
+ it 'returns a validation error' do
+ subject
+
+ expect(response).to have_http_status(422)
+ expect(endpoint_push_subscriptions.count).to eq(0)
+ expect(endpoint_push_subscription).to be_nil
+ end
+ end
+
describe 'POST /api/v1/push/subscription' do
subject { post '/api/v1/push/subscription', params: create_payload, headers: headers }
@@ -63,6 +77,34 @@ describe 'API V1 Push Subscriptions' do
expect(endpoint_push_subscriptions.count)
.to eq(1)
end
+
+ context 'with invalid endpoint URL' do
+ let(:endpoint) { 'app://example.foo' }
+
+ it_behaves_like 'validation error'
+ end
+
+ context 'with invalid p256dh key' do
+ let(:keys) do
+ {
+ p256dh: 'BEm_invalidf0SOsrnB2-ategf1hHoCnpXgQsFj5JCkcoMrMt2WHoPfEYOYPzOIs9mZE8ZUaD7VA5vouy0kEkr8=',
+ auth: 'eH_C8rq2raXqlcBVDa1gLg==',
+ }
+ end
+
+ it_behaves_like 'validation error'
+ end
+
+ context 'with invalid base64 p256dh key' do
+ let(:keys) do
+ {
+ p256dh: 'not base64',
+ auth: 'eH_C8rq2raXqlcBVDa1gLg==',
+ }
+ end
+
+ it_behaves_like 'validation error'
+ end
end
describe 'PUT /api/v1/push/subscription' do
diff --git a/spec/requests/api/v1/timelines/link_spec.rb b/spec/requests/api/v1/timelines/link_spec.rb
new file mode 100644
index 0000000000..e964ee3da3
--- /dev/null
+++ b/spec/requests/api/v1/timelines/link_spec.rb
@@ -0,0 +1,135 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+describe 'Link' do
+ let(:user) { Fabricate(:user) }
+ let(:scopes) { 'read:statuses' }
+ let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
+ let(:headers) { { 'Authorization' => "Bearer #{token.token}" } }
+
+ shared_examples 'a successful request to the link timeline' do
+ it 'returns the expected statuses successfully', :aggregate_failures do
+ subject
+
+ expect(response).to have_http_status(200)
+ expect(body_as_json.pluck(:id)).to match_array(expected_statuses.map { |status| status.id.to_s })
+ end
+ end
+
+ describe 'GET /api/v1/timelines/link' do
+ subject do
+ get '/api/v1/timelines/link', headers: headers, params: params
+ end
+
+ let(:url) { 'https://example.com/' }
+ let(:private_status) { Fabricate(:status, visibility: :private) }
+ let(:undiscoverable_status) { Fabricate(:status, account: Fabricate.build(:account, domain: nil, discoverable: false)) }
+ let(:local_status) { Fabricate(:status, account: Fabricate.build(:account, domain: nil, discoverable: true)) }
+ let(:remote_status) { Fabricate(:status, account: Fabricate.build(:account, domain: 'example.com', discoverable: true)) }
+ let(:params) { { url: url } }
+ let(:expected_statuses) { [local_status, remote_status] }
+ let(:preview_card) { Fabricate(:preview_card, url: url) }
+
+ before do
+ if preview_card.present?
+ preview_card.create_trend!(allowed: true)
+
+ [private_status, undiscoverable_status, remote_status, local_status].each do |status|
+ PreviewCardsStatus.create(status: status, preview_card: preview_card, url: url)
+ end
+ end
+ end
+
+ context 'when there is no preview card' do
+ let(:preview_card) { nil }
+
+ it 'returns http not found' do
+ subject
+
+ expect(response).to have_http_status(404)
+ end
+ end
+
+ context 'when preview card is not trending' do
+ before do
+ preview_card.trend.destroy!
+ end
+
+ it 'returns http not found' do
+ subject
+
+ expect(response).to have_http_status(404)
+ end
+ end
+
+ context 'when preview card is trending but not approved' do
+ before do
+ preview_card.trend.update(allowed: false)
+ end
+
+ it 'returns http not found' do
+ subject
+
+ expect(response).to have_http_status(404)
+ end
+ end
+
+ context 'when the instance does not allow public preview' do
+ before do
+ Form::AdminSettings.new(timeline_preview: false).save
+ end
+
+ context 'when the user is not authenticated' do
+ let(:headers) { {} }
+
+ it 'returns http unauthorized' do
+ subject
+
+ expect(response).to have_http_status(401)
+ end
+ end
+
+ context 'when the user is authenticated' do
+ it_behaves_like 'a successful request to the link timeline'
+ end
+ end
+
+ context 'when the instance allows public preview' do
+ before do
+ Setting.timeline_preview = true
+ end
+
+ context 'with an authorized user' do
+ it_behaves_like 'a successful request to the link timeline'
+ end
+
+ context 'with an anonymous user' do
+ let(:headers) { {} }
+
+ it_behaves_like 'a successful request to the link timeline'
+ end
+
+ context 'with limit param' do
+ let(:params) { { limit: 1, url: url } }
+
+ it 'returns only the requested number of statuses', :aggregate_failures do
+ subject
+
+ expect(response).to have_http_status(200)
+ expect(body_as_json.size).to eq(params[:limit])
+ end
+
+ it 'sets the correct pagination headers', :aggregate_failures do
+ subject
+
+ expect(response)
+ .to include_pagination_headers(
+ prev: api_v1_timelines_link_url(limit: params[:limit], url: url, min_id: local_status.id),
+ next: api_v1_timelines_link_url(limit: params[:limit], url: url, max_id: local_status.id)
+ )
+ end
+ end
+ end
+ end
+end
diff --git a/spec/requests/api/v2_alpha/notifications_spec.rb b/spec/requests/api/v2_alpha/notifications_spec.rb
new file mode 100644
index 0000000000..9bd1a32e9b
--- /dev/null
+++ b/spec/requests/api/v2_alpha/notifications_spec.rb
@@ -0,0 +1,161 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Notifications' do
+ let(:user) { Fabricate(:user, account_attributes: { username: 'alice' }) }
+ let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
+ let(:scopes) { 'read:notifications write:notifications' }
+ let(:headers) { { 'Authorization' => "Bearer #{token.token}" } }
+
+ describe 'GET /api/v2_alpha/notifications', :sidekiq_inline do
+ subject do
+ get '/api/v2_alpha/notifications', headers: headers, params: params
+ end
+
+ let(:bob) { Fabricate(:user) }
+ let(:tom) { Fabricate(:user) }
+ let(:params) { {} }
+
+ before do
+ first_status = PostStatusService.new.call(user.account, text: 'Test')
+ ReblogService.new.call(bob.account, first_status)
+ mentioning_status = PostStatusService.new.call(bob.account, text: 'Hello @alice')
+ mentioning_status.mentions.first
+ FavouriteService.new.call(bob.account, first_status)
+ FavouriteService.new.call(tom.account, first_status)
+ FollowService.new.call(bob.account, user.account)
+ end
+
+ it_behaves_like 'forbidden for wrong scope', 'write write:notifications'
+
+ context 'with no options' do
+ it 'returns expected notification types', :aggregate_failures do
+ subject
+
+ expect(response).to have_http_status(200)
+ expect(body_json_types).to include('reblog', 'mention', 'favourite', 'follow')
+ end
+ end
+
+ context 'with exclude_types param' do
+ let(:params) { { exclude_types: %w(mention) } }
+
+ it 'returns everything but excluded type', :aggregate_failures do
+ subject
+
+ expect(response).to have_http_status(200)
+ expect(body_as_json.size).to_not eq 0
+ expect(body_json_types.uniq).to_not include 'mention'
+ end
+ end
+
+ context 'with types param' do
+ let(:params) { { types: %w(mention) } }
+
+ it 'returns only requested type', :aggregate_failures do
+ subject
+
+ expect(response).to have_http_status(200)
+ expect(body_json_types.uniq).to eq ['mention']
+ end
+ end
+
+ context 'with limit param' do
+ let(:params) { { limit: 3 } }
+
+ it 'returns the requested number of notifications paginated', :aggregate_failures do
+ subject
+
+ notifications = user.account.notifications
+
+ expect(body_as_json.size)
+ .to eq(params[:limit])
+
+ expect(response)
+ .to include_pagination_headers(
+ prev: api_v2_alpha_notifications_url(limit: params[:limit], min_id: notifications.last.id),
+ # TODO: one downside of the current approach is that we return the first ID matching the group,
+ # not the last that has been skipped, so pagination is very likely to give overlap
+ next: api_v2_alpha_notifications_url(limit: params[:limit], max_id: notifications[1].id)
+ )
+ end
+ end
+
+ def body_json_types
+ body_as_json.pluck(:type)
+ end
+ end
+
+ describe 'GET /api/v2_alpha/notifications/:id' do
+ subject do
+ get "/api/v2_alpha/notifications/#{notification.group_key}", headers: headers
+ end
+
+ let(:notification) { Fabricate(:notification, account: user.account, group_key: 'foobar') }
+
+ it_behaves_like 'forbidden for wrong scope', 'write write:notifications'
+
+ it 'returns http success' do
+ subject
+
+ expect(response).to have_http_status(200)
+ end
+
+ context 'when notification belongs to someone else' do
+ let(:notification) { Fabricate(:notification, group_key: 'foobar') }
+
+ it 'returns http not found' do
+ subject
+
+ expect(response).to have_http_status(404)
+ end
+ end
+ end
+
+ describe 'POST /api/v2_alpha/notifications/:id/dismiss' do
+ subject do
+ post "/api/v2_alpha/notifications/#{notification.group_key}/dismiss", headers: headers
+ end
+
+ let!(:notification) { Fabricate(:notification, account: user.account, group_key: 'foobar') }
+
+ it_behaves_like 'forbidden for wrong scope', 'read read:notifications'
+
+ it 'destroys the notification' do
+ subject
+
+ expect(response).to have_http_status(200)
+ expect { notification.reload }.to raise_error(ActiveRecord::RecordNotFound)
+ end
+
+ context 'when notification belongs to someone else' do
+ let(:notification) { Fabricate(:notification) }
+
+ it 'returns http not found' do
+ subject
+
+ expect(response).to have_http_status(404)
+ end
+ end
+ end
+
+ describe 'POST /api/v2_alpha/notifications/clear' do
+ subject do
+ post '/api/v2_alpha/notifications/clear', headers: headers
+ end
+
+ before do
+ Fabricate(:notification, account: user.account)
+ end
+
+ it_behaves_like 'forbidden for wrong scope', 'read read:notifications'
+
+ it 'clears notifications for the account' do
+ subject
+
+ expect(user.account.reload.notifications).to be_empty
+ expect(response).to have_http_status(200)
+ end
+ end
+end
diff --git a/spec/requests/well_known/oauth_metadata_spec.rb b/spec/requests/well_known/oauth_metadata_spec.rb
index deef189ac9..3350d59315 100644
--- a/spec/requests/well_known/oauth_metadata_spec.rb
+++ b/spec/requests/well_known/oauth_metadata_spec.rb
@@ -6,7 +6,7 @@ describe 'The /.well-known/oauth-authorization-server request' do
let(:protocol) { ENV.fetch('LOCAL_HTTPS', true) ? :https : :http }
before do
- host! ENV.fetch('LOCAL_DOMAIN')
+ host! Rails.configuration.x.local_domain
end
it 'returns http success with valid JSON response' do
diff --git a/spec/support/signed_request_helpers.rb b/spec/support/signed_request_helpers.rb
index eba4095e43..8a52179cae 100644
--- a/spec/support/signed_request_helpers.rb
+++ b/spec/support/signed_request_helpers.rb
@@ -6,7 +6,7 @@ module SignedRequestHelpers
headers ||= {}
headers['Date'] = Time.now.utc.httpdate
- headers['Host'] = ENV.fetch('LOCAL_DOMAIN')
+ headers['Host'] = Rails.configuration.x.local_domain
signed_headers = headers.merge('(request-target)' => "get #{path}").slice('(request-target)', 'Host', 'Date')
key_id = ActivityPub::TagManager.instance.key_uri_for(sign_with)
diff --git a/spec/system/profile_spec.rb b/spec/system/profile_spec.rb
index 421b68a169..2517e823b5 100644
--- a/spec/system/profile_spec.rb
+++ b/spec/system/profile_spec.rb
@@ -7,7 +7,7 @@ describe 'Profile' do
subject { page }
- let(:local_domain) { ENV['LOCAL_DOMAIN'] }
+ let(:local_domain) { Rails.configuration.x.local_domain }
before do
as_a_logged_in_user
diff --git a/yarn.lock b/yarn.lock
index 3d2d371328..e9f5940d92 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -42,128 +42,129 @@ __metadata:
languageName: node
linkType: hard
-"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/code-frame@npm:7.24.6"
+"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/code-frame@npm:7.24.7"
dependencies:
- "@babel/highlight": "npm:^7.24.6"
+ "@babel/highlight": "npm:^7.24.7"
picocolors: "npm:^1.0.0"
- checksum: 10c0/c93c6d1763530f415218c31d07359364397f19b70026abdff766164c21ed352a931cf07f3102c5fb9e04792de319e332d68bcb1f7debef601a02197f90f9ba24
+ checksum: 10c0/ab0af539473a9f5aeaac7047e377cb4f4edd255a81d84a76058595f8540784cc3fbe8acf73f1e073981104562490aabfb23008cd66dc677a456a4ed5390fdde6
languageName: node
linkType: hard
-"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/compat-data@npm:7.24.6"
- checksum: 10c0/f50abbd4008eb2a5d12139c578809cebbeaeb8e660fb12d546eb2e7c2108ae1836ab8339184a5f5ce0e95bf81bb91e18edce86b387c59db937b01693ec0bc774
+"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/compat-data@npm:7.24.7"
+ checksum: 10c0/dcd93a5632b04536498fbe2be5af1057f635fd7f7090483d8e797878559037e5130b26862ceb359acbae93ed27e076d395ddb4663db6b28a665756ffd02d324f
languageName: node
linkType: hard
"@babel/core@npm:^7.10.4, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.22.1, @babel/core@npm:^7.24.4":
- version: 7.24.6
- resolution: "@babel/core@npm:7.24.6"
+ version: 7.24.7
+ resolution: "@babel/core@npm:7.24.7"
dependencies:
"@ampproject/remapping": "npm:^2.2.0"
- "@babel/code-frame": "npm:^7.24.6"
- "@babel/generator": "npm:^7.24.6"
- "@babel/helper-compilation-targets": "npm:^7.24.6"
- "@babel/helper-module-transforms": "npm:^7.24.6"
- "@babel/helpers": "npm:^7.24.6"
- "@babel/parser": "npm:^7.24.6"
- "@babel/template": "npm:^7.24.6"
- "@babel/traverse": "npm:^7.24.6"
- "@babel/types": "npm:^7.24.6"
+ "@babel/code-frame": "npm:^7.24.7"
+ "@babel/generator": "npm:^7.24.7"
+ "@babel/helper-compilation-targets": "npm:^7.24.7"
+ "@babel/helper-module-transforms": "npm:^7.24.7"
+ "@babel/helpers": "npm:^7.24.7"
+ "@babel/parser": "npm:^7.24.7"
+ "@babel/template": "npm:^7.24.7"
+ "@babel/traverse": "npm:^7.24.7"
+ "@babel/types": "npm:^7.24.7"
convert-source-map: "npm:^2.0.0"
debug: "npm:^4.1.0"
gensync: "npm:^1.0.0-beta.2"
json5: "npm:^2.2.3"
semver: "npm:^6.3.1"
- checksum: 10c0/e0762a8daef7f417494d555929418cfacd6848c7fc3310ec00e6dd8cecac20b7f590e760bfc9365d2af07874a3f5599832f9c9ff7f1a9d126a168f77ba67945a
+ checksum: 10c0/4004ba454d3c20a46ea66264e06c15b82e9f6bdc35f88819907d24620da70dbf896abac1cb4cc4b6bb8642969e45f4d808497c9054a1388a386cf8c12e9b9e0d
languageName: node
linkType: hard
-"@babel/generator@npm:^7.24.6, @babel/generator@npm:^7.7.2":
- version: 7.24.6
- resolution: "@babel/generator@npm:7.24.6"
+"@babel/generator@npm:^7.24.7, @babel/generator@npm:^7.7.2":
+ version: 7.24.7
+ resolution: "@babel/generator@npm:7.24.7"
dependencies:
- "@babel/types": "npm:^7.24.6"
+ "@babel/types": "npm:^7.24.7"
"@jridgewell/gen-mapping": "npm:^0.3.5"
"@jridgewell/trace-mapping": "npm:^0.3.25"
jsesc: "npm:^2.5.1"
- checksum: 10c0/8d71a17b386536582354afba53cc784396458a88cc9f05f0c6de0ec99475f6f539943b3566b2e733820c4928236952473831765e483c25d68cc007a6e604d782
+ checksum: 10c0/06b1f3350baf527a3309e50ffd7065f7aee04dd06e1e7db794ddfde7fe9d81f28df64edd587173f8f9295496a7ddb74b9a185d4bf4de7bb619e6d4ec45c8fd35
languageName: node
linkType: hard
-"@babel/helper-annotate-as-pure@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/helper-annotate-as-pure@npm:7.24.6"
+"@babel/helper-annotate-as-pure@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/helper-annotate-as-pure@npm:7.24.7"
dependencies:
- "@babel/types": "npm:^7.24.6"
- checksum: 10c0/3fe446e3bd37e5e32152279c84ace4e83815e5b88b9e09a82a83974a0bb22e941d89db26b23aaab4c9eb0f9713772c2f6163feffc1bcb055c4cdb6b67e5dc82f
+ "@babel/types": "npm:^7.24.7"
+ checksum: 10c0/4679f7df4dffd5b3e26083ae65228116c3da34c3fff2c11ae11b259a61baec440f51e30fd236f7a0435b9d471acd93d0bc5a95df8213cbf02b1e083503d81b9a
languageName: node
linkType: hard
-"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.24.6"
+"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.24.7"
dependencies:
- "@babel/types": "npm:^7.24.6"
- checksum: 10c0/d468ba492163bdcf5b6c53248edcf0aaed6194c0f7bdebef4f29ef626e5b03e9fcc7ed737445eb80a961ec6e687c330e1c5242d8a724efb0af002141f3b3e66c
+ "@babel/traverse": "npm:^7.24.7"
+ "@babel/types": "npm:^7.24.7"
+ checksum: 10c0/0ed84abf848c79fb1cd4c1ddac12c771d32c1904d87fc3087f33cfdeb0c2e0db4e7892b74b407d9d8d0c000044f3645a7391a781f788da8410c290bb123a1f13
languageName: node
linkType: hard
-"@babel/helper-builder-react-jsx@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/helper-builder-react-jsx@npm:7.24.6"
+"@babel/helper-builder-react-jsx@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/helper-builder-react-jsx@npm:7.24.7"
dependencies:
- "@babel/helper-annotate-as-pure": "npm:^7.24.6"
- "@babel/types": "npm:^7.24.6"
- checksum: 10c0/93b0500d00f214bc2f7f142ebfa0a634872cadd446bd767f7d58b26ae1b46e1f262b0fe80a9151691463611a3148a69ad28f930295d976bf8ced32c79449a3ce
+ "@babel/helper-annotate-as-pure": "npm:^7.24.7"
+ "@babel/types": "npm:^7.24.7"
+ checksum: 10c0/c95c8856c67c57060461f39b669707b2dca3501149bcc54b7c3e49c95069afce52179fc7c2bd809981acfbfdf0860ef1035dd7512cdba46c83bdb1ad6f6dc53f
languageName: node
linkType: hard
-"@babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/helper-compilation-targets@npm:7.24.6"
+"@babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/helper-compilation-targets@npm:7.24.7"
dependencies:
- "@babel/compat-data": "npm:^7.24.6"
- "@babel/helper-validator-option": "npm:^7.24.6"
+ "@babel/compat-data": "npm:^7.24.7"
+ "@babel/helper-validator-option": "npm:^7.24.7"
browserslist: "npm:^4.22.2"
lru-cache: "npm:^5.1.1"
semver: "npm:^6.3.1"
- checksum: 10c0/4d41150086959f5f4d72d27bae29204192e943537ecb71df1711d1f5d8791358a44f3a5882ed3c8238ba0c874b0b55213af43767e14771765f13b8d15b262432
+ checksum: 10c0/1d580a9bcacefe65e6bf02ba1dafd7ab278269fef45b5e281d8354d95c53031e019890464e7f9351898c01502dd2e633184eb0bcda49ed2ecd538675ce310f51
languageName: node
linkType: hard
-"@babel/helper-create-class-features-plugin@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/helper-create-class-features-plugin@npm:7.24.6"
+"@babel/helper-create-class-features-plugin@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/helper-create-class-features-plugin@npm:7.24.7"
dependencies:
- "@babel/helper-annotate-as-pure": "npm:^7.24.6"
- "@babel/helper-environment-visitor": "npm:^7.24.6"
- "@babel/helper-function-name": "npm:^7.24.6"
- "@babel/helper-member-expression-to-functions": "npm:^7.24.6"
- "@babel/helper-optimise-call-expression": "npm:^7.24.6"
- "@babel/helper-replace-supers": "npm:^7.24.6"
- "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.24.6"
- "@babel/helper-split-export-declaration": "npm:^7.24.6"
+ "@babel/helper-annotate-as-pure": "npm:^7.24.7"
+ "@babel/helper-environment-visitor": "npm:^7.24.7"
+ "@babel/helper-function-name": "npm:^7.24.7"
+ "@babel/helper-member-expression-to-functions": "npm:^7.24.7"
+ "@babel/helper-optimise-call-expression": "npm:^7.24.7"
+ "@babel/helper-replace-supers": "npm:^7.24.7"
+ "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.24.7"
+ "@babel/helper-split-export-declaration": "npm:^7.24.7"
semver: "npm:^6.3.1"
peerDependencies:
"@babel/core": ^7.0.0
- checksum: 10c0/e6734671bc6a5f3cca4ec46e4cc70238e5a2fa063e51225c2be572f157119002af419b33ea0f846dbb1307370fe9f3aa92d199449abbea5e88e0262513c8a821
+ checksum: 10c0/6b7b47d70b41c00f39f86790cff67acf2bce0289d52a7c182b28e797f4e0e6d69027e3d06eccf1d54dddc2e5dde1df663bb1932437e5f447aeb8635d8d64a6ab
languageName: node
linkType: hard
-"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/helper-create-regexp-features-plugin@npm:7.24.6"
+"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/helper-create-regexp-features-plugin@npm:7.24.7"
dependencies:
- "@babel/helper-annotate-as-pure": "npm:^7.24.6"
+ "@babel/helper-annotate-as-pure": "npm:^7.24.7"
regexpu-core: "npm:^5.3.1"
semver: "npm:^6.3.1"
peerDependencies:
"@babel/core": ^7.0.0
- checksum: 10c0/c6e1b07c94b3b93a3f534039da88bc67ec3156080f1959aa07d5d534e9a640de3533e7ded0516dfcbccde955e91687044e6a950852b1d3f402ac5d5001be56cf
+ checksum: 10c0/ed611a7eb0c71843f9cdc471eeb38767972229f9225f7aaa90d124d7ee0062cf6908fd53ee9c34f731394c429594f06049a7738a71d342e0191d4047b2fc0ac2
languageName: node
linkType: hard
@@ -182,242 +183,249 @@ __metadata:
languageName: node
linkType: hard
-"@babel/helper-environment-visitor@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/helper-environment-visitor@npm:7.24.6"
- checksum: 10c0/fdcd18ac505ed71f40c05cc992b648a4495b0aa5310a774492a0f74d8dcf3579691102f516561a651d3de6c3a44fe64bfb3049d11c14c5857634ef1823ea409a
+"@babel/helper-environment-visitor@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/helper-environment-visitor@npm:7.24.7"
+ dependencies:
+ "@babel/types": "npm:^7.24.7"
+ checksum: 10c0/36ece78882b5960e2d26abf13cf15ff5689bf7c325b10a2895a74a499e712de0d305f8d78bb382dd3c05cfba7e47ec98fe28aab5674243e0625cd38438dd0b2d
languageName: node
linkType: hard
-"@babel/helper-function-name@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/helper-function-name@npm:7.24.6"
+"@babel/helper-function-name@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/helper-function-name@npm:7.24.7"
dependencies:
- "@babel/template": "npm:^7.24.6"
- "@babel/types": "npm:^7.24.6"
- checksum: 10c0/5ba2f8db789b3f5a2b2239300a217aa212e303cd7bfad9c8b90563807f49215e8c679e8f8f177b6aaca2038038e29bc702b83839e1f7b4896d79c44a75cac97a
+ "@babel/template": "npm:^7.24.7"
+ "@babel/types": "npm:^7.24.7"
+ checksum: 10c0/e5e41e6cf86bd0f8bf272cbb6e7c5ee0f3e9660414174435a46653efba4f2479ce03ce04abff2aa2ef9359cf057c79c06cb7b134a565ad9c0e8a50dcdc3b43c4
languageName: node
linkType: hard
-"@babel/helper-hoist-variables@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/helper-hoist-variables@npm:7.24.6"
+"@babel/helper-hoist-variables@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/helper-hoist-variables@npm:7.24.7"
dependencies:
- "@babel/types": "npm:^7.24.6"
- checksum: 10c0/e10ec6b864aaa419ec4934f5fcb5d0cfcc9d0657584a1b6c3c42ada949d44ca6bffcdab433a90ada4396c747e551cca31ba0e565ea005ab3f50964e3817bf6cf
+ "@babel/types": "npm:^7.24.7"
+ checksum: 10c0/19ee37563bbd1219f9d98991ad0e9abef77803ee5945fd85aa7aa62a67c69efca9a801696a1b58dda27f211e878b3327789e6fd2a6f6c725ccefe36774b5ce95
languageName: node
linkType: hard
-"@babel/helper-member-expression-to-functions@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/helper-member-expression-to-functions@npm:7.24.6"
+"@babel/helper-member-expression-to-functions@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/helper-member-expression-to-functions@npm:7.24.7"
dependencies:
- "@babel/types": "npm:^7.24.6"
- checksum: 10c0/7595f62978f55921b24de6ed5252fcedbffacfb8271f71e092f38724179ba554cb3a24a4764a1a3890b8a53504c2bee9c99eab81f1f365582739f566c8e28eaa
+ "@babel/traverse": "npm:^7.24.7"
+ "@babel/types": "npm:^7.24.7"
+ checksum: 10c0/9638c1d33cf6aba028461ccd3db6061c76ff863ca0d5013dd9a088bf841f2f77c46956493f9da18355c16759449d23b74cc1de4da357ade5c5c34c858f840f0a
languageName: node
linkType: hard
-"@babel/helper-module-imports@npm:^7.0.0-beta.49, @babel/helper-module-imports@npm:^7.10.4, @babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/helper-module-imports@npm:7.24.6"
+"@babel/helper-module-imports@npm:^7.0.0-beta.49, @babel/helper-module-imports@npm:^7.10.4, @babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/helper-module-imports@npm:7.24.7"
dependencies:
- "@babel/types": "npm:^7.24.6"
- checksum: 10c0/e0db3fbfcd963d138f0792ff626f940a576fcf212d02b8fe6478dccf3421bd1c2a76f8e69c7450c049985e7b63b30be309a24eeeb6ad7c2137a31b676a095a84
+ "@babel/traverse": "npm:^7.24.7"
+ "@babel/types": "npm:^7.24.7"
+ checksum: 10c0/97c57db6c3eeaea31564286e328a9fb52b0313c5cfcc7eee4bc226aebcf0418ea5b6fe78673c0e4a774512ec6c86e309d0f326e99d2b37bfc16a25a032498af0
languageName: node
linkType: hard
-"@babel/helper-module-transforms@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/helper-module-transforms@npm:7.24.6"
+"@babel/helper-module-transforms@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/helper-module-transforms@npm:7.24.7"
dependencies:
- "@babel/helper-environment-visitor": "npm:^7.24.6"
- "@babel/helper-module-imports": "npm:^7.24.6"
- "@babel/helper-simple-access": "npm:^7.24.6"
- "@babel/helper-split-export-declaration": "npm:^7.24.6"
- "@babel/helper-validator-identifier": "npm:^7.24.6"
+ "@babel/helper-environment-visitor": "npm:^7.24.7"
+ "@babel/helper-module-imports": "npm:^7.24.7"
+ "@babel/helper-simple-access": "npm:^7.24.7"
+ "@babel/helper-split-export-declaration": "npm:^7.24.7"
+ "@babel/helper-validator-identifier": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0
- checksum: 10c0/9e2e3d0ddb397b36b9e8c7d94e175a36be8cb888ef370cefef2cdfd53ae1f87d567b268bd90ed9a6c706485a8de3da19cac577657613e9cd17210b91cbdfb00b
+ checksum: 10c0/4f311755fcc3b4cbdb689386309cdb349cf0575a938f0b9ab5d678e1a81bbb265aa34ad93174838245f2ac7ff6d5ddbd0104638a75e4e961958ed514355687b6
languageName: node
linkType: hard
-"@babel/helper-optimise-call-expression@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/helper-optimise-call-expression@npm:7.24.6"
+"@babel/helper-optimise-call-expression@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/helper-optimise-call-expression@npm:7.24.7"
dependencies:
- "@babel/types": "npm:^7.24.6"
- checksum: 10c0/7fce2c4ce22c4ba3c2178d1ce85f34fc9bbe286af5ec153b4b6ea9bf2212390359c4a1e8a54551c4daa4688022d619668bdb8c8060cb185c0c9ad02c5247efc9
+ "@babel/types": "npm:^7.24.7"
+ checksum: 10c0/ca6a9884705dea5c95a8b3ce132d1e3f2ae951ff74987d400d1d9c215dae9c0f9e29924d8f8e131e116533d182675bc261927be72f6a9a2968eaeeaa51eb1d0f
languageName: node
linkType: hard
-"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.24.6, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3":
- version: 7.24.6
- resolution: "@babel/helper-plugin-utils@npm:7.24.6"
- checksum: 10c0/636d3ce8cabc0621c1f78187e1d95f1087209921fa452f76aad06224ef5dffb3d934946f5183109920f32a4b94dd75ac91c63bc52813fee639d10cd54d49ba1f
+"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.24.7, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3":
+ version: 7.24.7
+ resolution: "@babel/helper-plugin-utils@npm:7.24.7"
+ checksum: 10c0/c3d38cd9b3520757bb4a279255cc3f956fc0ac1c193964bd0816ebd5c86e30710be8e35252227e0c9d9e0f4f56d9b5f916537f2bc588084b0988b4787a967d31
languageName: node
linkType: hard
-"@babel/helper-remap-async-to-generator@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/helper-remap-async-to-generator@npm:7.24.6"
+"@babel/helper-remap-async-to-generator@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/helper-remap-async-to-generator@npm:7.24.7"
dependencies:
- "@babel/helper-annotate-as-pure": "npm:^7.24.6"
- "@babel/helper-environment-visitor": "npm:^7.24.6"
- "@babel/helper-wrap-function": "npm:^7.24.6"
+ "@babel/helper-annotate-as-pure": "npm:^7.24.7"
+ "@babel/helper-environment-visitor": "npm:^7.24.7"
+ "@babel/helper-wrap-function": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0
- checksum: 10c0/b379b844eba352ac9487d31867e7bb2b8a264057f1739d9161b614145ea6e60969a7a82e75e5e83089e50cf1b6559f53aa085a787942bf40706fee15a2faa33c
+ checksum: 10c0/4e7fa2cdcbc488e41c27066c16e562857ef3c5c2bfe70d2f1e32e9ee7546b17c3fc1c20d05bf2a7f1c291bd9e7a0a219f6a9fa387209013294be79a26fcfe64d
languageName: node
linkType: hard
-"@babel/helper-replace-supers@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/helper-replace-supers@npm:7.24.6"
+"@babel/helper-replace-supers@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/helper-replace-supers@npm:7.24.7"
dependencies:
- "@babel/helper-environment-visitor": "npm:^7.24.6"
- "@babel/helper-member-expression-to-functions": "npm:^7.24.6"
- "@babel/helper-optimise-call-expression": "npm:^7.24.6"
+ "@babel/helper-environment-visitor": "npm:^7.24.7"
+ "@babel/helper-member-expression-to-functions": "npm:^7.24.7"
+ "@babel/helper-optimise-call-expression": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0
- checksum: 10c0/aaf2dfaf25360da1525ecea5979d5afed201b96f0feeed2e15f90883a97776132a720b25039e67fee10a5c537363aea5cc2a46c0f1d13fdb86d0e920244f2da7
+ checksum: 10c0/0e133bb03371dee78e519c334a09c08e1493103a239d9628db0132dfaac3fc16380479ca3c590d278a9b71b624030a338c18ebbfe6d430ebb2e4653775c4b3e3
languageName: node
linkType: hard
-"@babel/helper-simple-access@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/helper-simple-access@npm:7.24.6"
+"@babel/helper-simple-access@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/helper-simple-access@npm:7.24.7"
dependencies:
- "@babel/types": "npm:^7.24.6"
- checksum: 10c0/b17e404dd6c9787fc7d558aea5222471a77e29596705f0d10b4c2a58b9d71ff7eae915094204848cc1af99b771553caa69337a768b9abdd82b54a0050ba83eb9
+ "@babel/traverse": "npm:^7.24.7"
+ "@babel/types": "npm:^7.24.7"
+ checksum: 10c0/7230e419d59a85f93153415100a5faff23c133d7442c19e0cd070da1784d13cd29096ee6c5a5761065c44e8164f9f80e3a518c41a0256df39e38f7ad6744fed7
languageName: node
linkType: hard
-"@babel/helper-skip-transparent-expression-wrappers@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.24.6"
+"@babel/helper-skip-transparent-expression-wrappers@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.24.7"
dependencies:
- "@babel/types": "npm:^7.24.6"
- checksum: 10c0/6928f698362d6082a67ee2bc73991ef6b0cc6b5f2854177389bc8f3c09296580f0ee20134dd1a29dfcb1906ad9e346fa0f7c6fcd7589ab3ff176d4f09504577f
+ "@babel/traverse": "npm:^7.24.7"
+ "@babel/types": "npm:^7.24.7"
+ checksum: 10c0/e3a9b8ac9c262ac976a1bcb5fe59694db5e6f0b4f9e7bdba5c7693b8b5e28113c23bdaa60fe8d3ec32a337091b67720b2053bcb3d5655f5406536c3d0584242b
languageName: node
linkType: hard
-"@babel/helper-split-export-declaration@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/helper-split-export-declaration@npm:7.24.6"
+"@babel/helper-split-export-declaration@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/helper-split-export-declaration@npm:7.24.7"
dependencies:
- "@babel/types": "npm:^7.24.6"
- checksum: 10c0/53a5dd8691fdffc89cc7fcf5aed0ad1d8bc39796a5782a3d170dcbf249eb5c15cc8a290e8d09615711d18798ad04a7d0694ab5195d35fa651abbc1b9c885d6a8
+ "@babel/types": "npm:^7.24.7"
+ checksum: 10c0/0254577d7086bf09b01bbde98f731d4fcf4b7c3fa9634fdb87929801307c1f6202a1352e3faa5492450fa8da4420542d44de604daf540704ff349594a78184f6
languageName: node
linkType: hard
-"@babel/helper-string-parser@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/helper-string-parser@npm:7.24.6"
- checksum: 10c0/95115bf676e92c4e99166395649108d97447e6cabef1fabaec8cdbc53a43f27b5df2268ff6534439d405bc1bd06685b163eb3b470455bd49f69159dada414145
+"@babel/helper-string-parser@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/helper-string-parser@npm:7.24.7"
+ checksum: 10c0/47840c7004e735f3dc93939c77b099bb41a64bf3dda0cae62f60e6f74a5ff80b63e9b7cf77b5ec25a324516381fc994e1f62f922533236a8e3a6af57decb5e1e
languageName: node
linkType: hard
-"@babel/helper-validator-identifier@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/helper-validator-identifier@npm:7.24.6"
- checksum: 10c0/d29d2e3fca66c31867a009014169b93f7bc21c8fc1dd7d0b9d85d7a4000670526ff2222d966febb75a6e12f9859a31d1e75b558984e28ecb69651314dd0a6fd1
+"@babel/helper-validator-identifier@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/helper-validator-identifier@npm:7.24.7"
+ checksum: 10c0/87ad608694c9477814093ed5b5c080c2e06d44cb1924ae8320474a74415241223cc2a725eea2640dd783ff1e3390e5f95eede978bc540e870053152e58f1d651
languageName: node
linkType: hard
-"@babel/helper-validator-option@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/helper-validator-option@npm:7.24.6"
- checksum: 10c0/787268dff5cf77f3b704454b96ab7b58aa4f43b2808247e51859a103a1c28a9c252100f830433f4b37a73f4a61ba745bbeef4cdccbab48c1e9adf037f4ca3491
+"@babel/helper-validator-option@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/helper-validator-option@npm:7.24.7"
+ checksum: 10c0/21aea2b7bc5cc8ddfb828741d5c8116a84cbc35b4a3184ec53124f08e09746f1f67a6f9217850188995ca86059a7942e36d8965a6730784901def777b7e8a436
languageName: node
linkType: hard
-"@babel/helper-wrap-function@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/helper-wrap-function@npm:7.24.6"
+"@babel/helper-wrap-function@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/helper-wrap-function@npm:7.24.7"
dependencies:
- "@babel/helper-function-name": "npm:^7.24.6"
- "@babel/template": "npm:^7.24.6"
- "@babel/types": "npm:^7.24.6"
- checksum: 10c0/d32844275a544a8e7c71c13e9832d34d80656aafce659dc6c23b02e14d1c1179d8045125ded5096da1a99de83299ffb48211183d0403da2c8584ed55dc0ab646
+ "@babel/helper-function-name": "npm:^7.24.7"
+ "@babel/template": "npm:^7.24.7"
+ "@babel/traverse": "npm:^7.24.7"
+ "@babel/types": "npm:^7.24.7"
+ checksum: 10c0/d5689f031bf0eb38c0d7fad6b7e320ddef4bfbdf08d12d7d76ef41b7ca365a32721e74cb5ed5a9a9ec634bc20f9b7a27314fa6fb08f1576b8f6d8330fcea6f47
languageName: node
linkType: hard
-"@babel/helpers@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/helpers@npm:7.24.6"
+"@babel/helpers@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/helpers@npm:7.24.7"
dependencies:
- "@babel/template": "npm:^7.24.6"
- "@babel/types": "npm:^7.24.6"
- checksum: 10c0/e5b5c0919fd6fa56ae11c15a72962d8de0ac19db524849554af28cf08ac32f9ae5aee49a43146eb150f54418cefb8e890fa2b2f33d029434dc7777dbcdfd5bac
+ "@babel/template": "npm:^7.24.7"
+ "@babel/types": "npm:^7.24.7"
+ checksum: 10c0/aa8e230f6668773e17e141dbcab63e935c514b4b0bf1fed04d2eaefda17df68e16b61a56573f7f1d4d1e605ce6cc162b5f7e9fdf159fde1fd9b77c920ae47d27
languageName: node
linkType: hard
-"@babel/highlight@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/highlight@npm:7.24.6"
+"@babel/highlight@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/highlight@npm:7.24.7"
dependencies:
- "@babel/helper-validator-identifier": "npm:^7.24.6"
+ "@babel/helper-validator-identifier": "npm:^7.24.7"
chalk: "npm:^2.4.2"
js-tokens: "npm:^4.0.0"
picocolors: "npm:^1.0.0"
- checksum: 10c0/5bbc31695e5d44e97feb267f7aaf4c52908560d184ffeb2e2e57aae058d40125592931883889413e19def3326895ddb41ff45e090fa90b459d8c294b4ffc238c
+ checksum: 10c0/674334c571d2bb9d1c89bdd87566383f59231e16bcdcf5bb7835babdf03c9ae585ca0887a7b25bdf78f303984af028df52831c7989fecebb5101cc132da9393a
languageName: node
linkType: hard
-"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/parser@npm:7.24.6"
+"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/parser@npm:7.24.7"
bin:
parser: ./bin/babel-parser.js
- checksum: 10c0/cbef70923078a20fe163b03f4a6482be65ed99d409a57f3091a23ce3a575ee75716c30e7ea9f40b692ac5660f34055f4cbeb66a354fad15a6cf1fca35c3496c5
+ checksum: 10c0/8b244756872185a1c6f14b979b3535e682ff08cb5a2a5fd97cc36c017c7ef431ba76439e95e419d43000c5b07720495b00cf29a7f0d9a483643d08802b58819b
languageName: node
linkType: hard
-"@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.24.6"
+"@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.24.7"
dependencies:
- "@babel/helper-environment-visitor": "npm:^7.24.6"
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-environment-visitor": "npm:^7.24.7"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0
- checksum: 10c0/0dbf12de5a7e5d092271124f0d9bff1ceb94871d5563041940512671cd40ab2a93d613715ee37076cd8263cf49579afb805faa3189996c11639bb10d3e9837f1
+ checksum: 10c0/394c30e2b708ad385fa1219528e039066a1f1cb40f47986f283878848fd354c745e6397f588b4e5a046ee8d64bfdf4c208e4c3dfbdcfb2fd34315ec67c64e7af
languageName: node
linkType: hard
-"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.24.6"
+"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.24.7"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0
- checksum: 10c0/b0a03d4f587e1fa92312c912864a0af3f68bfc87367b7c93770e94f171767d563d7adfca7ad571d20cd755e89e1373e7414973ce30e694e7b6eb8f57d2b1b889
+ checksum: 10c0/a36307428ecc1a01b00cf90812335eed1575d13f211ab24fe4d0c55c28a2fcbd4135f142efabc3b277b2a8e09ee05df594a1272353f061b63829495b5dcfdb96
languageName: node
linkType: hard
-"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.24.6"
+"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.24.7"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.6"
- "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.24.6"
- "@babel/plugin-transform-optional-chaining": "npm:^7.24.6"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
+ "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.24.7"
+ "@babel/plugin-transform-optional-chaining": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.13.0
- checksum: 10c0/fdd40fdf7e87f3dbc5396c9a8f92005798865f6f20d2c24c33246ac43aab8df93742b63dfcfcda67c0a5cf1f7b8a987fdbccaceb9ccbb9a67bef10012b522390
+ checksum: 10c0/aeb6e7aa363a47f815cf956ea1053c5dd8b786a17799f065c9688ba4b0051fe7565d258bbe9400bfcbfb3114cb9fda66983e10afe4d750bc70ff75403e15dd36
languageName: node
linkType: hard
-"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.24.6"
+"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.24.7"
dependencies:
- "@babel/helper-environment-visitor": "npm:^7.24.6"
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-environment-visitor": "npm:^7.24.7"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0
- checksum: 10c0/cc1e8ee138c71e78ec262a5198d2cf75c305f2fb4ea9771ebd4ded47f51bc1bacbf917db3cb28c681e7499a07f9803ab0bbe5ad50b9576cbe03902189e3871ed
+ checksum: 10c0/2b52a73e444f6adc73f927b623e53a4cf64397170dd1071268536df1b3db1e02131418c8dc91351af48837a6298212118f4a72d5407f8005cf9a732370a315b0
languageName: node
linkType: hard
@@ -496,25 +504,25 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-syntax-import-assertions@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-syntax-import-assertions@npm:7.24.6"
+"@babel/plugin-syntax-import-assertions@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-syntax-import-assertions@npm:7.24.7"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/8e81c7cd3d5812a3dda32f06f84492a1b5640f42c594619ed57bf4017529889f87bfb4e8e95c50ba1527d89501dae71a0c73770502676545c2cd9ce58ce3258d
+ checksum: 10c0/b82c53e095274ee71c248551352d73441cf65b3b3fc0107258ba4e9aef7090772a425442b3ed1c396fa207d0efafde8929c87a17d3c885b3ca2021316e87e246
languageName: node
linkType: hard
-"@babel/plugin-syntax-import-attributes@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-syntax-import-attributes@npm:7.24.6"
+"@babel/plugin-syntax-import-attributes@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-syntax-import-attributes@npm:7.24.7"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/c4d8554b89c0daa6d3c430582b98c10a3af2de8eab484082e97cb73f2712780ab6dd8d11d783c4b266efef76f4479abf4944ef8f416a4459b05eecaf438f8774
+ checksum: 10c0/eccc54d0f03c96d0eec7a6e2fa124dadbc7298345b62ffc4238f173308c4325b5598f139695ff05a95cf78412ef6903599e4b814496612bf39aad4715a16375b
languageName: node
linkType: hard
@@ -540,14 +548,14 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-syntax-jsx@npm:7, @babel/plugin-syntax-jsx@npm:^7.24.6, @babel/plugin-syntax-jsx@npm:^7.7.2":
- version: 7.24.6
- resolution: "@babel/plugin-syntax-jsx@npm:7.24.6"
+"@babel/plugin-syntax-jsx@npm:7, @babel/plugin-syntax-jsx@npm:^7.24.7, @babel/plugin-syntax-jsx@npm:^7.7.2":
+ version: 7.24.7
+ resolution: "@babel/plugin-syntax-jsx@npm:7.24.7"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/f00d783a9e2d52f0a8797823a3cbdbe2d0dc09c7235fe8c88e6dce3a02f234f52fb5e976a001cc30b0e2b330590b5680f54436e56d67f9ab05d1e4bdeb3992cd
+ checksum: 10c0/f44d927a9ae8d5ef016ff5b450e1671e56629ddc12e56b938e41fd46e141170d9dfc9a53d6cb2b9a20a7dd266a938885e6a3981c60c052a2e1daed602ac80e51
languageName: node
linkType: hard
@@ -639,14 +647,14 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-syntax-typescript@npm:^7.24.6, @babel/plugin-syntax-typescript@npm:^7.7.2":
- version: 7.24.6
- resolution: "@babel/plugin-syntax-typescript@npm:7.24.6"
+"@babel/plugin-syntax-typescript@npm:^7.24.7, @babel/plugin-syntax-typescript@npm:^7.7.2":
+ version: 7.24.7
+ resolution: "@babel/plugin-syntax-typescript@npm:7.24.7"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/b1eeabf8bebfa78cea559c0a0d55e480fe2ebd799472d1f6bd5afbd2759d02b362d29ad30009c81d5b112797beb987e58a3000d2331adaa4bf03862e1ed18cef
+ checksum: 10c0/cdabd2e8010fb0ad15b49c2c270efc97c4bfe109ead36c7bbcf22da7a74bc3e49702fc4f22f12d2d6049e8e22a5769258df1fd05f0420ae45e11bdd5bc07805a
languageName: node
linkType: hard
@@ -662,456 +670,456 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-arrow-functions@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-arrow-functions@npm:7.24.6"
+"@babel/plugin-transform-arrow-functions@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-arrow-functions@npm:7.24.7"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/46250eb3f535327825db323740a301b76b882b70979f1fb5f89cbb1a820378ab68ee880b912981dd5276dd116deaaee0f4a2a95f1c9cf537a67749fd4209a2d3
+ checksum: 10c0/6ac05a54e5582f34ac6d5dc26499e227227ec1c7fa6fc8de1f3d40c275f140d3907f79bbbd49304da2d7008a5ecafb219d0b71d78ee3290ca22020d878041245
languageName: node
linkType: hard
-"@babel/plugin-transform-async-generator-functions@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-async-generator-functions@npm:7.24.6"
+"@babel/plugin-transform-async-generator-functions@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-async-generator-functions@npm:7.24.7"
dependencies:
- "@babel/helper-environment-visitor": "npm:^7.24.6"
- "@babel/helper-plugin-utils": "npm:^7.24.6"
- "@babel/helper-remap-async-to-generator": "npm:^7.24.6"
+ "@babel/helper-environment-visitor": "npm:^7.24.7"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
+ "@babel/helper-remap-async-to-generator": "npm:^7.24.7"
"@babel/plugin-syntax-async-generators": "npm:^7.8.4"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/8876431855220ccfbf1ae510a4a7c4e0377b21189d3f73ea6dde5ffd31eee57f03ea2b2d1da59b6a36b6e107e41b38d0c1d1bb015e0d1c2c2fb627962260edb7
+ checksum: 10c0/6b5e33ae66dce0afce9b06d8dace6fa052528e60f7622aa6cfd3e71bd372ca5079d426e78336ca564bc0d5f37acbcda1b21f4fe656fcb642f1a93a697ab39742
languageName: node
linkType: hard
-"@babel/plugin-transform-async-to-generator@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-async-to-generator@npm:7.24.6"
+"@babel/plugin-transform-async-to-generator@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-async-to-generator@npm:7.24.7"
dependencies:
- "@babel/helper-module-imports": "npm:^7.24.6"
- "@babel/helper-plugin-utils": "npm:^7.24.6"
- "@babel/helper-remap-async-to-generator": "npm:^7.24.6"
+ "@babel/helper-module-imports": "npm:^7.24.7"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
+ "@babel/helper-remap-async-to-generator": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/52c137668e7a35356c3b1caf25ab3bf90ff61199885bfd9f0232bfe168a53a5cf0ca4c1e283c27e44ad76cc366b73e4ff7042241469d1944c7042fb78c57bfd8
+ checksum: 10c0/83c82e243898875af8457972a26ab29baf8a2078768ee9f35141eb3edff0f84b165582a2ff73e90a9e08f5922bf813dbf15a85c1213654385198f4591c0dc45d
languageName: node
linkType: hard
-"@babel/plugin-transform-block-scoped-functions@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.24.6"
+"@babel/plugin-transform-block-scoped-functions@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.24.7"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/0c761b5e3a2959b63edf47d67f6752e01f24777ad1accd82457a2dca059877f8a8297fbc7a062db6b48836309932f2ac645c507070ef6ad4e765b3600822c048
+ checksum: 10c0/113e86de4612ae91773ff5cb6b980f01e1da7e26ae6f6012127415d7ae144e74987bc23feb97f63ba4bc699331490ddea36eac004d76a20d5369e4cc6a7f61cd
languageName: node
linkType: hard
-"@babel/plugin-transform-block-scoping@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-block-scoping@npm:7.24.6"
+"@babel/plugin-transform-block-scoping@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-block-scoping@npm:7.24.7"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/95c25e501c4553515f92d4e86032a8859a8855cea8aafb6df30f956979caa70af1e126e6dfaf9e51328d1306232ff1e081bda7d84a9aaf23f418d9da120c7018
+ checksum: 10c0/dcbc5e385c0ca5fb5736b1c720c90755cffe9f91d8c854f82e61e59217dd3f6c91b3633eeee4b55a89d3f59e5275d0f5b0b1b1363d4fa70c49c468b55aa87700
languageName: node
linkType: hard
-"@babel/plugin-transform-class-properties@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-class-properties@npm:7.24.6"
+"@babel/plugin-transform-class-properties@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-class-properties@npm:7.24.7"
dependencies:
- "@babel/helper-create-class-features-plugin": "npm:^7.24.6"
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-create-class-features-plugin": "npm:^7.24.7"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/ae01e00dd528112d542a77f0f1cf6b43726553d2011bbdec9e4fac441dfa161d44bf14449dc4121b45cc971686a8c652652032594e83c5d6cab8e9fd794eecb2
+ checksum: 10c0/75018a466c7ede3d2397e158891c224ba7fca72864506ce067ddbc02fc65191d44da4d6379c996d0c7f09019e26b5c3f5f1d3a639cd98366519723886f0689d0
languageName: node
linkType: hard
-"@babel/plugin-transform-class-static-block@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-class-static-block@npm:7.24.6"
+"@babel/plugin-transform-class-static-block@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-class-static-block@npm:7.24.7"
dependencies:
- "@babel/helper-create-class-features-plugin": "npm:^7.24.6"
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-create-class-features-plugin": "npm:^7.24.7"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
"@babel/plugin-syntax-class-static-block": "npm:^7.14.5"
peerDependencies:
"@babel/core": ^7.12.0
- checksum: 10c0/425f237faf62b531d973f23ac3eefe3f29c4f6c988c33c2dd660b6dfb61d4ed1e865a5088574742d87ed02437d26aa6ec6b107468b7df35ca9d3082bad742d8f
+ checksum: 10c0/b0ade39a3d09dce886f79dbd5907c3d99b48167eddb6b9bbde24a0598129654d7017e611c20494cdbea48b07ac14397cd97ea34e3754bbb2abae4e698128eccb
languageName: node
linkType: hard
-"@babel/plugin-transform-classes@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-classes@npm:7.24.6"
+"@babel/plugin-transform-classes@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-classes@npm:7.24.7"
dependencies:
- "@babel/helper-annotate-as-pure": "npm:^7.24.6"
- "@babel/helper-compilation-targets": "npm:^7.24.6"
- "@babel/helper-environment-visitor": "npm:^7.24.6"
- "@babel/helper-function-name": "npm:^7.24.6"
- "@babel/helper-plugin-utils": "npm:^7.24.6"
- "@babel/helper-replace-supers": "npm:^7.24.6"
- "@babel/helper-split-export-declaration": "npm:^7.24.6"
+ "@babel/helper-annotate-as-pure": "npm:^7.24.7"
+ "@babel/helper-compilation-targets": "npm:^7.24.7"
+ "@babel/helper-environment-visitor": "npm:^7.24.7"
+ "@babel/helper-function-name": "npm:^7.24.7"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
+ "@babel/helper-replace-supers": "npm:^7.24.7"
+ "@babel/helper-split-export-declaration": "npm:^7.24.7"
globals: "npm:^11.1.0"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/d29c26feea9ad5a64d790aeab1833b7a50d6af2be24140dad7e06510b754b8fe0ffb292d43d96fedaf7765fcb90c0034ac7c42635f814d9235697431076a1cf0
+ checksum: 10c0/e51dba7ce8b770d1eee929e098d5a3be3efc3e8b941e22dda7d0097dc4e7be5feabd2da7b707ac06fcac5661b31223c541941dec08ce76c1faa55544d87d06ec
languageName: node
linkType: hard
-"@babel/plugin-transform-computed-properties@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-computed-properties@npm:7.24.6"
+"@babel/plugin-transform-computed-properties@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-computed-properties@npm:7.24.7"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.6"
- "@babel/template": "npm:^7.24.6"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
+ "@babel/template": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/c464144c2eda8d526d70c8d8e3bf30820f591424991452f816617347ef3ccc5d04133c6e903b90c1d832d95d9c8550e5693ea40ea14856ede54fb8e1cd36c5de
+ checksum: 10c0/25636dbc1f605c0b8bc60aa58628a916b689473d11551c9864a855142e36742fe62d4a70400ba3b74902338e77fb3d940376c0a0ba154b6b7ec5367175233b49
languageName: node
linkType: hard
-"@babel/plugin-transform-destructuring@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-destructuring@npm:7.24.6"
+"@babel/plugin-transform-destructuring@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-destructuring@npm:7.24.7"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/1fcc064e2b0c45a4340418bd70d2cf2b3644d1215eb975ec14f83e4f7615fdc3948e355db5091f81602f6c3d933f9308caa66232091aad4edd6c16b00240fcc7
+ checksum: 10c0/929f07a807fb62230bfbf881cfcedf187ac5daf2f1b01da94a75c7a0f6f72400268cf4bcfee534479e43260af8193e42c31ee03c8b0278ba77d0036ed6709c27
languageName: node
linkType: hard
-"@babel/plugin-transform-dotall-regex@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-dotall-regex@npm:7.24.6"
+"@babel/plugin-transform-dotall-regex@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-dotall-regex@npm:7.24.7"
dependencies:
- "@babel/helper-create-regexp-features-plugin": "npm:^7.24.6"
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-create-regexp-features-plugin": "npm:^7.24.7"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/4a2c98f1c22a18754c6ada1486563865690008df2536066d8a146fa58eed8515b607e162c7efb0b8fa062d755e77afea145495046cffdb4ea56194d38f489254
+ checksum: 10c0/793f14c9494972d294b7e7b97b747f47874b6d57d7804d3443c701becf5db192c9311be6a1835c07664486df1f5c60d33196c36fb7e11a53015e476b4c145b33
languageName: node
linkType: hard
-"@babel/plugin-transform-duplicate-keys@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-duplicate-keys@npm:7.24.6"
+"@babel/plugin-transform-duplicate-keys@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-duplicate-keys@npm:7.24.7"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/44ddba252f0b9f1f0b1ff8d903bbcf8871246670fb2883f65d09d371d403ce9c3e2e582b94b36506c1d042110b464eb3492e53cd1e87c1d479b145bcc01c04fd
+ checksum: 10c0/75ff7ec1117ac500e77bf20a144411d39c0fdd038f108eec061724123ce6d1bb8d5bd27968e466573ee70014f8be0043361cdb0ef388f8a182d1d97ad67e51b9
languageName: node
linkType: hard
-"@babel/plugin-transform-dynamic-import@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-dynamic-import@npm:7.24.6"
+"@babel/plugin-transform-dynamic-import@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-dynamic-import@npm:7.24.7"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
"@babel/plugin-syntax-dynamic-import": "npm:^7.8.3"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/b4411f21112127a02aef15103765e207e4c03e7321d7f4de3522fc181cb377c5abc8484cf0169e6c30f2e51e6c602c09894fa6b15643d24f66273833ef34e4a6
+ checksum: 10c0/eeda48372efd0a5103cb22dadb13563c975bce18ae85daafbb47d57bb9665d187da9d4fe8d07ac0a6e1288afcfcb73e4e5618bf75ff63fddf9736bfbf225203b
languageName: node
linkType: hard
-"@babel/plugin-transform-exponentiation-operator@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.24.6"
+"@babel/plugin-transform-exponentiation-operator@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.24.7"
dependencies:
- "@babel/helper-builder-binary-assignment-operator-visitor": "npm:^7.24.6"
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-builder-binary-assignment-operator-visitor": "npm:^7.24.7"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/c4f15518a5d1614dfac0dbadfb99b0f36a98c1c1ff1c39794a105c3c87cfce00689e0943fcb13368b43b00b2eebaa01136ea12fb8600a574720853b5a8a11de7
+ checksum: 10c0/ace3e11c94041b88848552ba8feb39ae4d6cad3696d439ff51445bd2882d8b8775d85a26c2c0edb9b5e38c9e6013cc11b0dea89ec8f93c7d9d7ee95e3645078c
languageName: node
linkType: hard
-"@babel/plugin-transform-export-namespace-from@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-export-namespace-from@npm:7.24.6"
+"@babel/plugin-transform-export-namespace-from@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-export-namespace-from@npm:7.24.7"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
"@babel/plugin-syntax-export-namespace-from": "npm:^7.8.3"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/bff16d1800d7e5b38d3a3c8d404cc14442a37383dff7769dcc599a0723b2507647cafe9ba7d9b52d2e2f02a78bb78d149676d8d8ddf7357b160f4096b89ae9c5
+ checksum: 10c0/4e144d7f1c57bc63b4899dbbbdfed0880f2daa75ea9c7251c7997f106e4b390dc362175ab7830f11358cb21f6b972ca10a43a2e56cd789065f7606b082674c0c
languageName: node
linkType: hard
-"@babel/plugin-transform-for-of@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-for-of@npm:7.24.6"
+"@babel/plugin-transform-for-of@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-for-of@npm:7.24.7"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.6"
- "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.24.6"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
+ "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/c8def2a160783c5c4a1c136c721fc88aca9cd3757a60f1c885a804b5320edb5f143d3f989f698bdd9aae359fdabab0830dba3d35138cea42988a77d2c72c8443
+ checksum: 10c0/77629b1173e55d07416f05ba7353caa09d2c2149da2ca26721ab812209b63689d1be45116b68eadc011c49ced59daf5320835b15245eb7ae93ae0c5e8277cfc0
languageName: node
linkType: hard
-"@babel/plugin-transform-function-name@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-function-name@npm:7.24.6"
+"@babel/plugin-transform-function-name@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-function-name@npm:7.24.7"
dependencies:
- "@babel/helper-compilation-targets": "npm:^7.24.6"
- "@babel/helper-function-name": "npm:^7.24.6"
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-compilation-targets": "npm:^7.24.7"
+ "@babel/helper-function-name": "npm:^7.24.7"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/efa6527438ad94df0b7a4c92c33110ec40b086a0aceda567176b150ed291f8eb44b2ce697d8e3e1d4841496c10693add1e88f296418e72a171ead5c76b890a47
+ checksum: 10c0/3e9642428d6952851850d89ea9307d55946528d18973784d0e2f04a651b23bd9924dd8a2641c824b483bd4ab1223bab1d2f6a1106a939998f7ced512cb60ac5b
languageName: node
linkType: hard
-"@babel/plugin-transform-json-strings@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-json-strings@npm:7.24.6"
+"@babel/plugin-transform-json-strings@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-json-strings@npm:7.24.7"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
"@babel/plugin-syntax-json-strings": "npm:^7.8.3"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/46af52dcc16f494c6c11dc22c944f2533623b9d9dfce5097bc0bdb99535ad4c4cfe5bca0d8ce8c39a94202e69d99ee60f546ce0be0ad782b681c7b5b4c9ddd6f
+ checksum: 10c0/17c72cd5bf3e90e722aabd333559275f3309e3fa0b9cea8c2944ab83ae01502c71a2be05da5101edc02b3fc8df15a8dbb9b861cbfcc8a52bf5e797cf01d3a40a
languageName: node
linkType: hard
-"@babel/plugin-transform-literals@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-literals@npm:7.24.6"
+"@babel/plugin-transform-literals@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-literals@npm:7.24.7"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/961b64df79a673706d74cf473d1f4646f250b4f8813f9d7ef5d897e30acdacd1ca104584de2e88546289fce055d71bd7559cdb8ad4a2d5e7eea17f3c829faa97
+ checksum: 10c0/9f3f6f3831929cd2a977748c07addf9944d5cccb50bd3a24a58beb54f91f00d6cacd3d7831d13ffe1ad6f8aba0aefd7bca5aec65d63b77f39c62ad1f2d484a3e
languageName: node
linkType: hard
-"@babel/plugin-transform-logical-assignment-operators@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.24.6"
+"@babel/plugin-transform-logical-assignment-operators@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.24.7"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
"@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/0ae7f4098c63f442fd038de6034155bcf20214e7e490e92189decb2980932247b97cb069b11ac8bc471b53f71d6859e607969440d63ff400b8932ee3e05b4958
+ checksum: 10c0/dbe882eb9053931f2ab332c50fc7c2a10ef507d6421bd9831adbb4cb7c9f8e1e5fbac4fbd2e007f6a1bf1df1843547559434012f118084dc0bf42cda3b106272
languageName: node
linkType: hard
-"@babel/plugin-transform-member-expression-literals@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-member-expression-literals@npm:7.24.6"
+"@babel/plugin-transform-member-expression-literals@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-member-expression-literals@npm:7.24.7"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/ec8908a409bd39d20f0428e35425c9e4c540bad252a0e33e08b84e3bea5088c785531197bdcf049afbdba841325962a93030b7be6da3586cb13d0ca0ebab89c9
+ checksum: 10c0/e789ae359bdf2d20e90bedef18dfdbd965c9ebae1cee398474a0c349590fda7c8b874e1a2ceee62e47e5e6ec1730e76b0f24e502164357571854271fc12cc684
languageName: node
linkType: hard
-"@babel/plugin-transform-modules-amd@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-modules-amd@npm:7.24.6"
+"@babel/plugin-transform-modules-amd@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-modules-amd@npm:7.24.7"
dependencies:
- "@babel/helper-module-transforms": "npm:^7.24.6"
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-module-transforms": "npm:^7.24.7"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/074d26c79f517b27a07fef00319aff9705df1e6b41a805db855fe719e0f246b9815d6525cf1c5f0890c7f830dd0b9776e9b2493bbc929a3c23c0dee15f10a514
+ checksum: 10c0/6df7de7fce34117ca4b2fa07949b12274c03668cbfe21481c4037b6300796d50ae40f4f170527b61b70a67f26db906747797e30dbd0d9809a441b6e220b5728f
languageName: node
linkType: hard
-"@babel/plugin-transform-modules-commonjs@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-modules-commonjs@npm:7.24.6"
+"@babel/plugin-transform-modules-commonjs@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-modules-commonjs@npm:7.24.7"
dependencies:
- "@babel/helper-module-transforms": "npm:^7.24.6"
- "@babel/helper-plugin-utils": "npm:^7.24.6"
- "@babel/helper-simple-access": "npm:^7.24.6"
+ "@babel/helper-module-transforms": "npm:^7.24.7"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
+ "@babel/helper-simple-access": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/4fc790136d066105fa773ffc7e249d88c6f0d0126984ede36fedd51ac2b622b46c08565bcdd1ab62ac10195eeedeaba0d26e7e4c676ed50906cbed16540a4e22
+ checksum: 10c0/9442292b3daf6a5076cdc3c4c32bf423bda824ccaeb0dd0dc8b3effaa1fecfcb0130ae6e647fef12a5d5ff25bcc99a0d6bfc6d24a7525345e1bcf46fcdf81752
languageName: node
linkType: hard
-"@babel/plugin-transform-modules-systemjs@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-modules-systemjs@npm:7.24.6"
+"@babel/plugin-transform-modules-systemjs@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-modules-systemjs@npm:7.24.7"
dependencies:
- "@babel/helper-hoist-variables": "npm:^7.24.6"
- "@babel/helper-module-transforms": "npm:^7.24.6"
- "@babel/helper-plugin-utils": "npm:^7.24.6"
- "@babel/helper-validator-identifier": "npm:^7.24.6"
+ "@babel/helper-hoist-variables": "npm:^7.24.7"
+ "@babel/helper-module-transforms": "npm:^7.24.7"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
+ "@babel/helper-validator-identifier": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/500962e3ac1bb1a9890e94f1967ec9e3aa3d41e22d4a9d1c739918707e4a8936710fd8d0ed4f3a8aad87260f7566b54566bead77977eb21e90124835cb6bcdca
+ checksum: 10c0/e2a795e0a6baafe26f4a74010622212ddd873170742d673f450e0097f8d984f6e6a95eb8ce41b05071ee9790c4be088b33801aaab3f78ee202c567634e52a331
languageName: node
linkType: hard
-"@babel/plugin-transform-modules-umd@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-modules-umd@npm:7.24.6"
+"@babel/plugin-transform-modules-umd@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-modules-umd@npm:7.24.7"
dependencies:
- "@babel/helper-module-transforms": "npm:^7.24.6"
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-module-transforms": "npm:^7.24.7"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/73c6cecb4f45ca3f665e2c57b6d04d65358518522dfaffb9b6913c026aeb704281d015324d02bf07f2cb026de6bac9308c62e82979364bd39f3687f752652b0d
+ checksum: 10c0/7791d290121db210e4338b94b4a069a1a79e4c7a8d7638d8159a97b281851bbed3048dac87a4ae718ad963005e6c14a5d28e6db2eeb2b04e031cee92fb312f85
languageName: node
linkType: hard
-"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.24.6"
+"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.24.7"
dependencies:
- "@babel/helper-create-regexp-features-plugin": "npm:^7.24.6"
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-create-regexp-features-plugin": "npm:^7.24.7"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0
- checksum: 10c0/92547309d81938488753f87b05a679a7557a1cec253756966044367c268b27311e51efad91724aa3e433cf61626e10bf1008e112998350c2013a87824c4cfe0b
+ checksum: 10c0/41a0b0f2d0886318237440aa3b489f6d0305361d8671121777d9ff89f9f6de9d0c02ce93625049061426c8994064ef64deae8b819d1b14c00374a6a2336fb5d9
languageName: node
linkType: hard
-"@babel/plugin-transform-new-target@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-new-target@npm:7.24.6"
+"@babel/plugin-transform-new-target@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-new-target@npm:7.24.7"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/5e9b9edfbe46489f64013d2bbd422f29acdb8057ccc85e7c759f7cf1415fde6a82ac13a13f0f246defaba6e2f7f4d424178ba78fc02237bdbf7df6692fc1dca8
+ checksum: 10c0/2540808a35e1a978e537334c43dab439cf24c93e7beb213a2e71902f6710e60e0184316643790c0a6644e7a8021e52f7ab8165e6b3e2d6651be07bdf517b67df
languageName: node
linkType: hard
-"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.22.3, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.24.6"
+"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.22.3, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.24.7"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
"@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/53ab5b16bbcf47e842a48f1f0774d238dae0222c3e1f31653307808048e249ed140cba12dfc280cbc9a577cb3bb5b2f50ca0e3e4ffe5260fcf8c3ca0b83fb21e
+ checksum: 10c0/7243c8ff734ed5ef759dd8768773c4b443c12e792727e759a1aec2c7fa2bfdd24f1ecb42e292a7b3d8bd3d7f7b861cf256a8eb4ba144fc9cc463892c303083d9
languageName: node
linkType: hard
-"@babel/plugin-transform-numeric-separator@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-numeric-separator@npm:7.24.6"
+"@babel/plugin-transform-numeric-separator@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-numeric-separator@npm:7.24.7"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
"@babel/plugin-syntax-numeric-separator": "npm:^7.10.4"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/14863e735fc407e065e1574914864a956b8250a84cfb4704592656763c9455d67034c7745e53066725195d9ed042121f424c4aaee00027791640e2639386b701
+ checksum: 10c0/e18e09ca5a6342645d00ede477731aa6e8714ff357efc9d7cda5934f1703b3b6fb7d3298dce3ce3ba53e9ff1158eab8f1aadc68874cc21a6099d33a1ca457789
languageName: node
linkType: hard
-"@babel/plugin-transform-object-rest-spread@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-object-rest-spread@npm:7.24.6"
+"@babel/plugin-transform-object-rest-spread@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-object-rest-spread@npm:7.24.7"
dependencies:
- "@babel/helper-compilation-targets": "npm:^7.24.6"
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-compilation-targets": "npm:^7.24.7"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
"@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3"
- "@babel/plugin-transform-parameters": "npm:^7.24.6"
+ "@babel/plugin-transform-parameters": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/1a192b9756ebfa0bc69ad5e285d7d0284963b4b95738ca7721354297329d5c1ab4eb05ff5b198cbfffa3ec00e97a15a712aa7a5011d9407478796966aab54527
+ checksum: 10c0/9ad64bc003f583030f9da50614b485852f8edac93f8faf5d1cd855201a4852f37c5255ae4daf70dd4375bdd4874e16e39b91f680d4668ec219ba05441ce286eb
languageName: node
linkType: hard
-"@babel/plugin-transform-object-super@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-object-super@npm:7.24.6"
+"@babel/plugin-transform-object-super@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-object-super@npm:7.24.7"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.6"
- "@babel/helper-replace-supers": "npm:^7.24.6"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
+ "@babel/helper-replace-supers": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/2e48b9e0a1f3b04b439ede2d0c83bcc5324a81c8bab73c70f0c466cf48061a4ff469f283e2feb17b4cc2e20372c1362253604477ecd77e622192d5d7906aa062
+ checksum: 10c0/770cebb4b4e1872c216b17069db9a13b87dfee747d359dc56d9fcdd66e7544f92dc6ab1861a4e7e0528196aaff2444e4f17dc84efd8eaf162d542b4ba0943869
languageName: node
linkType: hard
-"@babel/plugin-transform-optional-catch-binding@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.24.6"
+"@babel/plugin-transform-optional-catch-binding@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.24.7"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
"@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/411db3177b1bffd2f9e5b33a6b62e70158380e67d91ff4725755312e8a0a2f2c3fd340c60005295a672115fb593222ab2d7076266aebced6ef087a5505b6f371
+ checksum: 10c0/1e2f10a018f7d03b3bde6c0b70d063df8d5dd5209861d4467726cf834f5e3d354e2276079dc226aa8e6ece35f5c9b264d64b8229a8bb232829c01e561bcfb07a
languageName: node
linkType: hard
-"@babel/plugin-transform-optional-chaining@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-optional-chaining@npm:7.24.6"
+"@babel/plugin-transform-optional-chaining@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-optional-chaining@npm:7.24.7"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.6"
- "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.24.6"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
+ "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.24.7"
"@babel/plugin-syntax-optional-chaining": "npm:^7.8.3"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/8ee5a500a2309444d4fb27979857598e9c91d804fe23217c51cc208b1bc6b9cd0650b355b1ebd625f180c5f1dc4cb89b5f313c982f7c89d90281a69b24a88ccb
+ checksum: 10c0/b9e3649b299e103b0d1767bbdba56574d065ff776e5350403b7bfd4e3982743c0cdb373d33bdbf94fa3c322d155e45d0aad946acf0aa741b870aed22dfec8b8e
languageName: node
linkType: hard
-"@babel/plugin-transform-parameters@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-parameters@npm:7.24.6"
+"@babel/plugin-transform-parameters@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-parameters@npm:7.24.7"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/d9648924b9c0d35a243c0742c22838932a024205c61f4cc419857e5195edd893a33e6be4f2c8fbd89e925051c7cbe8968029ec2d3e7f2f098bfa682f4e2b9731
+ checksum: 10c0/53bf190d6926771545d5184f1f5f3f5144d0f04f170799ad46a43f683a01fab8d5fe4d2196cf246774530990c31fe1f2b9f0def39f0a5ddbb2340b924f5edf01
languageName: node
linkType: hard
-"@babel/plugin-transform-private-methods@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-private-methods@npm:7.24.6"
+"@babel/plugin-transform-private-methods@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-private-methods@npm:7.24.7"
dependencies:
- "@babel/helper-create-class-features-plugin": "npm:^7.24.6"
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-create-class-features-plugin": "npm:^7.24.7"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/55f93959b2e8aeda818db7cdc7dfdcd5076f5bdc8a819566818004a68969fb7297d617f9d108bf76ac232d6056d9f9d20f73ce10380baa43ff1755c5591aa803
+ checksum: 10c0/5b7bf923b738fbe3ad6c33b260e0a7451be288edfe4ef516303fa787a1870cd87533bfbf61abb779c22ed003c2fc484dec2436fe75a48756f686c0241173d364
languageName: node
linkType: hard
-"@babel/plugin-transform-private-property-in-object@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-private-property-in-object@npm:7.24.6"
+"@babel/plugin-transform-private-property-in-object@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-private-property-in-object@npm:7.24.7"
dependencies:
- "@babel/helper-annotate-as-pure": "npm:^7.24.6"
- "@babel/helper-create-class-features-plugin": "npm:^7.24.6"
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-annotate-as-pure": "npm:^7.24.7"
+ "@babel/helper-create-class-features-plugin": "npm:^7.24.7"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
"@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/c9eb9597362b598a91536375a49ba80cdf13461e849680e040898b103f7998c4d33a7832da5afba9fa51e3473f79cf8605f9ace07a887e386b7801797021631b
+ checksum: 10c0/c6fa7defb90b1b0ed46f24ff94ff2e77f44c1f478d1090e81712f33cf992dda5ba347016f030082a2f770138bac6f4a9c2c1565e9f767a125901c77dd9c239ba
languageName: node
linkType: hard
-"@babel/plugin-transform-property-literals@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-property-literals@npm:7.24.6"
+"@babel/plugin-transform-property-literals@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-property-literals@npm:7.24.7"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/d1195d93406b6c400cdbc9ac57a2b8b58c72cc6480cc03656abfc243be0e2a48133cbb96559c2db95b1c78803daeb538277821540fe19e2a9105905e727ef618
+ checksum: 10c0/52564b58f3d111dc02d241d5892a4b01512e98dfdf6ef11b0ed62f8b11b0acacccef0fc229b44114fe8d1a57a8b70780b11bdd18b807d3754a781a07d8f57433
languageName: node
linkType: hard
@@ -1126,243 +1134,243 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-react-display-name@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-react-display-name@npm:7.24.6"
+"@babel/plugin-transform-react-display-name@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-react-display-name@npm:7.24.7"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/e929d054035fa3b7432bd2b3e5cf280ffd8cf60d1ce80c863c5e0b03ad01bf6ae2546575d2da31cca2ab83d9399ac01a351f20e21af5075d9c0d4c893e4a36bd
+ checksum: 10c0/c14a07a9e75723c96f1a0a306b8a8e899ff1c6a0cc3d62bcda79bb1b54e4319127b258651c513a1a47da152cdc22e16525525a30ae5933a2980c7036fd0b4d24
languageName: node
linkType: hard
"@babel/plugin-transform-react-inline-elements@npm:^7.21.0":
- version: 7.24.6
- resolution: "@babel/plugin-transform-react-inline-elements@npm:7.24.6"
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-react-inline-elements@npm:7.24.7"
dependencies:
- "@babel/helper-builder-react-jsx": "npm:^7.24.6"
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-builder-react-jsx": "npm:^7.24.7"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/b29f32a0c345db24f32569cf7a5626e37dd31c21bb764148757e91f609d41e2d09031ff1ad86e5672d578cf16f513b197ef3ebc8f0650d8314890a34ca68f02c
+ checksum: 10c0/affe44efc641e5dc4de077db74c80e3dee896a5dfea04491cbd8167ac40dcbb6eaa1ad0ba599e4a85071acdaa08732e7f5d9cf3236a2aa635406c232c8f08236
languageName: node
linkType: hard
-"@babel/plugin-transform-react-jsx-development@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-react-jsx-development@npm:7.24.6"
+"@babel/plugin-transform-react-jsx-development@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-react-jsx-development@npm:7.24.7"
dependencies:
- "@babel/plugin-transform-react-jsx": "npm:^7.24.6"
+ "@babel/plugin-transform-react-jsx": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/f899ffa65c7f459a682246a346af0e4132929ffe928cb0d02ae08aac1cf3fb01b2f6e944ef1eaca78f14e94eff935e2bf96aad878030c25ff6de2070a8b72448
+ checksum: 10c0/fce647db50f90a5291681f0f97865d9dc76981262dff71d6d0332e724b85343de5860c26f9e9a79e448d61e1d70916b07ce91e8c7f2b80dceb4b16aee41794d8
languageName: node
linkType: hard
-"@babel/plugin-transform-react-jsx@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-react-jsx@npm:7.24.6"
+"@babel/plugin-transform-react-jsx@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-react-jsx@npm:7.24.7"
dependencies:
- "@babel/helper-annotate-as-pure": "npm:^7.24.6"
- "@babel/helper-module-imports": "npm:^7.24.6"
- "@babel/helper-plugin-utils": "npm:^7.24.6"
- "@babel/plugin-syntax-jsx": "npm:^7.24.6"
- "@babel/types": "npm:^7.24.6"
+ "@babel/helper-annotate-as-pure": "npm:^7.24.7"
+ "@babel/helper-module-imports": "npm:^7.24.7"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
+ "@babel/plugin-syntax-jsx": "npm:^7.24.7"
+ "@babel/types": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/6144f56a76529a82077475583a17be8f0b0b461c83673e650f3894e09dbe2bcdfdbfff089eca2e5e239e119f72cd9562749a9af7eb3f2e3266a730da31cd19f2
+ checksum: 10c0/5c46d2c1c06a30e6bde084839df9cc689bf9c9cb0292105d61c225ca731f64247990724caee7dfc7f817dc964c062e8319e7f05394209590c476b65d75373435
languageName: node
linkType: hard
-"@babel/plugin-transform-react-pure-annotations@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.24.6"
+"@babel/plugin-transform-react-pure-annotations@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.24.7"
dependencies:
- "@babel/helper-annotate-as-pure": "npm:^7.24.6"
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-annotate-as-pure": "npm:^7.24.7"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/7f83c5a3a275dbb9a291dee4642a3a0f2249265346d8d3cc9324fc9ee063c3e35c3853b52752ece603f0ac92b405deb38c4b5307a99a74d3e1c9c32a2cefa465
+ checksum: 10c0/fae517d293d9c93b7b920458c3e4b91cb0400513889af41ba184a5f3acc8bfef27242cc262741bb8f87870df376f1733a0d0f52b966d342e2aaaf5607af8f73d
languageName: node
linkType: hard
-"@babel/plugin-transform-regenerator@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-regenerator@npm:7.24.6"
+"@babel/plugin-transform-regenerator@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-regenerator@npm:7.24.7"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
regenerator-transform: "npm:^0.15.2"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/d17eaa97514d583866182420024b8c22da2c6ca822bdbf16fe7564121564c1844935592dc3315c73d1f78f7c908a4338b1d783618811e694c9bb6d5f9233e58d
+ checksum: 10c0/d2dc2c788fdae9d97217e70d46ba8ca9db0035c398dc3e161552b0c437113719a75c04f201f9c91ddc8d28a1da60d0b0853f616dead98a396abb9c845c44892b
languageName: node
linkType: hard
-"@babel/plugin-transform-reserved-words@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-reserved-words@npm:7.24.6"
+"@babel/plugin-transform-reserved-words@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-reserved-words@npm:7.24.7"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/5d2d4c579bd90c60fc6468a1285b3384e7b650b47d41a937a1590d4aecfc28bd945e82704c6e71cc91aa016b7e78c5594290c1c386edf11ec98e09e36235c5ae
+ checksum: 10c0/2229de2768615e7f5dc0bbc55bc121b5678fd6d2febd46c74a58e42bb894d74cd5955c805880f4e02d0e1cf94f6886270eda7fafc1be9305a1ec3b9fd1d063f5
languageName: node
linkType: hard
"@babel/plugin-transform-runtime@npm:^7.22.4":
- version: 7.24.6
- resolution: "@babel/plugin-transform-runtime@npm:7.24.6"
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-runtime@npm:7.24.7"
dependencies:
- "@babel/helper-module-imports": "npm:^7.24.6"
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-module-imports": "npm:^7.24.7"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
babel-plugin-polyfill-corejs2: "npm:^0.4.10"
babel-plugin-polyfill-corejs3: "npm:^0.10.1"
babel-plugin-polyfill-regenerator: "npm:^0.6.1"
semver: "npm:^6.3.1"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/89c43c1236506ecbfc547b12936283ca41e611430c2d2e6d12bf1cbdb0d80760cdae481951f486946733e1c9ae064cb05f4bc779c65b3288d40963b0c4a20c5c
+ checksum: 10c0/a33f5095872bbba00b8ee553dfe6941477e69a017a2e65e9dd86e80dab5c627635093b796eb1eb22aaaf2f874704f63ad1d99b952b83b59ef6b368ae04e5bb41
languageName: node
linkType: hard
-"@babel/plugin-transform-shorthand-properties@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-shorthand-properties@npm:7.24.6"
+"@babel/plugin-transform-shorthand-properties@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-shorthand-properties@npm:7.24.7"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/4141b5da1d0d20d66ca0affaef8dfc45ed5e954bfa9003eb8aa779842599de443b37c2b265da27693f304c35ab68a682b44098e9eea0d39f8f94072ab616657f
+ checksum: 10c0/41b155bdbb3be66618358488bf7731b3b2e8fff2de3dbfd541847720a9debfcec14db06a117abedd03c9cd786db20a79e2a86509a4f19513f6e1b610520905cf
languageName: node
linkType: hard
-"@babel/plugin-transform-spread@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-spread@npm:7.24.6"
+"@babel/plugin-transform-spread@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-spread@npm:7.24.7"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.6"
- "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.24.6"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
+ "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/6d12da05311690c4a73d775688ba6931b441e96e512377a166a60184292edeac0b17f5154a49e2f1d262a3f80b96e064bc9c88c63b2a6125f0a2132eff9ed585
+ checksum: 10c0/facba1553035f76b0d2930d4ada89a8cd0f45b79579afd35baefbfaf12e3b86096995f4b0c402cf9ee23b3f2ea0a4460c3b1ec0c192d340962c948bb223d4e66
languageName: node
linkType: hard
-"@babel/plugin-transform-sticky-regex@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-sticky-regex@npm:7.24.6"
+"@babel/plugin-transform-sticky-regex@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-sticky-regex@npm:7.24.7"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/2a65f57554f51d3b9cd035513a610f47e46b26dba112b3b9fb42d1c1f2ae153fce8f76294b4721d099817814f57895c656f5b7dccd5df683277da6522c817ee9
+ checksum: 10c0/5a74ed2ed0a3ab51c3d15fcaf09d9e2fe915823535c7a4d7b019813177d559b69677090e189ec3d5d08b619483eb5ad371fbcfbbff5ace2a76ba33ee566a1109
languageName: node
linkType: hard
-"@babel/plugin-transform-template-literals@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-template-literals@npm:7.24.6"
+"@babel/plugin-transform-template-literals@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-template-literals@npm:7.24.7"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/fcde48e9c3ecd7f5f37ceb6908f1edd537d3115fc2f27d187d58fd83b2a13637a1bb3d24589d841529ed081405b951bf1c5d194ea81eff6ad2d88204d153010d
+ checksum: 10c0/3630f966257bcace122f04d3157416a09d40768c44c3a800855da81146b009187daa21859d1c3b7d13f4e19e8888e60613964b175b2275d451200fb6d8d6cfe6
languageName: node
linkType: hard
-"@babel/plugin-transform-typeof-symbol@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-typeof-symbol@npm:7.24.6"
+"@babel/plugin-transform-typeof-symbol@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-typeof-symbol@npm:7.24.7"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/a24b3a3c7b87c6496ee13d2438effd4645868f054397357ec3cbe92a2f0df4152ac7fd7228cb956576c1b772c0675b065d6ad5f5053c382e97dd022015e9a028
+ checksum: 10c0/5649e7260a138681e68b296ab5931e2b1f132f287d6b4131d49b24f9dc20d62902b7e9d63c4d2decd5683b41df35ef4b9b03f58c7f9f65e4c25a6d8bbf04e9e9
languageName: node
linkType: hard
-"@babel/plugin-transform-typescript@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-typescript@npm:7.24.6"
+"@babel/plugin-transform-typescript@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-typescript@npm:7.24.7"
dependencies:
- "@babel/helper-annotate-as-pure": "npm:^7.24.6"
- "@babel/helper-create-class-features-plugin": "npm:^7.24.6"
- "@babel/helper-plugin-utils": "npm:^7.24.6"
- "@babel/plugin-syntax-typescript": "npm:^7.24.6"
+ "@babel/helper-annotate-as-pure": "npm:^7.24.7"
+ "@babel/helper-create-class-features-plugin": "npm:^7.24.7"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
+ "@babel/plugin-syntax-typescript": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/46b054e4d4253187403e392ef30f4dd624d8486a1992703f5ff1b415d4e8d00f474e35fb77bc7a3a16a17330873cadcd5af4a8493c61b16da2dde212b2788ccd
+ checksum: 10c0/e8dacdc153a4c4599014b66eb01b94e3dc933d58d4f0cc3039c1a8f432e77b9df14f34a61964e014b975bf466f3fefd8c4768b3e887d3da1be9dc942799bdfdf
languageName: node
linkType: hard
-"@babel/plugin-transform-unicode-escapes@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-unicode-escapes@npm:7.24.6"
+"@babel/plugin-transform-unicode-escapes@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-unicode-escapes@npm:7.24.7"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/0e4038c589b7a63a2469466a25b78aad4ecb7267732e3c953c3055f9a77c7bee859a71983a08b025179f1b094964f2ebbfca1b6c33de4ead90a0b5ef06ddb47e
+ checksum: 10c0/8b18e2e66af33471a6971289492beff5c240e56727331db1d34c4338a6a368a82a7ed6d57ec911001b6d65643aed76531e1e7cac93265fb3fb2717f54d845e69
languageName: node
linkType: hard
-"@babel/plugin-transform-unicode-property-regex@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.24.6"
+"@babel/plugin-transform-unicode-property-regex@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.24.7"
dependencies:
- "@babel/helper-create-regexp-features-plugin": "npm:^7.24.6"
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-create-regexp-features-plugin": "npm:^7.24.7"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/bca99e00de91d0460dfcb25f285f3606248acc905193c05587e2862c54ddb790c5d8cb45e80927290390cffbcba7620f8af3e74c5301ff0c1c59ce7d47c5629f
+ checksum: 10c0/bc57656eb94584d1b74a385d378818ac2b3fca642e3f649fead8da5fb3f9de22f8461185936915dfb33d5a9104e62e7a47828331248b09d28bb2d59e9276de3e
languageName: node
linkType: hard
-"@babel/plugin-transform-unicode-regex@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-unicode-regex@npm:7.24.6"
+"@babel/plugin-transform-unicode-regex@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-unicode-regex@npm:7.24.7"
dependencies:
- "@babel/helper-create-regexp-features-plugin": "npm:^7.24.6"
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-create-regexp-features-plugin": "npm:^7.24.7"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/ab6e253cfc38c7e8a2844d7ad46f85fdcbe33610b7f92f71045cf0b040438a08f1f1717ab4b84c480537f54e5478db8b404a4ccc2ff846b4e3ed33d373e3b47a
+ checksum: 10c0/83f72a345b751566b601dc4d07e9f2c8f1bc0e0c6f7abb56ceb3095b3c9d304de73f85f2f477a09f8cc7edd5e65afd0ff9e376cdbcbea33bc0c28f3705b38fd9
languageName: node
linkType: hard
-"@babel/plugin-transform-unicode-sets-regex@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.24.6"
+"@babel/plugin-transform-unicode-sets-regex@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.24.7"
dependencies:
- "@babel/helper-create-regexp-features-plugin": "npm:^7.24.6"
- "@babel/helper-plugin-utils": "npm:^7.24.6"
+ "@babel/helper-create-regexp-features-plugin": "npm:^7.24.7"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0
- checksum: 10c0/a52e84f85519fed330e88f7a17611064d2b5f1d0fe2823f8113ed312828e69787888bd023f404e8d35d0bb96461e42e19cdc4f0a44d35959bc86c219a3062237
+ checksum: 10c0/7457c0ee8e80a80cb6fdc1fe54ab115b52815627616ce9151be8ef292fc99d04a910ec24f11382b4f124b89374264396892b086886bd2a9c2317904d87c9b21b
languageName: node
linkType: hard
"@babel/preset-env@npm:^7.11.0, @babel/preset-env@npm:^7.12.1, @babel/preset-env@npm:^7.22.4":
- version: 7.24.6
- resolution: "@babel/preset-env@npm:7.24.6"
+ version: 7.24.7
+ resolution: "@babel/preset-env@npm:7.24.7"
dependencies:
- "@babel/compat-data": "npm:^7.24.6"
- "@babel/helper-compilation-targets": "npm:^7.24.6"
- "@babel/helper-plugin-utils": "npm:^7.24.6"
- "@babel/helper-validator-option": "npm:^7.24.6"
- "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "npm:^7.24.6"
- "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "npm:^7.24.6"
- "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.24.6"
- "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.24.6"
+ "@babel/compat-data": "npm:^7.24.7"
+ "@babel/helper-compilation-targets": "npm:^7.24.7"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
+ "@babel/helper-validator-option": "npm:^7.24.7"
+ "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "npm:^7.24.7"
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "npm:^7.24.7"
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.24.7"
+ "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.24.7"
"@babel/plugin-proposal-private-property-in-object": "npm:7.21.0-placeholder-for-preset-env.2"
"@babel/plugin-syntax-async-generators": "npm:^7.8.4"
"@babel/plugin-syntax-class-properties": "npm:^7.12.13"
"@babel/plugin-syntax-class-static-block": "npm:^7.14.5"
"@babel/plugin-syntax-dynamic-import": "npm:^7.8.3"
"@babel/plugin-syntax-export-namespace-from": "npm:^7.8.3"
- "@babel/plugin-syntax-import-assertions": "npm:^7.24.6"
- "@babel/plugin-syntax-import-attributes": "npm:^7.24.6"
+ "@babel/plugin-syntax-import-assertions": "npm:^7.24.7"
+ "@babel/plugin-syntax-import-attributes": "npm:^7.24.7"
"@babel/plugin-syntax-import-meta": "npm:^7.10.4"
"@babel/plugin-syntax-json-strings": "npm:^7.8.3"
"@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4"
@@ -1374,54 +1382,54 @@ __metadata:
"@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5"
"@babel/plugin-syntax-top-level-await": "npm:^7.14.5"
"@babel/plugin-syntax-unicode-sets-regex": "npm:^7.18.6"
- "@babel/plugin-transform-arrow-functions": "npm:^7.24.6"
- "@babel/plugin-transform-async-generator-functions": "npm:^7.24.6"
- "@babel/plugin-transform-async-to-generator": "npm:^7.24.6"
- "@babel/plugin-transform-block-scoped-functions": "npm:^7.24.6"
- "@babel/plugin-transform-block-scoping": "npm:^7.24.6"
- "@babel/plugin-transform-class-properties": "npm:^7.24.6"
- "@babel/plugin-transform-class-static-block": "npm:^7.24.6"
- "@babel/plugin-transform-classes": "npm:^7.24.6"
- "@babel/plugin-transform-computed-properties": "npm:^7.24.6"
- "@babel/plugin-transform-destructuring": "npm:^7.24.6"
- "@babel/plugin-transform-dotall-regex": "npm:^7.24.6"
- "@babel/plugin-transform-duplicate-keys": "npm:^7.24.6"
- "@babel/plugin-transform-dynamic-import": "npm:^7.24.6"
- "@babel/plugin-transform-exponentiation-operator": "npm:^7.24.6"
- "@babel/plugin-transform-export-namespace-from": "npm:^7.24.6"
- "@babel/plugin-transform-for-of": "npm:^7.24.6"
- "@babel/plugin-transform-function-name": "npm:^7.24.6"
- "@babel/plugin-transform-json-strings": "npm:^7.24.6"
- "@babel/plugin-transform-literals": "npm:^7.24.6"
- "@babel/plugin-transform-logical-assignment-operators": "npm:^7.24.6"
- "@babel/plugin-transform-member-expression-literals": "npm:^7.24.6"
- "@babel/plugin-transform-modules-amd": "npm:^7.24.6"
- "@babel/plugin-transform-modules-commonjs": "npm:^7.24.6"
- "@babel/plugin-transform-modules-systemjs": "npm:^7.24.6"
- "@babel/plugin-transform-modules-umd": "npm:^7.24.6"
- "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.24.6"
- "@babel/plugin-transform-new-target": "npm:^7.24.6"
- "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.24.6"
- "@babel/plugin-transform-numeric-separator": "npm:^7.24.6"
- "@babel/plugin-transform-object-rest-spread": "npm:^7.24.6"
- "@babel/plugin-transform-object-super": "npm:^7.24.6"
- "@babel/plugin-transform-optional-catch-binding": "npm:^7.24.6"
- "@babel/plugin-transform-optional-chaining": "npm:^7.24.6"
- "@babel/plugin-transform-parameters": "npm:^7.24.6"
- "@babel/plugin-transform-private-methods": "npm:^7.24.6"
- "@babel/plugin-transform-private-property-in-object": "npm:^7.24.6"
- "@babel/plugin-transform-property-literals": "npm:^7.24.6"
- "@babel/plugin-transform-regenerator": "npm:^7.24.6"
- "@babel/plugin-transform-reserved-words": "npm:^7.24.6"
- "@babel/plugin-transform-shorthand-properties": "npm:^7.24.6"
- "@babel/plugin-transform-spread": "npm:^7.24.6"
- "@babel/plugin-transform-sticky-regex": "npm:^7.24.6"
- "@babel/plugin-transform-template-literals": "npm:^7.24.6"
- "@babel/plugin-transform-typeof-symbol": "npm:^7.24.6"
- "@babel/plugin-transform-unicode-escapes": "npm:^7.24.6"
- "@babel/plugin-transform-unicode-property-regex": "npm:^7.24.6"
- "@babel/plugin-transform-unicode-regex": "npm:^7.24.6"
- "@babel/plugin-transform-unicode-sets-regex": "npm:^7.24.6"
+ "@babel/plugin-transform-arrow-functions": "npm:^7.24.7"
+ "@babel/plugin-transform-async-generator-functions": "npm:^7.24.7"
+ "@babel/plugin-transform-async-to-generator": "npm:^7.24.7"
+ "@babel/plugin-transform-block-scoped-functions": "npm:^7.24.7"
+ "@babel/plugin-transform-block-scoping": "npm:^7.24.7"
+ "@babel/plugin-transform-class-properties": "npm:^7.24.7"
+ "@babel/plugin-transform-class-static-block": "npm:^7.24.7"
+ "@babel/plugin-transform-classes": "npm:^7.24.7"
+ "@babel/plugin-transform-computed-properties": "npm:^7.24.7"
+ "@babel/plugin-transform-destructuring": "npm:^7.24.7"
+ "@babel/plugin-transform-dotall-regex": "npm:^7.24.7"
+ "@babel/plugin-transform-duplicate-keys": "npm:^7.24.7"
+ "@babel/plugin-transform-dynamic-import": "npm:^7.24.7"
+ "@babel/plugin-transform-exponentiation-operator": "npm:^7.24.7"
+ "@babel/plugin-transform-export-namespace-from": "npm:^7.24.7"
+ "@babel/plugin-transform-for-of": "npm:^7.24.7"
+ "@babel/plugin-transform-function-name": "npm:^7.24.7"
+ "@babel/plugin-transform-json-strings": "npm:^7.24.7"
+ "@babel/plugin-transform-literals": "npm:^7.24.7"
+ "@babel/plugin-transform-logical-assignment-operators": "npm:^7.24.7"
+ "@babel/plugin-transform-member-expression-literals": "npm:^7.24.7"
+ "@babel/plugin-transform-modules-amd": "npm:^7.24.7"
+ "@babel/plugin-transform-modules-commonjs": "npm:^7.24.7"
+ "@babel/plugin-transform-modules-systemjs": "npm:^7.24.7"
+ "@babel/plugin-transform-modules-umd": "npm:^7.24.7"
+ "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.24.7"
+ "@babel/plugin-transform-new-target": "npm:^7.24.7"
+ "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.24.7"
+ "@babel/plugin-transform-numeric-separator": "npm:^7.24.7"
+ "@babel/plugin-transform-object-rest-spread": "npm:^7.24.7"
+ "@babel/plugin-transform-object-super": "npm:^7.24.7"
+ "@babel/plugin-transform-optional-catch-binding": "npm:^7.24.7"
+ "@babel/plugin-transform-optional-chaining": "npm:^7.24.7"
+ "@babel/plugin-transform-parameters": "npm:^7.24.7"
+ "@babel/plugin-transform-private-methods": "npm:^7.24.7"
+ "@babel/plugin-transform-private-property-in-object": "npm:^7.24.7"
+ "@babel/plugin-transform-property-literals": "npm:^7.24.7"
+ "@babel/plugin-transform-regenerator": "npm:^7.24.7"
+ "@babel/plugin-transform-reserved-words": "npm:^7.24.7"
+ "@babel/plugin-transform-shorthand-properties": "npm:^7.24.7"
+ "@babel/plugin-transform-spread": "npm:^7.24.7"
+ "@babel/plugin-transform-sticky-regex": "npm:^7.24.7"
+ "@babel/plugin-transform-template-literals": "npm:^7.24.7"
+ "@babel/plugin-transform-typeof-symbol": "npm:^7.24.7"
+ "@babel/plugin-transform-unicode-escapes": "npm:^7.24.7"
+ "@babel/plugin-transform-unicode-property-regex": "npm:^7.24.7"
+ "@babel/plugin-transform-unicode-regex": "npm:^7.24.7"
+ "@babel/plugin-transform-unicode-sets-regex": "npm:^7.24.7"
"@babel/preset-modules": "npm:0.1.6-no-external-plugins"
babel-plugin-polyfill-corejs2: "npm:^0.4.10"
babel-plugin-polyfill-corejs3: "npm:^0.10.4"
@@ -1430,7 +1438,7 @@ __metadata:
semver: "npm:^6.3.1"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/d837d294197803d550e48d9458a356853a54a0528e7cdc51c2b8a5d8dfe41c6fbc597b4fc67464615a7385198a3db2e839da15cca7b9502fedf27170fc6ef673
+ checksum: 10c0/c6714346f3ccc1271eaa90051c75b8bb57b20ef57408ab68740e2f3552693ae0ee5a4bcce3a00211d40e4947af1f7b8ab422066b953f0095461937fb72d11274
languageName: node
linkType: hard
@@ -1448,33 +1456,33 @@ __metadata:
linkType: hard
"@babel/preset-react@npm:^7.12.5, @babel/preset-react@npm:^7.22.3":
- version: 7.24.6
- resolution: "@babel/preset-react@npm:7.24.6"
+ version: 7.24.7
+ resolution: "@babel/preset-react@npm:7.24.7"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.6"
- "@babel/helper-validator-option": "npm:^7.24.6"
- "@babel/plugin-transform-react-display-name": "npm:^7.24.6"
- "@babel/plugin-transform-react-jsx": "npm:^7.24.6"
- "@babel/plugin-transform-react-jsx-development": "npm:^7.24.6"
- "@babel/plugin-transform-react-pure-annotations": "npm:^7.24.6"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
+ "@babel/helper-validator-option": "npm:^7.24.7"
+ "@babel/plugin-transform-react-display-name": "npm:^7.24.7"
+ "@babel/plugin-transform-react-jsx": "npm:^7.24.7"
+ "@babel/plugin-transform-react-jsx-development": "npm:^7.24.7"
+ "@babel/plugin-transform-react-pure-annotations": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/edc470b86dfcfdedf53feca3f2266bd7f836a300806938a422f4120d39bbdea6a780b9b0a9ac0333e0bb1b8e554699a74cafd135b2a75b02b77ef1b21f7c7f62
+ checksum: 10c0/9658b685b25cedaadd0b65c4e663fbc7f57394b5036ddb4c99b1a75b0711fb83292c1c625d605c05b73413fc7a6dc20e532627f6a39b6dc8d4e00415479b054c
languageName: node
linkType: hard
"@babel/preset-typescript@npm:^7.21.5":
- version: 7.24.6
- resolution: "@babel/preset-typescript@npm:7.24.6"
+ version: 7.24.7
+ resolution: "@babel/preset-typescript@npm:7.24.7"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.24.6"
- "@babel/helper-validator-option": "npm:^7.24.6"
- "@babel/plugin-syntax-jsx": "npm:^7.24.6"
- "@babel/plugin-transform-modules-commonjs": "npm:^7.24.6"
- "@babel/plugin-transform-typescript": "npm:^7.24.6"
+ "@babel/helper-plugin-utils": "npm:^7.24.7"
+ "@babel/helper-validator-option": "npm:^7.24.7"
+ "@babel/plugin-syntax-jsx": "npm:^7.24.7"
+ "@babel/plugin-transform-modules-commonjs": "npm:^7.24.7"
+ "@babel/plugin-transform-typescript": "npm:^7.24.7"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/bfcef91ed80d67301301e17a799814457b57bfd0d85d9897dce6df6ed0b0af155c0f5b2af7a1a122a3f36faaaa1de87ccf9954ce06d2f440898ffdfaf18aab86
+ checksum: 10c0/986bc0978eedb4da33aba8e1e13a3426dd1829515313b7e8f4ba5d8c18aff1663b468939d471814e7acf4045d326ae6cff37239878d169ac3fe53a8fde71f8ee
languageName: node
linkType: hard
@@ -1495,51 +1503,51 @@ __metadata:
linkType: hard
"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.13, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.8, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.2.0, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.22.3, @babel/runtime@npm:^7.23.2, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.3, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2":
- version: 7.24.6
- resolution: "@babel/runtime@npm:7.24.6"
+ version: 7.24.7
+ resolution: "@babel/runtime@npm:7.24.7"
dependencies:
regenerator-runtime: "npm:^0.14.0"
- checksum: 10c0/224ad205de33ea28979baaec89eea4c4d4e9482000dd87d15b97859365511cdd4d06517712504024f5d33a5fb9412f9b91c96f1d923974adf9359e1575cde049
+ checksum: 10c0/b6fa3ec61a53402f3c1d75f4d808f48b35e0dfae0ec8e2bb5c6fc79fb95935da75766e0ca534d0f1c84871f6ae0d2ebdd950727cfadb745a2cdbef13faef5513
languageName: node
linkType: hard
-"@babel/template@npm:^7.24.6, @babel/template@npm:^7.3.3":
- version: 7.24.6
- resolution: "@babel/template@npm:7.24.6"
+"@babel/template@npm:^7.24.7, @babel/template@npm:^7.3.3":
+ version: 7.24.7
+ resolution: "@babel/template@npm:7.24.7"
dependencies:
- "@babel/code-frame": "npm:^7.24.6"
- "@babel/parser": "npm:^7.24.6"
- "@babel/types": "npm:^7.24.6"
- checksum: 10c0/a4d5805770de908b445f7cdcebfcb6eaa07b1ec9c7b78fd3f375a911b1522c249bddae6b96bc4aac24247cc603e3e6cffcf2fe50b4c929dfeb22de289b517525
+ "@babel/code-frame": "npm:^7.24.7"
+ "@babel/parser": "npm:^7.24.7"
+ "@babel/types": "npm:^7.24.7"
+ checksum: 10c0/95b0b3ee80fcef685b7f4426f5713a855ea2cd5ac4da829b213f8fb5afe48a2a14683c2ea04d446dbc7f711c33c5cd4a965ef34dcbe5bc387c9e966b67877ae3
languageName: node
linkType: hard
-"@babel/traverse@npm:7, @babel/traverse@npm:^7.24.6":
- version: 7.24.6
- resolution: "@babel/traverse@npm:7.24.6"
+"@babel/traverse@npm:7, @babel/traverse@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/traverse@npm:7.24.7"
dependencies:
- "@babel/code-frame": "npm:^7.24.6"
- "@babel/generator": "npm:^7.24.6"
- "@babel/helper-environment-visitor": "npm:^7.24.6"
- "@babel/helper-function-name": "npm:^7.24.6"
- "@babel/helper-hoist-variables": "npm:^7.24.6"
- "@babel/helper-split-export-declaration": "npm:^7.24.6"
- "@babel/parser": "npm:^7.24.6"
- "@babel/types": "npm:^7.24.6"
+ "@babel/code-frame": "npm:^7.24.7"
+ "@babel/generator": "npm:^7.24.7"
+ "@babel/helper-environment-visitor": "npm:^7.24.7"
+ "@babel/helper-function-name": "npm:^7.24.7"
+ "@babel/helper-hoist-variables": "npm:^7.24.7"
+ "@babel/helper-split-export-declaration": "npm:^7.24.7"
+ "@babel/parser": "npm:^7.24.7"
+ "@babel/types": "npm:^7.24.7"
debug: "npm:^4.3.1"
globals: "npm:^11.1.0"
- checksum: 10c0/39027d5fc7a241c6b71bb5872c2bdcec53743cd7ef3c151bbe6fd7cf874d15f4bc09e5d7e19e2f534b0eb2c115f5368553885fa4253aa1bc9441c6e5bf9efdaf
+ checksum: 10c0/a5135e589c3f1972b8877805f50a084a04865ccb1d68e5e1f3b94a8841b3485da4142e33413d8fd76bc0e6444531d3adf1f59f359c11ffac452b743d835068ab
languageName: node
linkType: hard
-"@babel/types@npm:^7.0.0, @babel/types@npm:^7.0.0-beta.49, @babel/types@npm:^7.12.11, @babel/types@npm:^7.12.6, @babel/types@npm:^7.20.7, @babel/types@npm:^7.24.6, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3":
- version: 7.24.6
- resolution: "@babel/types@npm:7.24.6"
+"@babel/types@npm:^7.0.0, @babel/types@npm:^7.0.0-beta.49, @babel/types@npm:^7.12.11, @babel/types@npm:^7.12.6, @babel/types@npm:^7.20.7, @babel/types@npm:^7.24.7, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3":
+ version: 7.24.7
+ resolution: "@babel/types@npm:7.24.7"
dependencies:
- "@babel/helper-string-parser": "npm:^7.24.6"
- "@babel/helper-validator-identifier": "npm:^7.24.6"
+ "@babel/helper-string-parser": "npm:^7.24.7"
+ "@babel/helper-validator-identifier": "npm:^7.24.7"
to-fast-properties: "npm:^2.0.0"
- checksum: 10c0/1d94d92d97ef49030ad7f9e14cfccfeb70b1706dabcaa69037e659ec9d2c3178fb005d2088cce40d88dfc1306153d9157fe038a79ea2be92e5e6b99a59ef80cc
+ checksum: 10c0/d9ecbfc3eb2b05fb1e6eeea546836ac30d990f395ef3fe3f75ced777a222c3cfc4489492f72e0ce3d9a5a28860a1ce5f81e66b88cf5088909068b3ff4fab72c1
languageName: node
linkType: hard
@@ -2131,9 +2139,9 @@ __metadata:
languageName: node
linkType: hard
-"@es-joy/jsdoccomment@npm:~0.43.0":
- version: 0.43.0
- resolution: "@es-joy/jsdoccomment@npm:0.43.0"
+"@es-joy/jsdoccomment@npm:~0.43.1":
+ version: 0.43.1
+ resolution: "@es-joy/jsdoccomment@npm:0.43.1"
dependencies:
"@types/eslint": "npm:^8.56.5"
"@types/estree": "npm:^1.0.5"
@@ -2141,7 +2149,7 @@ __metadata:
comment-parser: "npm:1.4.1"
esquery: "npm:^1.5.0"
jsdoc-type-pratt-parser: "npm:~4.0.0"
- checksum: 10c0/862294ed89772a231f309edd68405ece00f6aaf43103210f28410da894a6b697bc1f281c59e813dd37d5b7294f633ee7b874e07a0aa3d72f49504089fc9cb2c4
+ checksum: 10c0/2a4842b0e37eb937d55e3028ab2cd7ece7097e1f8c878bb9e28c3309371844688c2869d25bb949e2664c9ba63e388ea09b769c9f42f77515d328ec40e6fcfed1
languageName: node
linkType: hard
@@ -4112,14 +4120,14 @@ __metadata:
linkType: hard
"@typescript-eslint/eslint-plugin@npm:^7.0.0":
- version: 7.10.0
- resolution: "@typescript-eslint/eslint-plugin@npm:7.10.0"
+ version: 7.11.0
+ resolution: "@typescript-eslint/eslint-plugin@npm:7.11.0"
dependencies:
"@eslint-community/regexpp": "npm:^4.10.0"
- "@typescript-eslint/scope-manager": "npm:7.10.0"
- "@typescript-eslint/type-utils": "npm:7.10.0"
- "@typescript-eslint/utils": "npm:7.10.0"
- "@typescript-eslint/visitor-keys": "npm:7.10.0"
+ "@typescript-eslint/scope-manager": "npm:7.11.0"
+ "@typescript-eslint/type-utils": "npm:7.11.0"
+ "@typescript-eslint/utils": "npm:7.11.0"
+ "@typescript-eslint/visitor-keys": "npm:7.11.0"
graphemer: "npm:^1.4.0"
ignore: "npm:^5.3.1"
natural-compare: "npm:^1.4.0"
@@ -4130,25 +4138,25 @@ __metadata:
peerDependenciesMeta:
typescript:
optional: true
- checksum: 10c0/bf3f0118ea5961c3eb01894678246458a329d82dda9ac7c2f5bfe77896410d05a08a4655e533bcb1ed2a3132ba6421981ec8c2ed0a3545779d9603ea231947ae
+ checksum: 10c0/50fedf832e4de9546569106eab1d10716204ceebc5cc7d62299112c881212270d0f7857e3d6452c07db031d40b58cf27c4d1b1a36043e8e700fc3496e377b54a
languageName: node
linkType: hard
"@typescript-eslint/parser@npm:^7.0.0":
- version: 7.10.0
- resolution: "@typescript-eslint/parser@npm:7.10.0"
+ version: 7.11.0
+ resolution: "@typescript-eslint/parser@npm:7.11.0"
dependencies:
- "@typescript-eslint/scope-manager": "npm:7.10.0"
- "@typescript-eslint/types": "npm:7.10.0"
- "@typescript-eslint/typescript-estree": "npm:7.10.0"
- "@typescript-eslint/visitor-keys": "npm:7.10.0"
+ "@typescript-eslint/scope-manager": "npm:7.11.0"
+ "@typescript-eslint/types": "npm:7.11.0"
+ "@typescript-eslint/typescript-estree": "npm:7.11.0"
+ "@typescript-eslint/visitor-keys": "npm:7.11.0"
debug: "npm:^4.3.4"
peerDependencies:
eslint: ^8.56.0
peerDependenciesMeta:
typescript:
optional: true
- checksum: 10c0/4c4fbf43b5b05d75b766acb803d3dd078c6e080641a77f9e48ba005713466738ea4a71f0564fa3ce520988d65158d14c8c952ba01ccbc431ab4a05935db5ce6d
+ checksum: 10c0/f5d1343fae90ccd91aea8adf194e22ed3eb4b2ea79d03d8a9ca6e7b669a6db306e93138ec64f7020c5b3128619d50304dea1f06043eaff6b015071822cad4972
languageName: node
linkType: hard
@@ -4162,22 +4170,22 @@ __metadata:
languageName: node
linkType: hard
-"@typescript-eslint/scope-manager@npm:7.10.0":
- version: 7.10.0
- resolution: "@typescript-eslint/scope-manager@npm:7.10.0"
+"@typescript-eslint/scope-manager@npm:7.11.0":
+ version: 7.11.0
+ resolution: "@typescript-eslint/scope-manager@npm:7.11.0"
dependencies:
- "@typescript-eslint/types": "npm:7.10.0"
- "@typescript-eslint/visitor-keys": "npm:7.10.0"
- checksum: 10c0/1d4f7ee137b95bd423b5a1b0d03251202dfc19bd8b6adfa5ff5df25fd5aa30e2d8ca50ab0d8d2e92441670ecbc2a82b3c2dbe39a4f268ec1ee1c1e267f7fd1d1
+ "@typescript-eslint/types": "npm:7.11.0"
+ "@typescript-eslint/visitor-keys": "npm:7.11.0"
+ checksum: 10c0/35f9d88f38f2366017b15c9ee752f2605afa8009fa1eaf81c8b2b71fc22ddd2a33fff794a02015c8991a5fa99f315c3d6d76a5957d3fad1ccbb4cd46735c98b5
languageName: node
linkType: hard
-"@typescript-eslint/type-utils@npm:7.10.0":
- version: 7.10.0
- resolution: "@typescript-eslint/type-utils@npm:7.10.0"
+"@typescript-eslint/type-utils@npm:7.11.0":
+ version: 7.11.0
+ resolution: "@typescript-eslint/type-utils@npm:7.11.0"
dependencies:
- "@typescript-eslint/typescript-estree": "npm:7.10.0"
- "@typescript-eslint/utils": "npm:7.10.0"
+ "@typescript-eslint/typescript-estree": "npm:7.11.0"
+ "@typescript-eslint/utils": "npm:7.11.0"
debug: "npm:^4.3.4"
ts-api-utils: "npm:^1.3.0"
peerDependencies:
@@ -4185,7 +4193,7 @@ __metadata:
peerDependenciesMeta:
typescript:
optional: true
- checksum: 10c0/55e9a6690f9cedb79d30abb1990b161affaa2684dac246b743223353812c9c1e3fd2d923c67b193c6a3624a07e1c82c900ce7bf5b6b9891c846f04cb480ebd9f
+ checksum: 10c0/637395cb0f4c424c610e751906a31dcfedcdbd8c479012da6e81f9be6b930f32317bfe170ccb758d93a411b2bd9c4e7e5d18892094466099c6f9c3dceda81a72
languageName: node
linkType: hard
@@ -4196,10 +4204,10 @@ __metadata:
languageName: node
linkType: hard
-"@typescript-eslint/types@npm:7.10.0, @typescript-eslint/types@npm:^7.2.0":
- version: 7.10.0
- resolution: "@typescript-eslint/types@npm:7.10.0"
- checksum: 10c0/f01d9330b93cc362ba7967ab5037396f64742076450e1f93139fa69cbe93a6ece3ed55d68ab780c9b7d07ef4a7c645da410305216a2cfc5dec7eba49ee65ab23
+"@typescript-eslint/types@npm:7.11.0, @typescript-eslint/types@npm:^7.2.0":
+ version: 7.11.0
+ resolution: "@typescript-eslint/types@npm:7.11.0"
+ checksum: 10c0/c5d6c517124017eb44aa180c8ea1fad26ec8e47502f92fd12245ba3141560e69d7f7e35b8aa160ddd5df63a2952af407e2f62cc58b663c86e1f778ffb5b01789
languageName: node
linkType: hard
@@ -4222,12 +4230,12 @@ __metadata:
languageName: node
linkType: hard
-"@typescript-eslint/typescript-estree@npm:7.10.0":
- version: 7.10.0
- resolution: "@typescript-eslint/typescript-estree@npm:7.10.0"
+"@typescript-eslint/typescript-estree@npm:7.11.0":
+ version: 7.11.0
+ resolution: "@typescript-eslint/typescript-estree@npm:7.11.0"
dependencies:
- "@typescript-eslint/types": "npm:7.10.0"
- "@typescript-eslint/visitor-keys": "npm:7.10.0"
+ "@typescript-eslint/types": "npm:7.11.0"
+ "@typescript-eslint/visitor-keys": "npm:7.11.0"
debug: "npm:^4.3.4"
globby: "npm:^11.1.0"
is-glob: "npm:^4.0.3"
@@ -4237,21 +4245,21 @@ __metadata:
peerDependenciesMeta:
typescript:
optional: true
- checksum: 10c0/6200695834c566e52e2fa7331f1a05019f7815969d8c1e1e237b85a99664d36f41ccc16384eff3f8582a0ecb75f1cc315b56ee9283b818da37f24fa4d42f1d7a
+ checksum: 10c0/a4eda43f352d20edebae0c1c221c4fd9de0673a94988cf1ae3f5e4917ef9cdb9ead8d3673ea8dd6e80d9cf3523a47c295be1326a3fae017b277233f4c4b4026b
languageName: node
linkType: hard
-"@typescript-eslint/utils@npm:7.10.0":
- version: 7.10.0
- resolution: "@typescript-eslint/utils@npm:7.10.0"
+"@typescript-eslint/utils@npm:7.11.0":
+ version: 7.11.0
+ resolution: "@typescript-eslint/utils@npm:7.11.0"
dependencies:
"@eslint-community/eslint-utils": "npm:^4.4.0"
- "@typescript-eslint/scope-manager": "npm:7.10.0"
- "@typescript-eslint/types": "npm:7.10.0"
- "@typescript-eslint/typescript-estree": "npm:7.10.0"
+ "@typescript-eslint/scope-manager": "npm:7.11.0"
+ "@typescript-eslint/types": "npm:7.11.0"
+ "@typescript-eslint/typescript-estree": "npm:7.11.0"
peerDependencies:
eslint: ^8.56.0
- checksum: 10c0/6724471f94f2788f59748f7efa2a3a53ea910099993bee2fa5746ab5acacecdc9fcb110c568b18099ddc946ea44919ed394bff2bd055ba81fc69f5e6297b73bf
+ checksum: 10c0/539a7ff8b825ad810fc59a80269094748df1a397a42cdbb212c493fc2486711c7d8fd6d75d4cd8a067822b8e6a11f42c50441977d51c183eec47992506d1cdf8
languageName: node
linkType: hard
@@ -4282,13 +4290,13 @@ __metadata:
languageName: node
linkType: hard
-"@typescript-eslint/visitor-keys@npm:7.10.0":
- version: 7.10.0
- resolution: "@typescript-eslint/visitor-keys@npm:7.10.0"
+"@typescript-eslint/visitor-keys@npm:7.11.0":
+ version: 7.11.0
+ resolution: "@typescript-eslint/visitor-keys@npm:7.11.0"
dependencies:
- "@typescript-eslint/types": "npm:7.10.0"
+ "@typescript-eslint/types": "npm:7.11.0"
eslint-visitor-keys: "npm:^3.4.3"
- checksum: 10c0/049e812bcd28869059d04c7bf3543bb55f5205f468b777439c4f120417fb856fb6024cb1d25291aa12556bd08e84f043a96d754ffb2cde37abb604d6f3c51634
+ checksum: 10c0/664e558d9645896484b7ffc9381837f0d52443bf8d121a5586d02d42ca4d17dc35faf526768c4b1beb52c57c43fae555898eb087651eb1c7a3d60f1085effea1
languageName: node
linkType: hard
@@ -4832,16 +4840,17 @@ __metadata:
languageName: node
linkType: hard
-"array-includes@npm:^3.1.6, array-includes@npm:^3.1.7":
- version: 3.1.7
- resolution: "array-includes@npm:3.1.7"
+"array-includes@npm:^3.1.6, array-includes@npm:^3.1.7, array-includes@npm:^3.1.8":
+ version: 3.1.8
+ resolution: "array-includes@npm:3.1.8"
dependencies:
- call-bind: "npm:^1.0.2"
- define-properties: "npm:^1.2.0"
- es-abstract: "npm:^1.22.1"
- get-intrinsic: "npm:^1.2.1"
+ call-bind: "npm:^1.0.7"
+ define-properties: "npm:^1.2.1"
+ es-abstract: "npm:^1.23.2"
+ es-object-atoms: "npm:^1.0.0"
+ get-intrinsic: "npm:^1.2.4"
is-string: "npm:^1.0.7"
- checksum: 10c0/692907bd7f19d06dc58ccb761f34b58f5dc0b437d2b47a8fe42a1501849a5cf5c27aed3d521a9702667827c2c85a7e75df00a402c438094d87fc43f39ebf9b2b
+ checksum: 10c0/5b1004d203e85873b96ddc493f090c9672fd6c80d7a60b798da8a14bff8a670ff95db5aafc9abc14a211943f05220dacf8ea17638ae0af1a6a47b8c0b48ce370
languageName: node
linkType: hard
@@ -4875,16 +4884,17 @@ __metadata:
languageName: node
linkType: hard
-"array.prototype.findlast@npm:^1.2.4":
- version: 1.2.4
- resolution: "array.prototype.findlast@npm:1.2.4"
+"array.prototype.findlast@npm:^1.2.5":
+ version: 1.2.5
+ resolution: "array.prototype.findlast@npm:1.2.5"
dependencies:
- call-bind: "npm:^1.0.5"
+ call-bind: "npm:^1.0.7"
define-properties: "npm:^1.2.1"
- es-abstract: "npm:^1.22.3"
+ es-abstract: "npm:^1.23.2"
es-errors: "npm:^1.3.0"
+ es-object-atoms: "npm:^1.0.0"
es-shim-unscopables: "npm:^1.0.2"
- checksum: 10c0/4b5145a68ebaa00ef3d61de07c6694cad73d60763079f1e7662b948e5a167b5121b0c1e6feae8df1e42ead07c21699e25242b95cd5c48e094fd530b192aa4150
+ checksum: 10c0/ddc952b829145ab45411b9d6adcb51a8c17c76bf89c9dd64b52d5dffa65d033da8c076ed2e17091779e83bc892b9848188d7b4b33453c5565e65a92863cb2775
languageName: node
linkType: hard
@@ -5068,15 +5078,6 @@ __metadata:
languageName: node
linkType: hard
-"asynciterator.prototype@npm:^1.0.0":
- version: 1.0.0
- resolution: "asynciterator.prototype@npm:1.0.0"
- dependencies:
- has-symbols: "npm:^1.0.3"
- checksum: 10c0/fb76850e57d931ff59fd16b6cddb79b0d34fe45f400b2c3480d38892e72cd089787401687dbdb7cdb14ece402c275d3e02a648760d1489cd493527129c4c6204
- languageName: node
- linkType: hard
-
"asynckit@npm:^0.4.0":
version: 0.4.0
resolution: "asynckit@npm:0.4.0"
@@ -5132,7 +5133,7 @@ __metadata:
languageName: node
linkType: hard
-"available-typed-arrays@npm:^1.0.6, available-typed-arrays@npm:^1.0.7":
+"available-typed-arrays@npm:^1.0.7":
version: 1.0.7
resolution: "available-typed-arrays@npm:1.0.7"
dependencies:
@@ -5818,7 +5819,7 @@ __metadata:
languageName: node
linkType: hard
-"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.6, call-bind@npm:^1.0.7":
+"call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.6, call-bind@npm:^1.0.7":
version: 1.0.7
resolution: "call-bind@npm:1.0.7"
dependencies:
@@ -6732,9 +6733,9 @@ __metadata:
languageName: node
linkType: hard
-"cssnano-preset-default@npm:^7.0.1":
- version: 7.0.1
- resolution: "cssnano-preset-default@npm:7.0.1"
+"cssnano-preset-default@npm:^7.0.2":
+ version: 7.0.2
+ resolution: "cssnano-preset-default@npm:7.0.2"
dependencies:
browserslist: "npm:^4.23.0"
css-declaration-sorter: "npm:^7.2.0"
@@ -6746,12 +6747,12 @@ __metadata:
postcss-discard-duplicates: "npm:^7.0.0"
postcss-discard-empty: "npm:^7.0.0"
postcss-discard-overridden: "npm:^7.0.0"
- postcss-merge-longhand: "npm:^7.0.0"
- postcss-merge-rules: "npm:^7.0.0"
+ postcss-merge-longhand: "npm:^7.0.1"
+ postcss-merge-rules: "npm:^7.0.1"
postcss-minify-font-values: "npm:^7.0.0"
postcss-minify-gradients: "npm:^7.0.0"
postcss-minify-params: "npm:^7.0.0"
- postcss-minify-selectors: "npm:^7.0.0"
+ postcss-minify-selectors: "npm:^7.0.1"
postcss-normalize-charset: "npm:^7.0.0"
postcss-normalize-display-values: "npm:^7.0.0"
postcss-normalize-positions: "npm:^7.0.0"
@@ -6764,11 +6765,11 @@ __metadata:
postcss-ordered-values: "npm:^7.0.0"
postcss-reduce-initial: "npm:^7.0.0"
postcss-reduce-transforms: "npm:^7.0.0"
- postcss-svgo: "npm:^7.0.0"
- postcss-unique-selectors: "npm:^7.0.0"
+ postcss-svgo: "npm:^7.0.1"
+ postcss-unique-selectors: "npm:^7.0.1"
peerDependencies:
postcss: ^8.4.31
- checksum: 10c0/bee65239d25de2ba87e85b4091cbc1cac9ba1b57c9f803dff5a71ea8a55a885045805840dd732be284c28cca6343dece37fc76d7096aba37cfa02eff2ee7714c
+ checksum: 10c0/7c66240594c1d7a0cc761e755236228b17251455aa57abc45be0631f7de0fde070c23b0e41ffa200d39cd8351718514217d8c7a8cc4f06b54289dc1d555dfeb2
languageName: node
linkType: hard
@@ -6782,14 +6783,14 @@ __metadata:
linkType: hard
"cssnano@npm:^7.0.0":
- version: 7.0.1
- resolution: "cssnano@npm:7.0.1"
+ version: 7.0.2
+ resolution: "cssnano@npm:7.0.2"
dependencies:
- cssnano-preset-default: "npm:^7.0.1"
+ cssnano-preset-default: "npm:^7.0.2"
lilconfig: "npm:^3.1.1"
peerDependencies:
postcss: ^8.4.31
- checksum: 10c0/8b17d13efe98ec2db2fbde9ca24e91842b9afe2f80becc5e4271ee1170d77cf73eed3cdc2f35ed51bacdeac763ff85db45ae8e9627a8862bf01d457a819a640e
+ checksum: 10c0/ad43d8c2e96fa1022fc5103064e4f08da3fdc5501a946d455edf0b81981b58cd06ad2d3f0c68d666e2b687c10c02ffbb383252aa34da0ddc3bd4d075f4a922c7
languageName: node
linkType: hard
@@ -6878,6 +6879,39 @@ __metadata:
languageName: node
linkType: hard
+"data-view-buffer@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "data-view-buffer@npm:1.0.1"
+ dependencies:
+ call-bind: "npm:^1.0.6"
+ es-errors: "npm:^1.3.0"
+ is-data-view: "npm:^1.0.1"
+ checksum: 10c0/8984119e59dbed906a11fcfb417d7d861936f16697a0e7216fe2c6c810f6b5e8f4a5281e73f2c28e8e9259027190ac4a33e2a65fdd7fa86ac06b76e838918583
+ languageName: node
+ linkType: hard
+
+"data-view-byte-length@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "data-view-byte-length@npm:1.0.1"
+ dependencies:
+ call-bind: "npm:^1.0.7"
+ es-errors: "npm:^1.3.0"
+ is-data-view: "npm:^1.0.1"
+ checksum: 10c0/b7d9e48a0cf5aefed9ab7d123559917b2d7e0d65531f43b2fd95b9d3a6b46042dd3fca597c42bba384e66b70d7ad66ff23932f8367b241f53d93af42cfe04ec2
+ languageName: node
+ linkType: hard
+
+"data-view-byte-offset@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "data-view-byte-offset@npm:1.0.0"
+ dependencies:
+ call-bind: "npm:^1.0.6"
+ es-errors: "npm:^1.3.0"
+ is-data-view: "npm:^1.0.1"
+ checksum: 10c0/21b0d2e53fd6e20cc4257c873bf6d36d77bd6185624b84076c0a1ddaa757b49aaf076254006341d35568e89f52eecd1ccb1a502cfb620f2beca04f48a6a62a8f
+ languageName: node
+ linkType: hard
+
"dateformat@npm:^4.6.3":
version: 4.6.3
resolution: "dateformat@npm:4.6.3"
@@ -6993,7 +7027,7 @@ __metadata:
languageName: node
linkType: hard
-"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.2":
+"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.2, define-data-property@npm:^1.1.4":
version: 1.1.4
resolution: "define-data-property@npm:1.1.4"
dependencies:
@@ -7551,16 +7585,20 @@ __metadata:
languageName: node
linkType: hard
-"es-abstract@npm:^1.17.2, es-abstract@npm:^1.20.4, es-abstract@npm:^1.21.2, es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.22.4":
- version: 1.22.5
- resolution: "es-abstract@npm:1.22.5"
+"es-abstract@npm:^1.17.2, es-abstract@npm:^1.20.4, es-abstract@npm:^1.21.2, es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3":
+ version: 1.23.3
+ resolution: "es-abstract@npm:1.23.3"
dependencies:
array-buffer-byte-length: "npm:^1.0.1"
arraybuffer.prototype.slice: "npm:^1.0.3"
available-typed-arrays: "npm:^1.0.7"
call-bind: "npm:^1.0.7"
+ data-view-buffer: "npm:^1.0.1"
+ data-view-byte-length: "npm:^1.0.1"
+ data-view-byte-offset: "npm:^1.0.0"
es-define-property: "npm:^1.0.0"
es-errors: "npm:^1.3.0"
+ es-object-atoms: "npm:^1.0.0"
es-set-tostringtag: "npm:^2.0.3"
es-to-primitive: "npm:^1.2.1"
function.prototype.name: "npm:^1.1.6"
@@ -7571,10 +7609,11 @@ __metadata:
has-property-descriptors: "npm:^1.0.2"
has-proto: "npm:^1.0.3"
has-symbols: "npm:^1.0.3"
- hasown: "npm:^2.0.1"
+ hasown: "npm:^2.0.2"
internal-slot: "npm:^1.0.7"
is-array-buffer: "npm:^3.0.4"
is-callable: "npm:^1.2.7"
+ is-data-view: "npm:^1.0.1"
is-negative-zero: "npm:^2.0.3"
is-regex: "npm:^1.1.4"
is-shared-array-buffer: "npm:^1.0.3"
@@ -7585,18 +7624,18 @@ __metadata:
object-keys: "npm:^1.1.1"
object.assign: "npm:^4.1.5"
regexp.prototype.flags: "npm:^1.5.2"
- safe-array-concat: "npm:^1.1.0"
+ safe-array-concat: "npm:^1.1.2"
safe-regex-test: "npm:^1.0.3"
- string.prototype.trim: "npm:^1.2.8"
- string.prototype.trimend: "npm:^1.0.7"
- string.prototype.trimstart: "npm:^1.0.7"
+ string.prototype.trim: "npm:^1.2.9"
+ string.prototype.trimend: "npm:^1.0.8"
+ string.prototype.trimstart: "npm:^1.0.8"
typed-array-buffer: "npm:^1.0.2"
typed-array-byte-length: "npm:^1.0.1"
typed-array-byte-offset: "npm:^1.0.2"
- typed-array-length: "npm:^1.0.5"
+ typed-array-length: "npm:^1.0.6"
unbox-primitive: "npm:^1.0.2"
- which-typed-array: "npm:^1.1.14"
- checksum: 10c0/4bca5a60f0dff6c0a5690d8e51374cfcb8760d5dbbb1069174b4d41461cf4e0c3e0c1993bccbc5aa0799ff078199f1bcde2122b8709e0d17c2beffafff01010a
+ which-typed-array: "npm:^1.1.15"
+ checksum: 10c0/d27e9afafb225c6924bee9971a7f25f20c314f2d6cb93a63cada4ac11dcf42040896a6c22e5fb8f2a10767055ed4ddf400be3b1eb12297d281726de470b75666
languageName: node
linkType: hard
@@ -7623,30 +7662,38 @@ __metadata:
languageName: node
linkType: hard
-"es-iterator-helpers@npm:^1.0.15, es-iterator-helpers@npm:^1.0.17":
- version: 1.0.17
- resolution: "es-iterator-helpers@npm:1.0.17"
+"es-iterator-helpers@npm:^1.0.15, es-iterator-helpers@npm:^1.0.19":
+ version: 1.0.19
+ resolution: "es-iterator-helpers@npm:1.0.19"
dependencies:
- asynciterator.prototype: "npm:^1.0.0"
call-bind: "npm:^1.0.7"
define-properties: "npm:^1.2.1"
- es-abstract: "npm:^1.22.4"
+ es-abstract: "npm:^1.23.3"
es-errors: "npm:^1.3.0"
- es-set-tostringtag: "npm:^2.0.2"
+ es-set-tostringtag: "npm:^2.0.3"
function-bind: "npm:^1.1.2"
get-intrinsic: "npm:^1.2.4"
globalthis: "npm:^1.0.3"
has-property-descriptors: "npm:^1.0.2"
- has-proto: "npm:^1.0.1"
+ has-proto: "npm:^1.0.3"
has-symbols: "npm:^1.0.3"
internal-slot: "npm:^1.0.7"
iterator.prototype: "npm:^1.1.2"
- safe-array-concat: "npm:^1.1.0"
- checksum: 10c0/d0f281257e7165f068fd4fc3beb63d07ae4f18fbef02a2bbe4a39272b764164c1ce3311ae7c5429ac30003aef290fcdf569050e4a9ba3560e044440f68e9a47c
+ safe-array-concat: "npm:^1.1.2"
+ checksum: 10c0/ae8f0241e383b3d197383b9842c48def7fce0255fb6ed049311b686ce295595d9e389b466f6a1b7d4e7bb92d82f5e716d6fae55e20c1040249bf976743b038c5
languageName: node
linkType: hard
-"es-set-tostringtag@npm:^2.0.2, es-set-tostringtag@npm:^2.0.3":
+"es-object-atoms@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "es-object-atoms@npm:1.0.0"
+ dependencies:
+ es-errors: "npm:^1.3.0"
+ checksum: 10c0/1fed3d102eb27ab8d983337bb7c8b159dd2a1e63ff833ec54eea1311c96d5b08223b433060ba240541ca8adba9eee6b0a60cdbf2f80634b784febc9cc8b687b4
+ languageName: node
+ linkType: hard
+
+"es-set-tostringtag@npm:^2.0.3":
version: 2.0.3
resolution: "es-set-tostringtag@npm:2.0.3"
dependencies:
@@ -7827,20 +7874,20 @@ __metadata:
linkType: hard
"eslint-plugin-jsdoc@npm:^48.0.0":
- version: 48.2.6
- resolution: "eslint-plugin-jsdoc@npm:48.2.6"
+ version: 48.2.7
+ resolution: "eslint-plugin-jsdoc@npm:48.2.7"
dependencies:
- "@es-joy/jsdoccomment": "npm:~0.43.0"
+ "@es-joy/jsdoccomment": "npm:~0.43.1"
are-docs-informative: "npm:^0.0.2"
comment-parser: "npm:1.4.1"
debug: "npm:^4.3.4"
escape-string-regexp: "npm:^4.0.0"
esquery: "npm:^1.5.0"
- semver: "npm:^7.6.1"
+ semver: "npm:^7.6.2"
spdx-expression-parse: "npm:^4.0.0"
peerDependencies:
eslint: ^7.0.0 || ^8.0.0 || ^9.0.0
- checksum: 10c0/9f01b3000aa31f17767786c62caf62f1e8c4b88bfef04b207d3b1de785be287cc2da3ad16ed32afacd5f6e6a9b76ebf3369069be416ce2228c44cd6d084fcd8f
+ checksum: 10c0/74d0f95b3d880dd4221dbc0b9341266a6cce3b8ca8d3e30032223af3552364643d6b82ad733d9bc06a20f0d640f21e4d8f5a4b00901d1771572625178b8c40c3
languageName: node
linkType: hard
@@ -7889,30 +7936,30 @@ __metadata:
linkType: hard
"eslint-plugin-react@npm:^7.33.2":
- version: 7.34.1
- resolution: "eslint-plugin-react@npm:7.34.1"
+ version: 7.34.2
+ resolution: "eslint-plugin-react@npm:7.34.2"
dependencies:
- array-includes: "npm:^3.1.7"
- array.prototype.findlast: "npm:^1.2.4"
+ array-includes: "npm:^3.1.8"
+ array.prototype.findlast: "npm:^1.2.5"
array.prototype.flatmap: "npm:^1.3.2"
array.prototype.toreversed: "npm:^1.1.2"
array.prototype.tosorted: "npm:^1.1.3"
doctrine: "npm:^2.1.0"
- es-iterator-helpers: "npm:^1.0.17"
+ es-iterator-helpers: "npm:^1.0.19"
estraverse: "npm:^5.3.0"
jsx-ast-utils: "npm:^2.4.1 || ^3.0.0"
minimatch: "npm:^3.1.2"
- object.entries: "npm:^1.1.7"
- object.fromentries: "npm:^2.0.7"
- object.hasown: "npm:^1.1.3"
- object.values: "npm:^1.1.7"
+ object.entries: "npm:^1.1.8"
+ object.fromentries: "npm:^2.0.8"
+ object.hasown: "npm:^1.1.4"
+ object.values: "npm:^1.2.0"
prop-types: "npm:^15.8.1"
resolve: "npm:^2.0.0-next.5"
semver: "npm:^6.3.1"
- string.prototype.matchall: "npm:^4.0.10"
+ string.prototype.matchall: "npm:^4.0.11"
peerDependencies:
eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
- checksum: 10c0/7c61b1314d37a4ac2f2474f9571f801f1a1a5d81dcd4abbb5d07145406518722fb792367267757ee116bde254be9753242d6b93c9619110398b3fe1746e4848c
+ checksum: 10c0/37dc04424da8626f20a071466e7238d53ed111c53e5e5398d813ac2cf76a2078f00d91f7833fe5b2f0fc98f2688a75b36e78e9ada9f1068705d23c7031094316
languageName: node
linkType: hard
@@ -8404,12 +8451,12 @@ __metadata:
languageName: node
linkType: hard
-"file-entry-cache@npm:^8.0.0":
- version: 8.0.0
- resolution: "file-entry-cache@npm:8.0.0"
+"file-entry-cache@npm:^9.0.0":
+ version: 9.0.0
+ resolution: "file-entry-cache@npm:9.0.0"
dependencies:
- flat-cache: "npm:^4.0.0"
- checksum: 10c0/9e2b5938b1cd9b6d7e3612bdc533afd4ac17b2fc646569e9a8abbf2eb48e5eb8e316bc38815a3ef6a1b456f4107f0d0f055a614ca613e75db6bf9ff4d72c1638
+ flat-cache: "npm:^5.0.0"
+ checksum: 10c0/07b0a4f062dc0aa258f3e1b06ac083ea25313f5e289943e146fafdaf3315dcc031635545eea7fe98fe5598b91d6c7f48dba7a251dd7ac20108a6ebf7d00b0b1c
languageName: node
linkType: hard
@@ -8554,14 +8601,13 @@ __metadata:
languageName: node
linkType: hard
-"flat-cache@npm:^4.0.0":
- version: 4.0.0
- resolution: "flat-cache@npm:4.0.0"
+"flat-cache@npm:^5.0.0":
+ version: 5.0.0
+ resolution: "flat-cache@npm:5.0.0"
dependencies:
- flatted: "npm:^3.2.9"
+ flatted: "npm:^3.3.1"
keyv: "npm:^4.5.4"
- rimraf: "npm:^5.0.5"
- checksum: 10c0/8f99e27bb3de94e91e7b4ca5120488cdc2b7f8cd952a538f1a566101963057eb42ca318e9fac0d36987dcca34316ff04b61c1dc3dcc8084f6f5e801a52a8e547
+ checksum: 10c0/847f25eefec5d6614fdce76dc6097ee98f63fd4dfbcb908718905ac56610f939f4c28b1f908d6e8857d49286fe73235095d2e7ac9df096c35a3e8a15204c361b
languageName: node
linkType: hard
@@ -8574,10 +8620,10 @@ __metadata:
languageName: node
linkType: hard
-"flatted@npm:^3.2.9":
- version: 3.2.9
- resolution: "flatted@npm:3.2.9"
- checksum: 10c0/5c91c5a0a21bbc0b07b272231e5b4efe6b822bcb4ad317caf6bb06984be4042a9e9045026307da0fdb4583f1f545e317a67ef1231a59e71f7fced3cc429cfc53
+"flatted@npm:^3.2.9, flatted@npm:^3.3.1":
+ version: 3.3.1
+ resolution: "flatted@npm:3.3.1"
+ checksum: 10c0/324166b125ee07d4ca9bcf3a5f98d915d5db4f39d711fba640a3178b959919aae1f7cfd8aabcfef5826ed8aa8a2aa14cc85b2d7d18ff638ddf4ae3df39573eaf
languageName: node
linkType: hard
@@ -8796,7 +8842,7 @@ __metadata:
languageName: node
linkType: hard
-"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.2, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4":
+"get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4":
version: 1.2.4
resolution: "get-intrinsic@npm:1.2.4"
dependencies:
@@ -8901,7 +8947,7 @@ __metadata:
languageName: node
linkType: hard
-"glob@npm:^10.2.2, glob@npm:^10.2.6, glob@npm:^10.3.10, glob@npm:^10.3.7":
+"glob@npm:^10.2.2, glob@npm:^10.2.6, glob@npm:^10.3.10":
version: 10.4.1
resolution: "glob@npm:10.4.1"
dependencies:
@@ -9116,7 +9162,7 @@ __metadata:
languageName: node
linkType: hard
-"has-tostringtag@npm:^1.0.0, has-tostringtag@npm:^1.0.1, has-tostringtag@npm:^1.0.2":
+"has-tostringtag@npm:^1.0.0, has-tostringtag@npm:^1.0.2":
version: 1.0.2
resolution: "has-tostringtag@npm:1.0.2"
dependencies:
@@ -9185,12 +9231,12 @@ __metadata:
languageName: node
linkType: hard
-"hasown@npm:^2.0.0, hasown@npm:^2.0.1":
- version: 2.0.1
- resolution: "hasown@npm:2.0.1"
+"hasown@npm:^2.0.0, hasown@npm:^2.0.1, hasown@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "hasown@npm:2.0.2"
dependencies:
function-bind: "npm:^1.1.2"
- checksum: 10c0/9e27e70e8e4204f4124c8f99950d1ba2b1f5174864fd39ff26da190f9ea6488c1b3927dcc64981c26d1f637a971783c9489d62c829d393ea509e6f1ba20370bb
+ checksum: 10c0/3769d434703b8ac66b209a4cca0737519925bbdb61dd887f93a16372b14694c63ff4e797686d87c90f08168e81082248b9b028bad60d4da9e0d1148766f56eb9
languageName: node
linkType: hard
@@ -9635,7 +9681,7 @@ __metadata:
languageName: node
linkType: hard
-"internal-slot@npm:^1.0.5, internal-slot@npm:^1.0.7":
+"internal-slot@npm:^1.0.7":
version: 1.0.7
resolution: "internal-slot@npm:1.0.7"
dependencies:
@@ -9867,6 +9913,15 @@ __metadata:
languageName: node
linkType: hard
+"is-data-view@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "is-data-view@npm:1.0.1"
+ dependencies:
+ is-typed-array: "npm:^1.1.13"
+ checksum: 10c0/a3e6ec84efe303da859107aed9b970e018e2bee7ffcb48e2f8096921a493608134240e672a2072577e5f23a729846241d9634806e8a0e51d9129c56d5f65442d
+ languageName: node
+ linkType: hard
+
"is-date-object@npm:^1.0.1, is-date-object@npm:^1.0.5":
version: 1.0.5
resolution: "is-date-object@npm:1.0.5"
@@ -11743,7 +11798,7 @@ __metadata:
languageName: node
linkType: hard
-"micromatch@npm:^4.0.4, micromatch@npm:^4.0.5, micromatch@npm:~4.0.7":
+"micromatch@npm:^4.0.4, micromatch@npm:^4.0.7, micromatch@npm:~4.0.7":
version: 4.0.7
resolution: "micromatch@npm:4.0.7"
dependencies:
@@ -12324,7 +12379,7 @@ __metadata:
languageName: node
linkType: hard
-"object-inspect@npm:^1.13.1, object-inspect@npm:^1.9.0":
+"object-inspect@npm:^1.13.1":
version: 1.13.1
resolution: "object-inspect@npm:1.13.1"
checksum: 10c0/fad603f408e345c82e946abdf4bfd774260a5ed3e5997a0b057c44153ac32c7271ff19e3a5ae39c858da683ba045ccac2f65245c12763ce4e8594f818f4a648d
@@ -12369,25 +12424,26 @@ __metadata:
languageName: node
linkType: hard
-"object.entries@npm:^1.1.7":
- version: 1.1.7
- resolution: "object.entries@npm:1.1.7"
+"object.entries@npm:^1.1.7, object.entries@npm:^1.1.8":
+ version: 1.1.8
+ resolution: "object.entries@npm:1.1.8"
dependencies:
- call-bind: "npm:^1.0.2"
- define-properties: "npm:^1.2.0"
- es-abstract: "npm:^1.22.1"
- checksum: 10c0/3ad1899cc7bf14546bf28f4a9b363ae8690b90948fcfbcac4c808395435d760f26193d9cae95337ce0e3c1e5c1f4fa45f7b46b31b68d389e9e117fce38775d86
+ call-bind: "npm:^1.0.7"
+ define-properties: "npm:^1.2.1"
+ es-object-atoms: "npm:^1.0.0"
+ checksum: 10c0/db9ea979d2956a3bc26c262da4a4d212d36f374652cc4c13efdd069c1a519c16571c137e2893d1c46e1cb0e15c88fd6419eaf410c945f329f09835487d7e65d3
languageName: node
linkType: hard
-"object.fromentries@npm:^2.0.7":
- version: 2.0.7
- resolution: "object.fromentries@npm:2.0.7"
+"object.fromentries@npm:^2.0.7, object.fromentries@npm:^2.0.8":
+ version: 2.0.8
+ resolution: "object.fromentries@npm:2.0.8"
dependencies:
- call-bind: "npm:^1.0.2"
- define-properties: "npm:^1.2.0"
- es-abstract: "npm:^1.22.1"
- checksum: 10c0/071745c21f6fc9e6c914691f2532c1fb60ad967e5ddc52801d09958b5de926566299d07ae14466452a7efd29015f9145d6c09c573d93a0dc6f1683ee0ec2b93b
+ call-bind: "npm:^1.0.7"
+ define-properties: "npm:^1.2.1"
+ es-abstract: "npm:^1.23.2"
+ es-object-atoms: "npm:^1.0.0"
+ checksum: 10c0/cd4327e6c3369cfa805deb4cbbe919bfb7d3aeebf0bcaba291bb568ea7169f8f8cdbcabe2f00b40db0c20cd20f08e11b5f3a5a36fb7dd3fe04850c50db3bf83b
languageName: node
linkType: hard
@@ -12416,13 +12472,14 @@ __metadata:
languageName: node
linkType: hard
-"object.hasown@npm:^1.1.3":
- version: 1.1.3
- resolution: "object.hasown@npm:1.1.3"
+"object.hasown@npm:^1.1.4":
+ version: 1.1.4
+ resolution: "object.hasown@npm:1.1.4"
dependencies:
- define-properties: "npm:^1.2.0"
- es-abstract: "npm:^1.22.1"
- checksum: 10c0/8a41ba4fb1208a85c2275e9b5098071beacc24345b9a71ab98ef0a1c61b34dc74c6b460ff1e1884c33843d8f2553df64a10eec2b74b3ed009e3b2710c826bd2c
+ define-properties: "npm:^1.2.1"
+ es-abstract: "npm:^1.23.2"
+ es-object-atoms: "npm:^1.0.0"
+ checksum: 10c0/f23187b08d874ef1aea060118c8259eb7f99f93c15a50771d710569534119062b90e087b92952b2d0fb1bb8914d61fb0b43c57fb06f622aaad538fe6868ab987
languageName: node
linkType: hard
@@ -12435,14 +12492,14 @@ __metadata:
languageName: node
linkType: hard
-"object.values@npm:^1.1.0, object.values@npm:^1.1.6, object.values@npm:^1.1.7":
- version: 1.1.7
- resolution: "object.values@npm:1.1.7"
+"object.values@npm:^1.1.0, object.values@npm:^1.1.6, object.values@npm:^1.1.7, object.values@npm:^1.2.0":
+ version: 1.2.0
+ resolution: "object.values@npm:1.2.0"
dependencies:
- call-bind: "npm:^1.0.2"
- define-properties: "npm:^1.2.0"
- es-abstract: "npm:^1.22.1"
- checksum: 10c0/e869d6a37fb7afdd0054dea49036d6ccebb84854a8848a093bbd1bc516f53e690bba88f0bc3e83fdfa74c601469ee6989c9b13359cda9604144c6e732fad3b6b
+ call-bind: "npm:^1.0.7"
+ define-properties: "npm:^1.2.1"
+ es-object-atoms: "npm:^1.0.0"
+ checksum: 10c0/15809dc40fd6c5529501324fec5ff08570b7d70fb5ebbe8e2b3901afec35cf2b3dc484d1210c6c642cd3e7e0a5e18dd1d6850115337fef46bdae14ab0cb18ac3
languageName: node
linkType: hard
@@ -12916,8 +12973,8 @@ __metadata:
linkType: hard
"pg@npm:^8.5.0":
- version: 8.11.5
- resolution: "pg@npm:8.11.5"
+ version: 8.12.0
+ resolution: "pg@npm:8.12.0"
dependencies:
pg-cloudflare: "npm:^1.1.1"
pg-connection-string: "npm:^2.6.4"
@@ -12933,7 +12990,7 @@ __metadata:
peerDependenciesMeta:
pg-native:
optional: true
- checksum: 10c0/20f29a41a99bad5931faf4d4a01e7be7fb27e5b5338fdfb06d2368e295c3d3d4ef49958ad57d2b17bad108e5c84574db6244ed8221e6b77a767f64ef12564119
+ checksum: 10c0/973e49b5e7327c42fc62806efa8c824159ab7a0b676cefe6eeb51a59b6e226587911ec27697f36c18d69e58a7f4f0b76d0829364087194d13ed431ab7c9c417a
languageName: node
linkType: hard
@@ -13433,29 +13490,29 @@ __metadata:
languageName: node
linkType: hard
-"postcss-merge-longhand@npm:^7.0.0":
- version: 7.0.0
- resolution: "postcss-merge-longhand@npm:7.0.0"
+"postcss-merge-longhand@npm:^7.0.1":
+ version: 7.0.1
+ resolution: "postcss-merge-longhand@npm:7.0.1"
dependencies:
postcss-value-parser: "npm:^4.2.0"
- stylehacks: "npm:^7.0.0"
+ stylehacks: "npm:^7.0.1"
peerDependencies:
postcss: ^8.4.31
- checksum: 10c0/5f814f396a5107dcb5e74c2d4e55ebcd03b9bc2b3619ed7aea63a441854023ce349bc371d30aec1ac33a375139afac02709e7721e055b5e624701ac6576e8a10
+ checksum: 10c0/e3d20502e65c82c9c4ba2e400bd093ee6b9c1b0019618ccd50eb40ef0e496206dd518c7e655a6986d780d5a52576e32e8f310d00484b15f67c77664a148df6eb
languageName: node
linkType: hard
-"postcss-merge-rules@npm:^7.0.0":
- version: 7.0.0
- resolution: "postcss-merge-rules@npm:7.0.0"
+"postcss-merge-rules@npm:^7.0.1":
+ version: 7.0.1
+ resolution: "postcss-merge-rules@npm:7.0.1"
dependencies:
browserslist: "npm:^4.23.0"
caniuse-api: "npm:^3.0.0"
cssnano-utils: "npm:^5.0.0"
- postcss-selector-parser: "npm:^6.0.16"
+ postcss-selector-parser: "npm:^6.1.0"
peerDependencies:
postcss: ^8.4.31
- checksum: 10c0/d9cb3a4e55db57aa7ba0bb1caefb82db93c8493d2b3db66091dae9d5794ca04729e660115765ff254d0eb960e4db037f6c5b92562b396b05216888d12acc08e0
+ checksum: 10c0/d380c162327e7aad59efb55cfddc5ec4e3bf51d18b07b832fdd876505279bac3cb44511ada8e1e1992428dcec4f64c7ec457b6ff9109063c5a61abf4b59b7176
languageName: node
linkType: hard
@@ -13496,14 +13553,14 @@ __metadata:
languageName: node
linkType: hard
-"postcss-minify-selectors@npm:^7.0.0":
- version: 7.0.0
- resolution: "postcss-minify-selectors@npm:7.0.0"
+"postcss-minify-selectors@npm:^7.0.1":
+ version: 7.0.1
+ resolution: "postcss-minify-selectors@npm:7.0.1"
dependencies:
- postcss-selector-parser: "npm:^6.0.16"
+ postcss-selector-parser: "npm:^6.1.0"
peerDependencies:
postcss: ^8.4.31
- checksum: 10c0/6baf0ea71b8dfd01bdb5b516d01aa00244c55cad8d9c674358d735cef2a6aca6586dd480d419cc8d3f470e6d2d7d19354592044f19766993caf9800d3d7e0d36
+ checksum: 10c0/a8ff69657fb1808d8f0f105b13a416426902d6f498a4b7ebb3b96b4b9149e97ee2e2ad6cd98108e2f0b8f781701724e6c51e120e215cee3e40c2d7a2afac755a
languageName: node
linkType: hard
@@ -13873,26 +13930,26 @@ __metadata:
languageName: node
linkType: hard
-"postcss-svgo@npm:^7.0.0":
- version: 7.0.0
- resolution: "postcss-svgo@npm:7.0.0"
+"postcss-svgo@npm:^7.0.1":
+ version: 7.0.1
+ resolution: "postcss-svgo@npm:7.0.1"
dependencies:
postcss-value-parser: "npm:^4.2.0"
- svgo: "npm:^3.2.0"
+ svgo: "npm:^3.3.2"
peerDependencies:
postcss: ^8.4.31
- checksum: 10c0/0e724069b5de83aa2b8f8a4746cb60cb663e0a8bbab0e4ba995649cb0562205af57d1f54b89fb90d8ae04a4b7ac3ac6e3751afffc3cff697cb19f7a36b71b195
+ checksum: 10c0/7c7b177e6f4e2a3e9ada76d53afa02e08d900c8ac15600ba9daa80480269d538405e544bd8091bc5eb7529173a476896fad885a72a247258265424b29a9195ed
languageName: node
linkType: hard
-"postcss-unique-selectors@npm:^7.0.0":
- version: 7.0.0
- resolution: "postcss-unique-selectors@npm:7.0.0"
+"postcss-unique-selectors@npm:^7.0.1":
+ version: 7.0.1
+ resolution: "postcss-unique-selectors@npm:7.0.1"
dependencies:
- postcss-selector-parser: "npm:^6.0.16"
+ postcss-selector-parser: "npm:^6.1.0"
peerDependencies:
postcss: ^8.4.31
- checksum: 10c0/33b532ad0e9271c5a379859e18adfdc72986bb538672cc0fbc06295d824f82dba3f7b57264e18a3214901bc5244ff5408d28b530374d24a088507287c7f520ce
+ checksum: 10c0/6352d71ce2f65265f545831c2ce3686bd71961d08a2247c545d717d93d23b1eb08bb986efc11194d31970eea4cb42207b9aa9a3f4666d75492a6cbf1493cf466
languageName: node
linkType: hard
@@ -13989,11 +14046,11 @@ __metadata:
linkType: hard
"prettier@npm:^3.0.0":
- version: 3.2.5
- resolution: "prettier@npm:3.2.5"
+ version: 3.3.0
+ resolution: "prettier@npm:3.3.0"
bin:
prettier: bin/prettier.cjs
- checksum: 10c0/ea327f37a7d46f2324a34ad35292af2ad4c4c3c3355da07313339d7e554320f66f65f91e856add8530157a733c6c4a897dc41b577056be5c24c40f739f5ee8c6
+ checksum: 10c0/d033c356320aa2e468bf29c931b094ac730d2f4defd5eb2989d8589313dec901d2fc866e3788f3d161e420b142ea4ec3dda535dbe0169ef4d0026397a68ba9cf
languageName: node
linkType: hard
@@ -14893,7 +14950,7 @@ __metadata:
languageName: node
linkType: hard
-"regexp.prototype.flags@npm:^1.2.0, regexp.prototype.flags@npm:^1.5.0, regexp.prototype.flags@npm:^1.5.2":
+"regexp.prototype.flags@npm:^1.2.0, regexp.prototype.flags@npm:^1.5.2":
version: 1.5.2
resolution: "regexp.prototype.flags@npm:1.5.2"
dependencies:
@@ -15189,17 +15246,6 @@ __metadata:
languageName: node
linkType: hard
-"rimraf@npm:^5.0.5":
- version: 5.0.5
- resolution: "rimraf@npm:5.0.5"
- dependencies:
- glob: "npm:^10.3.7"
- bin:
- rimraf: dist/esm/bin.mjs
- checksum: 10c0/d50dbe724f33835decd88395b25ed35995077c60a50ae78ded06e0185418914e555817aad1b4243edbff2254548c2f6ad6f70cc850040bebb4da9e8cc016f586
- languageName: node
- linkType: hard
-
"ripemd160@npm:^2.0.0, ripemd160@npm:^2.0.1":
version: 2.0.2
resolution: "ripemd160@npm:2.0.2"
@@ -15247,15 +15293,15 @@ __metadata:
languageName: node
linkType: hard
-"safe-array-concat@npm:^1.0.0, safe-array-concat@npm:^1.1.0":
- version: 1.1.0
- resolution: "safe-array-concat@npm:1.1.0"
+"safe-array-concat@npm:^1.0.0, safe-array-concat@npm:^1.1.2":
+ version: 1.1.2
+ resolution: "safe-array-concat@npm:1.1.2"
dependencies:
- call-bind: "npm:^1.0.5"
- get-intrinsic: "npm:^1.2.2"
+ call-bind: "npm:^1.0.7"
+ get-intrinsic: "npm:^1.2.4"
has-symbols: "npm:^1.0.3"
isarray: "npm:^2.0.5"
- checksum: 10c0/833d3d950fc7507a60075f9bfaf41ec6dac7c50c7a9d62b1e6b071ecc162185881f92e594ff95c1a18301c881352dd6fd236d56999d5819559db7b92da9c28af
+ checksum: 10c0/12f9fdb01c8585e199a347eacc3bae7b5164ae805cdc8c6707199dbad5b9e30001a50a43c4ee24dc9ea32dbb7279397850e9208a7e217f4d8b1cf5d90129dec9
languageName: node
linkType: hard
@@ -15333,15 +15379,15 @@ __metadata:
linkType: hard
"sass@npm:^1.62.1":
- version: 1.77.2
- resolution: "sass@npm:1.77.2"
+ version: 1.77.4
+ resolution: "sass@npm:1.77.4"
dependencies:
chokidar: "npm:>=3.0.0 <4.0.0"
immutable: "npm:^4.0.0"
source-map-js: "npm:>=0.6.2 <2.0.0"
bin:
sass: sass.js
- checksum: 10c0/0d292339064de3c902e209d41de9c4eb2038cff326476aeebbb5be3eee1d23400d975face2b8e124ae617b10af3e93bec01580f61912f34e4c517fe137a118b6
+ checksum: 10c0/b9cb4882bded282aabe38d011adfce375e1f282184fcf93dc3da5d5be834c6aa53c474c15634c351ef7bd85146cfd1cc81343654cc3bcf000d78e856da4225ef
languageName: node
linkType: hard
@@ -15454,7 +15500,7 @@ __metadata:
languageName: node
linkType: hard
-"semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.1":
+"semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.2":
version: 7.6.2
resolution: "semver@npm:7.6.2"
bin:
@@ -15550,14 +15596,15 @@ __metadata:
languageName: node
linkType: hard
-"set-function-name@npm:^2.0.0, set-function-name@npm:^2.0.1":
- version: 2.0.1
- resolution: "set-function-name@npm:2.0.1"
+"set-function-name@npm:^2.0.1, set-function-name@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "set-function-name@npm:2.0.2"
dependencies:
- define-data-property: "npm:^1.0.1"
+ define-data-property: "npm:^1.1.4"
+ es-errors: "npm:^1.3.0"
functions-have-names: "npm:^1.2.3"
- has-property-descriptors: "npm:^1.0.0"
- checksum: 10c0/6be7d3e15be47f4db8a5a563a35c60b5e7c4af91cc900e8972ffad33d3aaa227900faa55f60121cdb04b85866a734bb7fe4cd91f654c632861cc86121a48312a
+ has-property-descriptors: "npm:^1.0.2"
+ checksum: 10c0/fce59f90696c450a8523e754abb305e2b8c73586452619c2bad5f7bf38c7b6b4651895c9db895679c5bef9554339cf3ef1c329b66ece3eda7255785fbe299316
languageName: node
linkType: hard
@@ -15654,14 +15701,15 @@ __metadata:
languageName: node
linkType: hard
-"side-channel@npm:^1.0.4":
- version: 1.0.4
- resolution: "side-channel@npm:1.0.4"
+"side-channel@npm:^1.0.4, side-channel@npm:^1.0.6":
+ version: 1.0.6
+ resolution: "side-channel@npm:1.0.6"
dependencies:
- call-bind: "npm:^1.0.0"
- get-intrinsic: "npm:^1.0.2"
- object-inspect: "npm:^1.9.0"
- checksum: 10c0/054a5d23ee35054b2c4609b9fd2a0587760737782b5d765a9c7852264710cc39c6dcb56a9bbd6c12cd84071648aea3edb2359d2f6e560677eedadce511ac1da5
+ call-bind: "npm:^1.0.7"
+ es-errors: "npm:^1.3.0"
+ get-intrinsic: "npm:^1.2.4"
+ object-inspect: "npm:^1.13.1"
+ checksum: 10c0/d2afd163dc733cc0a39aa6f7e39bf0c436293510dbccbff446733daeaf295857dbccf94297092ec8c53e2503acac30f0b78830876f0485991d62a90e9cad305f
languageName: node
linkType: hard
@@ -16197,53 +16245,57 @@ __metadata:
languageName: node
linkType: hard
-"string.prototype.matchall@npm:^4.0.10, string.prototype.matchall@npm:^4.0.6":
- version: 4.0.10
- resolution: "string.prototype.matchall@npm:4.0.10"
+"string.prototype.matchall@npm:^4.0.11, string.prototype.matchall@npm:^4.0.6":
+ version: 4.0.11
+ resolution: "string.prototype.matchall@npm:4.0.11"
dependencies:
- call-bind: "npm:^1.0.2"
- define-properties: "npm:^1.2.0"
- es-abstract: "npm:^1.22.1"
- get-intrinsic: "npm:^1.2.1"
+ call-bind: "npm:^1.0.7"
+ define-properties: "npm:^1.2.1"
+ es-abstract: "npm:^1.23.2"
+ es-errors: "npm:^1.3.0"
+ es-object-atoms: "npm:^1.0.0"
+ get-intrinsic: "npm:^1.2.4"
+ gopd: "npm:^1.0.1"
has-symbols: "npm:^1.0.3"
- internal-slot: "npm:^1.0.5"
- regexp.prototype.flags: "npm:^1.5.0"
- set-function-name: "npm:^2.0.0"
- side-channel: "npm:^1.0.4"
- checksum: 10c0/cd7495fb0de16d43efeee3887b98701941f3817bd5f09351ad1825b023d307720c86394d56d56380563d97767ab25bf5448db239fcecbb85c28e2180f23e324a
+ internal-slot: "npm:^1.0.7"
+ regexp.prototype.flags: "npm:^1.5.2"
+ set-function-name: "npm:^2.0.2"
+ side-channel: "npm:^1.0.6"
+ checksum: 10c0/915a2562ac9ab5e01b7be6fd8baa0b2b233a0a9aa975fcb2ec13cc26f08fb9a3e85d5abdaa533c99c6fc4c5b65b914eba3d80c4aff9792a4c9fed403f28f7d9d
languageName: node
linkType: hard
-"string.prototype.trim@npm:^1.2.8":
- version: 1.2.8
- resolution: "string.prototype.trim@npm:1.2.8"
+"string.prototype.trim@npm:^1.2.9":
+ version: 1.2.9
+ resolution: "string.prototype.trim@npm:1.2.9"
dependencies:
- call-bind: "npm:^1.0.2"
- define-properties: "npm:^1.2.0"
- es-abstract: "npm:^1.22.1"
- checksum: 10c0/4f76c583908bcde9a71208ddff38f67f24c9ec8093631601666a0df8b52fad44dad2368c78895ce83eb2ae8e7068294cc96a02fc971ab234e4d5c9bb61ea4e34
+ call-bind: "npm:^1.0.7"
+ define-properties: "npm:^1.2.1"
+ es-abstract: "npm:^1.23.0"
+ es-object-atoms: "npm:^1.0.0"
+ checksum: 10c0/dcef1a0fb61d255778155006b372dff8cc6c4394bc39869117e4241f41a2c52899c0d263ffc7738a1f9e61488c490b05c0427faa15151efad721e1a9fb2663c2
languageName: node
linkType: hard
-"string.prototype.trimend@npm:^1.0.7":
- version: 1.0.7
- resolution: "string.prototype.trimend@npm:1.0.7"
+"string.prototype.trimend@npm:^1.0.8":
+ version: 1.0.8
+ resolution: "string.prototype.trimend@npm:1.0.8"
dependencies:
- call-bind: "npm:^1.0.2"
- define-properties: "npm:^1.2.0"
- es-abstract: "npm:^1.22.1"
- checksum: 10c0/53c24911c7c4d8d65f5ef5322de23a3d5b6b4db73273e05871d5ab4571ae5638f38f7f19d71d09116578fb060e5a145cc6a208af2d248c8baf7a34f44d32ce57
+ call-bind: "npm:^1.0.7"
+ define-properties: "npm:^1.2.1"
+ es-object-atoms: "npm:^1.0.0"
+ checksum: 10c0/0a0b54c17c070551b38e756ae271865ac6cc5f60dabf2e7e343cceae7d9b02e1a1120a824e090e79da1b041a74464e8477e2da43e2775c85392be30a6f60963c
languageName: node
linkType: hard
-"string.prototype.trimstart@npm:^1.0.7":
- version: 1.0.7
- resolution: "string.prototype.trimstart@npm:1.0.7"
+"string.prototype.trimstart@npm:^1.0.8":
+ version: 1.0.8
+ resolution: "string.prototype.trimstart@npm:1.0.8"
dependencies:
- call-bind: "npm:^1.0.2"
- define-properties: "npm:^1.2.0"
- es-abstract: "npm:^1.22.1"
- checksum: 10c0/0bcf391b41ea16d4fda9c9953d0a7075171fe090d33b4cf64849af94944c50862995672ac03e0c5dba2940a213ad7f53515a668dac859ce22a0276289ae5cf4f
+ call-bind: "npm:^1.0.7"
+ define-properties: "npm:^1.2.1"
+ es-object-atoms: "npm:^1.0.0"
+ checksum: 10c0/d53af1899959e53c83b64a5fd120be93e067da740e7e75acb433849aa640782fb6c7d4cd5b84c954c84413745a3764df135a8afeb22908b86a835290788d8366
languageName: node
linkType: hard
@@ -16379,15 +16431,15 @@ __metadata:
languageName: node
linkType: hard
-"stylehacks@npm:^7.0.0":
- version: 7.0.0
- resolution: "stylehacks@npm:7.0.0"
+"stylehacks@npm:^7.0.1":
+ version: 7.0.1
+ resolution: "stylehacks@npm:7.0.1"
dependencies:
browserslist: "npm:^4.23.0"
- postcss-selector-parser: "npm:^6.0.16"
+ postcss-selector-parser: "npm:^6.1.0"
peerDependencies:
postcss: ^8.4.31
- checksum: 10c0/c1c0231974ab7922af3a535a9cb78bfe84997767da7defe111cc76d7f10c9e139fe8cb0f9d5bea87b0c0cc0166c82a6ec98a3d6242d7e29ef90adceecfd330ae
+ checksum: 10c0/538d5d9c6d84906efad3706f0873b85b67fa224f17759b122bad3d60f2928c31204fd658dd16ec952bf54858a3aeaef4643e040c04030459285ce1b13c4cae91
languageName: node
linkType: hard
@@ -16460,8 +16512,8 @@ __metadata:
linkType: hard
"stylelint@npm:^16.0.2":
- version: 16.6.0
- resolution: "stylelint@npm:16.6.0"
+ version: 16.6.1
+ resolution: "stylelint@npm:16.6.1"
dependencies:
"@csstools/css-parser-algorithms": "npm:^2.6.3"
"@csstools/css-tokenizer": "npm:^2.3.1"
@@ -16476,7 +16528,7 @@ __metadata:
debug: "npm:^4.3.4"
fast-glob: "npm:^3.3.2"
fastest-levenshtein: "npm:^1.0.16"
- file-entry-cache: "npm:^8.0.0"
+ file-entry-cache: "npm:^9.0.0"
global-modules: "npm:^2.0.0"
globby: "npm:^11.1.0"
globjoin: "npm:^0.1.4"
@@ -16487,7 +16539,7 @@ __metadata:
known-css-properties: "npm:^0.31.0"
mathml-tag-names: "npm:^2.1.3"
meow: "npm:^13.2.0"
- micromatch: "npm:^4.0.5"
+ micromatch: "npm:^4.0.7"
normalize-path: "npm:^3.0.0"
picocolors: "npm:^1.0.1"
postcss: "npm:^8.4.38"
@@ -16504,7 +16556,7 @@ __metadata:
write-file-atomic: "npm:^5.0.1"
bin:
stylelint: bin/stylelint.mjs
- checksum: 10c0/acfb7983a0b71677d066b2aa570eefdac0a7be2e21351bac8884b8156deaeec19e53ad128ae7ae7933c79f6045f1de8d759ba06cfbc373b2711015860805a3e7
+ checksum: 10c0/8dc9b0024d6fb109380a142171ab8a134c3863aa8b8736f0083310a0d05f173dcda5680f29267697dfa0aaeb2f08aef4ef113e4bb4f8582fcfdd97f35be51d71
languageName: node
linkType: hard
@@ -16612,9 +16664,9 @@ __metadata:
languageName: node
linkType: hard
-"svgo@npm:^3.2.0":
- version: 3.2.0
- resolution: "svgo@npm:3.2.0"
+"svgo@npm:^3.3.2":
+ version: 3.3.2
+ resolution: "svgo@npm:3.3.2"
dependencies:
"@trysound/sax": "npm:0.2.0"
commander: "npm:^7.2.0"
@@ -16625,7 +16677,7 @@ __metadata:
picocolors: "npm:^1.0.0"
bin:
svgo: ./bin/svgo
- checksum: 10c0/28fa9061ccbcf2e3616d48d1feb613aaa05f8f290a329beb0e585914f1864385152934a7d4d683a4609fafbae3d51666633437c359c5c5ef74fb58ad09092a7c
+ checksum: 10c0/a6badbd3d1d6dbb177f872787699ab34320b990d12e20798ecae915f0008796a0f3c69164f1485c9def399e0ce0a5683eb4a8045e51a5e1c364bb13a0d9f79e1
languageName: node
linkType: hard
@@ -17097,9 +17149,9 @@ __metadata:
languageName: node
linkType: hard
-"typed-array-length@npm:^1.0.5":
- version: 1.0.5
- resolution: "typed-array-length@npm:1.0.5"
+"typed-array-length@npm:^1.0.6":
+ version: 1.0.6
+ resolution: "typed-array-length@npm:1.0.6"
dependencies:
call-bind: "npm:^1.0.7"
for-each: "npm:^0.3.3"
@@ -17107,7 +17159,7 @@ __metadata:
has-proto: "npm:^1.0.3"
is-typed-array: "npm:^1.1.13"
possible-typed-array-names: "npm:^1.0.0"
- checksum: 10c0/5cc0f79196e70a92f8f40846cfa62b3de6be51e83f73655e137116cf65e3c29a288502b18cc8faf33c943c2470a4569009e1d6da338441649a2db2f135761ad5
+ checksum: 10c0/74253d7dc488eb28b6b2711cf31f5a9dcefc9c41b0681fd1c178ed0a1681b4468581a3626d39cd4df7aee3d3927ab62be06aa9ca74e5baf81827f61641445b77
languageName: node
linkType: hard
@@ -17967,16 +18019,16 @@ __metadata:
languageName: node
linkType: hard
-"which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.9":
- version: 1.1.14
- resolution: "which-typed-array@npm:1.1.14"
+"which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15, which-typed-array@npm:^1.1.9":
+ version: 1.1.15
+ resolution: "which-typed-array@npm:1.1.15"
dependencies:
- available-typed-arrays: "npm:^1.0.6"
- call-bind: "npm:^1.0.5"
+ available-typed-arrays: "npm:^1.0.7"
+ call-bind: "npm:^1.0.7"
for-each: "npm:^0.3.3"
gopd: "npm:^1.0.1"
- has-tostringtag: "npm:^1.0.1"
- checksum: 10c0/0960f1e77807058819451b98c51d4cd72031593e8de990b24bd3fc22e176f5eee22921d68d852297c786aec117689f0423ed20aa4fde7ce2704d680677891f56
+ has-tostringtag: "npm:^1.0.2"
+ checksum: 10c0/4465d5348c044032032251be54d8988270e69c6b7154f8fcb2a47ff706fe36f7624b3a24246b8d9089435a8f4ec48c1c1025c5d6b499456b9e5eff4f48212983
languageName: node
linkType: hard