diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile
index 3c96546b49..b5e72a0973 100644
--- a/.devcontainer/Dockerfile
+++ b/.devcontainer/Dockerfile
@@ -15,6 +15,6 @@ RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
RUN gem install foreman
# [Optional] Uncomment this line to install global node packages.
-RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g yarn" 2>&1
+RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && corepack enable" 2>&1
COPY welcome-message.txt /usr/local/etc/vscode-dev-containers/first-run-notice.txt
diff --git a/.devcontainer/post-create.sh b/.devcontainer/post-create.sh
index 8d4d63847a..20f3437f4e 100755
--- a/.devcontainer/post-create.sh
+++ b/.devcontainer/post-create.sh
@@ -11,6 +11,7 @@ bundle install
git checkout -- Gemfile.lock
# Fetch Javascript dependencies
+corepack prepare
yarn install --immutable
# [re]create, migrate, and seed the test database
diff --git a/.github/renovate.json5 b/.github/renovate.json5
index e3744ee6dc..77b64fdd3f 100644
--- a/.github/renovate.json5
+++ b/.github/renovate.json5
@@ -12,6 +12,7 @@
// If we do not want a package to be grouped with others, we need to set its groupName
// to `null` after any other rule set it to something.
dependencyDashboardHeader: 'This issue lists Renovate updates and detected dependencies. Read the [Dependency Dashboard](https://docs.renovatebot.com/key-concepts/dashboard/) docs to learn more. Before approving any upgrade: read the description and comments in the [`renovate.json5` file](https://github.com/mastodon/mastodon/blob/main/.github/renovate.json5).',
+ postUpdateOptions: ['yarnDedupeHighest'],
packageRules: [
{
// Require Dependency Dashboard Approval for major version bumps of these node packages
diff --git a/.haml-lint_todo.yml b/.haml-lint_todo.yml
index 9686c177bd..3be2a3d490 100644
--- a/.haml-lint_todo.yml
+++ b/.haml-lint_todo.yml
@@ -31,4 +31,3 @@ linters:
- 'app/views/admin/accounts/_buttons.html.haml'
- 'app/views/admin/accounts/_local_account.html.haml'
- 'app/views/admin/roles/_form.html.haml'
- - 'app/views/layouts/application.html.haml'
diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
index 98b557a7c2..68948b29cf 100644
--- a/.rubocop_todo.yml
+++ b/.rubocop_todo.yml
@@ -24,15 +24,6 @@ Lint/NonLocalExitFromIterator:
Exclude:
- 'app/helpers/jsonld_helper.rb'
-# This cop supports safe autocorrection (--autocorrect).
-# Configuration parameters: IgnoreEmptyBlocks, AllowUnusedKeywordArguments.
-Lint/UnusedBlockArgument:
- Exclude:
- - 'config/initializers/content_security_policy.rb'
- - 'config/initializers/doorkeeper.rb'
- - 'config/initializers/paperclip.rb'
- - 'config/initializers/simple_form.rb'
-
# Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes.
Metrics/AbcSize:
Max: 144
@@ -73,26 +64,6 @@ RSpec/AnyInstance:
RSpec/ExampleLength:
Max: 22
-# Configuration parameters: AssignmentOnly.
-RSpec/InstanceVariable:
- Exclude:
- - 'spec/controllers/api/v1/streaming_controller_spec.rb'
- - 'spec/controllers/auth/confirmations_controller_spec.rb'
- - 'spec/controllers/auth/passwords_controller_spec.rb'
- - 'spec/controllers/auth/sessions_controller_spec.rb'
- - 'spec/controllers/concerns/export_controller_concern_spec.rb'
- - 'spec/controllers/home_controller_spec.rb'
- - 'spec/controllers/settings/two_factor_authentication/webauthn_credentials_controller_spec.rb'
- - 'spec/controllers/statuses_cleanup_controller_spec.rb'
- - 'spec/models/concerns/account_finder_concern_spec.rb'
- - 'spec/models/concerns/account_interactions_spec.rb'
- - 'spec/models/public_feed_spec.rb'
- - 'spec/serializers/activitypub/note_serializer_spec.rb'
- - 'spec/serializers/activitypub/update_poll_serializer_spec.rb'
- - 'spec/services/remove_status_service_spec.rb'
- - 'spec/services/search_service_spec.rb'
- - 'spec/services/unblock_domain_service_spec.rb'
-
RSpec/LetSetup:
Exclude:
- 'spec/controllers/api/v1/accounts/statuses_controller_spec.rb'
@@ -135,12 +106,6 @@ RSpec/LetSetup:
- 'spec/services/unsuspend_account_service_spec.rb'
- 'spec/workers/scheduler/user_cleanup_scheduler_spec.rb'
-RSpec/MessageChain:
- Exclude:
- - 'spec/models/concerns/remotable_spec.rb'
- - 'spec/models/session_activation_spec.rb'
- - 'spec/models/setting_spec.rb'
-
RSpec/MultipleExpectations:
Max: 8
@@ -180,11 +145,6 @@ Rails/HasManyOrHasOneDependent:
- 'app/models/user.rb'
- 'app/models/web/push_subscription.rb'
-Rails/I18nLocaleTexts:
- Exclude:
- - 'lib/tasks/mastodon.rake'
- - 'spec/helpers/flashes_helper_spec.rb'
-
# Configuration parameters: Include.
# Include: app/controllers/**/*.rb, app/mailers/**/*.rb
Rails/LexicallyScopedActionFilter:
@@ -560,14 +520,6 @@ Style/SingleArgumentDig:
Exclude:
- 'lib/webpacker/manifest_extensions.rb'
-# This cop supports safe autocorrection (--autocorrect).
-# Configuration parameters: EnforcedStyle.
-# SupportedStyles: require_parentheses, require_no_parentheses
-Style/StabbyLambdaParentheses:
- Exclude:
- - 'config/environments/production.rb'
- - 'config/initializers/content_security_policy.rb'
-
# This cop supports safe autocorrection (--autocorrect).
Style/StderrPuts:
Exclude:
@@ -626,5 +578,3 @@ Style/TrailingCommaInHashLiteral:
Style/WordArray:
Exclude:
- 'app/helpers/languages_helper.rb'
- - 'spec/controllers/settings/imports_controller_spec.rb'
- - 'spec/models/form/import_spec.rb'
diff --git a/Gemfile b/Gemfile
index f9b4c2960b..47508175b6 100644
--- a/Gemfile
+++ b/Gemfile
@@ -16,7 +16,7 @@ gem 'dotenv-rails', '~> 2.8'
gem 'aws-sdk-s3', '~> 1.123', require: false
gem 'fog-core', '<= 2.4.0'
-gem 'fog-openstack', '~> 0.3', require: false
+gem 'fog-openstack', '~> 1.0', require: false
gem 'kt-paperclip', '~> 7.2'
gem 'md-paperclip-azure', '~> 2.2', require: false
gem 'blurhash', '~> 0.1'
diff --git a/Gemfile.lock b/Gemfile.lock
index 3ef82a352a..ef08a90f53 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -263,7 +263,7 @@ GEM
erubi (1.12.0)
et-orbi (1.2.7)
tzinfo
- excon (0.100.0)
+ excon (0.104.0)
fabrication (2.30.0)
faker (3.2.2)
i18n (>= 1.8.11, < 2)
@@ -298,19 +298,18 @@ GEM
ffi-compiler (1.0.1)
ffi (>= 1.0.0)
rake
- fog-core (2.1.0)
+ fog-core (2.3.0)
builder
- excon (~> 0.58)
- formatador (~> 0.2)
+ excon (~> 0.71)
+ formatador (>= 0.2, < 2.0)
mime-types
fog-json (1.2.0)
fog-core
multi_json (~> 1.10)
- fog-openstack (0.3.10)
- fog-core (>= 1.45, <= 2.1.0)
+ fog-openstack (1.1.0)
+ fog-core (~> 2.1)
fog-json (>= 1.0)
- ipaddress (>= 0.8)
- formatador (0.3.0)
+ formatador (1.1.0)
fugit (1.8.1)
et-orbi (~> 1, >= 1.2.7)
raabro (~> 1.4)
@@ -370,7 +369,6 @@ GEM
terminal-table (>= 1.5.1)
idn-ruby (0.1.5)
io-console (0.6.0)
- ipaddress (0.8.3)
irb (1.8.1)
rdoc
reline (>= 0.3.8)
@@ -452,7 +450,7 @@ GEM
memory_profiler (1.0.1)
mime-types (3.5.1)
mime-types-data (~> 3.2015)
- mime-types-data (3.2023.0808)
+ mime-types-data (3.2023.1003)
mini_mime (1.1.5)
mini_portile2 (2.8.5)
minitest (5.20.0)
@@ -858,7 +856,7 @@ DEPENDENCIES
fast_blank (~> 1.0)
fastimage
fog-core (<= 2.4.0)
- fog-openstack (~> 0.3)
+ fog-openstack (~> 1.0)
fuubar (~> 2.5)
haml-rails (~> 2.0)
haml_lint
diff --git a/app/controllers/admin/statuses_controller.rb b/app/controllers/admin/statuses_controller.rb
index b80cd20f56..5712dea888 100644
--- a/app/controllers/admin/statuses_controller.rb
+++ b/app/controllers/admin/statuses_controller.rb
@@ -31,6 +31,11 @@ module Admin
private
+ def batched_ordered_status_edits
+ @status.edits.reorder(nil).includes(:account, status: [:account]).find_each(order: :asc)
+ end
+ helper_method :batched_ordered_status_edits
+
def admin_status_batch_action_params
params.require(:admin_status_batch_action).permit(status_ids: [])
end
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index b85c8fe843..fd54301b9f 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -91,6 +91,14 @@ module ApplicationHelper
end
end
+ def html_title
+ safe_join(
+ [content_for(:page_title).to_s.chomp, title]
+ .select(&:present?),
+ ' - '
+ )
+ end
+
def title
Rails.env.production? ? site_title : "#{site_title} (Dev)"
end
diff --git a/app/helpers/languages_helper.rb b/app/helpers/languages_helper.rb
index ddb10aa25f..0d4edceb7b 100644
--- a/app/helpers/languages_helper.rb
+++ b/app/helpers/languages_helper.rb
@@ -298,5 +298,3 @@ module LanguagesHelper
locale_name.to_sym if locale_name.present? && I18n.available_locales.include?(locale_name.to_sym)
end
end
-
-# rubocop:enable Metrics/ModuleLength
diff --git a/app/javascript/mastodon/api_types/accounts.ts b/app/javascript/mastodon/api_types/accounts.ts
index ce55dc604a..985abf9463 100644
--- a/app/javascript/mastodon/api_types/accounts.ts
+++ b/app/javascript/mastodon/api_types/accounts.ts
@@ -42,4 +42,5 @@ export interface ApiAccountJSON {
suspended?: boolean;
limited?: boolean;
memorial?: boolean;
+ hide_collections: boolean;
}
diff --git a/app/javascript/mastodon/features/followers/index.jsx b/app/javascript/mastodon/features/followers/index.jsx
index e50b2171a0..4885f9ca99 100644
--- a/app/javascript/mastodon/features/followers/index.jsx
+++ b/app/javascript/mastodon/features/followers/index.jsx
@@ -45,6 +45,7 @@ const mapStateToProps = (state, { params: { acct, id } }) => {
hasMore: !!state.getIn(['user_lists', 'followers', accountId, 'next']),
isLoading: state.getIn(['user_lists', 'followers', accountId, 'isLoading'], true),
suspended: state.getIn(['accounts', accountId, 'suspended'], false),
+ hideCollections: state.getIn(['accounts', accountId, 'hide_collections'], false),
hidden: getAccountHidden(state, accountId),
blockedBy: state.getIn(['relationships', accountId, 'blocked_by'], false),
};
@@ -111,7 +112,7 @@ class Followers extends ImmutablePureComponent {
}, 300, { leading: true });
render () {
- const { accountId, accountIds, hasMore, blockedBy, isAccount, multiColumn, isLoading, suspended, hidden, remote, remoteUrl } = this.props;
+ const { accountId, accountIds, hasMore, blockedBy, isAccount, multiColumn, isLoading, suspended, hidden, remote, remoteUrl, hideCollections } = this.props;
if (!isAccount) {
return (
@@ -137,6 +138,8 @@ class Followers extends ImmutablePureComponent {
emptyMessage = ;
} else if (blockedBy) {
emptyMessage = ;
+ } else if (hideCollections && accountIds.isEmpty()) {
+ emptyMessage = ;
} else if (remote && accountIds.isEmpty()) {
emptyMessage = ;
} else {
diff --git a/app/javascript/mastodon/features/following/index.jsx b/app/javascript/mastodon/features/following/index.jsx
index 73e77aadd7..fb4a4d5c3a 100644
--- a/app/javascript/mastodon/features/following/index.jsx
+++ b/app/javascript/mastodon/features/following/index.jsx
@@ -45,6 +45,7 @@ const mapStateToProps = (state, { params: { acct, id } }) => {
hasMore: !!state.getIn(['user_lists', 'following', accountId, 'next']),
isLoading: state.getIn(['user_lists', 'following', accountId, 'isLoading'], true),
suspended: state.getIn(['accounts', accountId, 'suspended'], false),
+ hideCollections: state.getIn(['accounts', accountId, 'hide_collections'], false),
hidden: getAccountHidden(state, accountId),
blockedBy: state.getIn(['relationships', accountId, 'blocked_by'], false),
};
@@ -111,7 +112,7 @@ class Following extends ImmutablePureComponent {
}, 300, { leading: true });
render () {
- const { accountId, accountIds, hasMore, blockedBy, isAccount, multiColumn, isLoading, suspended, hidden, remote, remoteUrl } = this.props;
+ const { accountId, accountIds, hasMore, blockedBy, isAccount, multiColumn, isLoading, suspended, hidden, remote, remoteUrl, hideCollections } = this.props;
if (!isAccount) {
return (
@@ -137,6 +138,8 @@ class Following extends ImmutablePureComponent {
emptyMessage = ;
} else if (blockedBy) {
emptyMessage = ;
+ } else if (hideCollections && accountIds.isEmpty()) {
+ emptyMessage = ;
} else if (remote && accountIds.isEmpty()) {
emptyMessage = ;
} else {
diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json
index 3fcab71d70..0b93905816 100644
--- a/app/javascript/mastodon/locales/de.json
+++ b/app/javascript/mastodon/locales/de.json
@@ -88,7 +88,7 @@
"attachments_list.unprocessed": "(ausstehend)",
"audio.hide": "Audio ausblenden",
"autosuggest_hashtag.per_week": "{count} pro Woche",
- "boost_modal.combo": "Drücke {combo}, um das beim nächsten Mal zu überspringen",
+ "boost_modal.combo": "Mit {combo} wird dieses Fenster beim nächsten Mal nicht mehr angezeigt",
"bundle_column_error.copy_stacktrace": "Fehlerbericht kopieren",
"bundle_column_error.error.body": "Die angeforderte Seite konnte nicht dargestellt werden. Dies könnte auf einen Fehler in unserem Code oder auf ein Browser-Kompatibilitätsproblem zurückzuführen sein.",
"bundle_column_error.error.title": "Oh nein!",
diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json
index 4399b99951..9cbaf93054 100644
--- a/app/javascript/mastodon/locales/en.json
+++ b/app/javascript/mastodon/locales/en.json
@@ -222,6 +222,7 @@
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places",
+ "empty_column.account_hides_collections": "This user has chosen to not make this information available",
"empty_column.account_suspended": "Account suspended",
"empty_column.account_timeline": "No posts here!",
"empty_column.account_unavailable": "Profile unavailable",
diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json
index ff7e864e5e..13d3239655 100644
--- a/app/javascript/mastodon/locales/he.json
+++ b/app/javascript/mastodon/locales/he.json
@@ -62,7 +62,7 @@
"account.share": "שתף את הפרופיל של @{name}",
"account.show_reblogs": "הצג הדהודים מאת @{name}",
"account.statuses_counter": "{count, plural, one {הודעה} two {הודעותיים} many {{count} הודעות} other {{count} הודעות}}",
- "account.unblock": "הסר את החסימה של @{name}",
+ "account.unblock": "להסיר חסימה ל- @{name}",
"account.unblock_domain": "הסירי את החסימה של קהילת {domain}",
"account.unblock_short": "הסר חסימה",
"account.unendorse": "אל תקדם בפרופיל",
diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json
index 60760607f2..f2616b31c4 100644
--- a/app/javascript/mastodon/locales/sk.json
+++ b/app/javascript/mastodon/locales/sk.json
@@ -222,7 +222,7 @@
"emoji_button.search_results": "Výsledky hľadania",
"emoji_button.symbols": "Symboly",
"emoji_button.travel": "Cestovanie a miesta",
- "empty_column.account_suspended": "Účet bol vylúčený",
+ "empty_column.account_suspended": "Účet bol pozastavený",
"empty_column.account_timeline": "Nie sú tu žiadne príspevky!",
"empty_column.account_unavailable": "Profil nedostupný",
"empty_column.blocks": "Ešte si nikoho nezablokoval/a.",
diff --git a/app/javascript/mastodon/models/account.ts b/app/javascript/mastodon/models/account.ts
index f20d2a2d3e..00066e2840 100644
--- a/app/javascript/mastodon/models/account.ts
+++ b/app/javascript/mastodon/models/account.ts
@@ -93,6 +93,7 @@ export const accountDefaultValues: AccountShape = {
memorial: false,
limited: false,
moved: null,
+ hide_collections: false,
};
const AccountFactory = ImmutableRecord(accountDefaultValues);
diff --git a/app/lib/status_cache_hydrator.rb b/app/lib/status_cache_hydrator.rb
index c1231311b1..45b50cb379 100644
--- a/app/lib/status_cache_hydrator.rb
+++ b/app/lib/status_cache_hydrator.rb
@@ -16,12 +16,36 @@ class StatusCacheHydrator
# We take advantage of the fact that some relationships can only occur with an original status, not
# the reblog that wraps it, so we can assume that some values are always false
if payload[:reblog]
+ hydrate_reblog_payload(payload, account_id)
+ else
+ hydrate_non_reblog_payload(payload, account_id)
+ end
+ end
+
+ private
+
+ def hydrate_non_reblog_payload(empty_payload, account_id)
+ empty_payload.tap do |payload|
+ payload[:favourited] = Favourite.where(account_id: account_id, status_id: @status.id).exists?
+ payload[:reblogged] = Status.where(account_id: account_id, reblog_of_id: @status.id).exists?
+ payload[:muted] = ConversationMute.where(account_id: account_id, conversation_id: @status.conversation_id).exists?
+ payload[:bookmarked] = Bookmark.where(account_id: account_id, status_id: @status.id).exists?
+ payload[:pinned] = StatusPin.where(account_id: account_id, status_id: @status.id).exists? if @status.account_id == account_id
+ payload[:filtered] = mapped_applied_custom_filter(account_id, @status)
+
+ if payload[:poll]
+ payload[:poll][:voted] = @status.account_id == account_id
+ payload[:poll][:own_votes] = []
+ end
+ end
+ end
+
+ def hydrate_reblog_payload(empty_payload, account_id)
+ empty_payload.tap do |payload|
payload[:muted] = false
payload[:bookmarked] = false
payload[:pinned] = false if @status.account_id == account_id
- payload[:filtered] = CustomFilter
- .apply_cached_filters(CustomFilter.cached_filters_for(account_id), @status.reblog)
- .map { |filter| serialized_filter(filter) }
+ payload[:filtered] = mapped_applied_custom_filter(account_id, @status.reblog)
# If the reblogged status is being delivered to the author who disabled the display of the application
# used to create the status, we need to hydrate it here too
@@ -47,26 +71,14 @@ class StatusCacheHydrator
payload[:favourited] = payload[:reblog][:favourited]
payload[:reblogged] = payload[:reblog][:reblogged]
- else
- payload[:favourited] = Favourite.where(account_id: account_id, status_id: @status.id).exists?
- payload[:reblogged] = Status.where(account_id: account_id, reblog_of_id: @status.id).exists?
- payload[:muted] = ConversationMute.where(account_id: account_id, conversation_id: @status.conversation_id).exists?
- payload[:bookmarked] = Bookmark.where(account_id: account_id, status_id: @status.id).exists?
- payload[:pinned] = StatusPin.where(account_id: account_id, status_id: @status.id).exists? if @status.account_id == account_id
- payload[:filtered] = CustomFilter
- .apply_cached_filters(CustomFilter.cached_filters_for(account_id), @status)
- .map { |filter| serialized_filter(filter) }
-
- if payload[:poll]
- payload[:poll][:voted] = @status.account_id == account_id
- payload[:poll][:own_votes] = []
- end
end
-
- payload
end
- private
+ def mapped_applied_custom_filter(account_id, status)
+ CustomFilter
+ .apply_cached_filters(CustomFilter.cached_filters_for(account_id), status)
+ .map { |filter| serialized_filter(filter) }
+ end
def serialized_filter(filter)
ActiveModelSerializers::SerializableResource.new(
diff --git a/app/serializers/rest/account_serializer.rb b/app/serializers/rest/account_serializer.rb
index 34c0451088..3fe2026674 100644
--- a/app/serializers/rest/account_serializer.rb
+++ b/app/serializers/rest/account_serializer.rb
@@ -8,7 +8,7 @@ class REST::AccountSerializer < ActiveModel::Serializer
attributes :id, :username, :acct, :display_name, :locked, :bot, :discoverable, :group, :created_at,
:note, :url, :uri, :avatar, :avatar_static, :header, :header_static,
- :followers_count, :following_count, :statuses_count, :last_status_at
+ :followers_count, :following_count, :statuses_count, :last_status_at, :hide_collections
has_one :moved_to_account, key: :moved, serializer: REST::AccountSerializer, if: :moved_and_not_nested?
diff --git a/app/views/admin/statuses/show.html.haml b/app/views/admin/statuses/show.html.haml
index 7067c45dc7..0e88624def 100644
--- a/app/views/admin/statuses/show.html.haml
+++ b/app/views/admin/statuses/show.html.haml
@@ -47,7 +47,7 @@
%h3= t('admin.statuses.history')
%ol.history
- - @status.edits.reorder(nil).includes(:account, status: [:account]).find_each(order: :asc).with_index do |status_edit, i|
+ - batched_ordered_status_edits.with_index do |status_edit, i|
%li
.history__entry
%h5
diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml
index 2267ec5299..c0e7761878 100755
--- a/app/views/layouts/application.html.haml
+++ b/app/views/layouts/application.html.haml
@@ -24,7 +24,7 @@
%meta{ name: 'theme-color', content: '#191b22' }/
%meta{ name: 'apple-mobile-web-app-capable', content: 'yes' }/
- %title= content_for?(:page_title) ? safe_join([yield(:page_title).chomp.html_safe, title], ' - ') : title
+ %title= html_title
= javascript_pack_tag "common", crossorigin: 'anonymous'
- if @theme
diff --git a/config/database.yml b/config/database.yml
index b995f23178..2898415d80 100644
--- a/config/database.yml
+++ b/config/database.yml
@@ -1,6 +1,6 @@
default: &default
adapter: postgresql
- pool: <%= ENV["DB_POOL"] || ENV['MAX_THREADS'] || 5 %>
+ pool: <%= ENV["DB_POOL"] || (if Sidekiq.server? then Sidekiq[:concurrency] else ENV['MAX_THREADS'] end) || 5 %>
timeout: 5000
connect_timeout: 15
encoding: unicode
diff --git a/config/environments/production.rb b/config/environments/production.rb
index 0fb03be8dc..005b5f43d9 100644
--- a/config/environments/production.rb
+++ b/config/environments/production.rb
@@ -44,7 +44,7 @@ Rails.application.configure do
config.force_ssl = true
config.ssl_options = {
redirect: {
- exclude: ->request { request.path.start_with?('/health') || request.headers["Host"].end_with?('.onion') || request.headers["Host"].end_with?('.i2p') }
+ exclude: ->(request) { request.path.start_with?('/health') || request.headers["Host"].end_with?('.onion') || request.headers["Host"].end_with?('.i2p') }
}
}
diff --git a/config/initializers/content_security_policy.rb b/config/initializers/content_security_policy.rb
index a37ee1b3a4..15e9032807 100644
--- a/config/initializers/content_security_policy.rb
+++ b/config/initializers/content_security_policy.rb
@@ -84,7 +84,7 @@ end
# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only
# Rails.application.config.content_security_policy_report_only = true
-Rails.application.config.content_security_policy_nonce_generator = ->request { SecureRandom.base64(16) }
+Rails.application.config.content_security_policy_nonce_generator = ->(_request) { SecureRandom.base64(16) }
Rails.application.config.content_security_policy_nonce_directives = %w(style-src)
@@ -109,7 +109,7 @@ Rails.application.reloader.to_prepare do
p.worker_src :none
end
- LetterOpenerWeb::LettersController.after_action do |p|
+ LetterOpenerWeb::LettersController.after_action do
request.content_security_policy_nonce_directives = %w(script-src)
end
end
diff --git a/config/initializers/doorkeeper.rb b/config/initializers/doorkeeper.rb
index a78405ace6..fe3871d2e7 100644
--- a/config/initializers/doorkeeper.rb
+++ b/config/initializers/doorkeeper.rb
@@ -169,7 +169,7 @@ Doorkeeper.configure do
# Under some circumstances you might want to have applications auto-approved,
# so that the user skips the authorization step.
# For example if dealing with a trusted application.
- skip_authorization do |resource_owner, client|
+ skip_authorization do |_resource_owner, client|
client.application.superapp?
end
diff --git a/config/initializers/paperclip.rb b/config/initializers/paperclip.rb
index 03e5fdbb8d..a44c2ab847 100644
--- a/config/initializers/paperclip.rb
+++ b/config/initializers/paperclip.rb
@@ -11,7 +11,7 @@ Paperclip.interpolates :filename do |attachment, style|
end
end
-Paperclip.interpolates :prefix_path do |attachment, style|
+Paperclip.interpolates :prefix_path do |attachment, _style|
if attachment.storage_schema_version >= 1 && attachment.instance.respond_to?(:local?) && !attachment.instance.local?
'cache' + File::SEPARATOR
else
@@ -19,7 +19,7 @@ Paperclip.interpolates :prefix_path do |attachment, style|
end
end
-Paperclip.interpolates :prefix_url do |attachment, style|
+Paperclip.interpolates :prefix_url do |attachment, _style|
if attachment.storage_schema_version >= 1 && attachment.instance.respond_to?(:local?) && !attachment.instance.local?
'cache/'
else
diff --git a/config/initializers/simple_form.rb b/config/initializers/simple_form.rb
index e7b4f2d458..b0951814e3 100644
--- a/config/initializers/simple_form.rb
+++ b/config/initializers/simple_form.rb
@@ -175,7 +175,7 @@ SimpleForm.setup do |config|
# config.item_wrapper_class = nil
# How the label text should be generated altogether with the required text.
- config.label_text = lambda { |label, required, explicit_label| "#{label} #{required}" }
+ config.label_text = lambda { |label, required, _explicit_label| "#{label} #{required}" }
# You can define the class to use on all labels. Default is nil.
# config.label_class = nil
diff --git a/config/locales/activerecord.lt.yml b/config/locales/activerecord.lt.yml
index 6c5cb837ac..f54d00471b 100644
--- a/config/locales/activerecord.lt.yml
+++ b/config/locales/activerecord.lt.yml
@@ -1 +1,14 @@
+---
lt:
+ activerecord:
+ errors:
+ models:
+ account:
+ attributes:
+ username:
+ invalid: turi būti tik raidės, skaičiai ir pabraukimai.
+ reserved: užimtas.
+ admin/webhook:
+ attributes:
+ url:
+ invalid: nėra tinkamas URL adresas.
diff --git a/config/locales/be.yml b/config/locales/be.yml
index 4d8ea3df99..275ef7a82c 100644
--- a/config/locales/be.yml
+++ b/config/locales/be.yml
@@ -556,6 +556,7 @@ be:
total_reported: Скаргі на іх
total_storage: Медыя дадаткі
totals_time_period_hint_html: Паказаныя агульныя значэнні ніжэй уключаюць даныя за ўвесь час.
+ unknown_instance: На дадзены момант няма запісаў аб гэтым дамене на гэтым серверы.
invites:
deactivate_all: Дэактываваць усё
filter:
@@ -1076,6 +1077,14 @@ be:
hint_html: Засталася яшчэ адна рэч! Каб не дапусціць спаму, нам трэба пацвердзіць, што вы чалавек. Разгадайце CAPTCHA ніжэй і націсніце «Працягнуць».
title: Праверка бяспекі
confirmations:
+ awaiting_review: Ваш электронны адрас пацверджаны! Адміністрацыя %{domain} зараз разглядае вашу рэгістрацыю. Вы атрымаеце паведамленне па электроннай пошце, калі ваш уліковы запіс будзе ўхвалены!
+ awaiting_review_title: Ваша рэгістрацыя разглядаецца
+ clicking_this_link: націснуць на гэту спасылку
+ login_link: увайсці
+ proceed_to_login_html: Цяпер вы можаце перайсці да %{login_link}.
+ redirect_to_app_html: Вы павінны былі быць перанакіраваны ў праграму %{app_name}. Калі гэтага не адбылося, паспрабуйце %{clicking_this_link} або вярніцеся да праграмы ўручную.
+ registration_complete: Ваша рэгістрацыя на %{domain} завершана!
+ welcome_title: Вітаем, %{name}!
wrong_email_hint: Калі гэты адрас электроннай пошты памылковы, вы можаце змяніць яго ў наладах уліковага запісу.
delete_account: Выдаліць уліковы запіс
delete_account_html: Калі вы жадаеце выдаліць ваш уліковы запіс, можаце працягнуць тут. Ад вас будзе запатрабавана пацвярджэнне.
@@ -1137,6 +1146,7 @@ be:
functional: Ваш уліковы запіс поўнасцю працуе.
pending: Ваша заяўка разглядаецца нашым супрацоўнікам. Гэта можа заняць некаторы час. Вы атрымаеце электронны ліст, калі заяўка будзе ўхвалена.
redirecting_to: Ваш уліковы запіс неактыўны, бо ў цяперашні час ён перанакіроўваецца на %{acct}.
+ self_destruct: Паколькі %{domain} зачыняецца, вы атрымаеце толькі абмежаваны доступ да свайго уліковага запісу.
view_strikes: Праглядзець мінулыя папярэджанні для вашага ўліковага запісу
too_fast: Форма адпраўлена занадта хутка, паспрабуйце яшчэ раз.
use_security_key: Выкарыстаеце ключ бяспекі
@@ -1622,6 +1632,9 @@ be:
over_daily_limit: Вы перавысілі ліміт ў %{limit} запланаваных на сёння допісаў
over_total_limit: Вы перавысілі ліміт ў %{limit} запланаваных допісаў
too_soon: Запланаваная дата мусіць быць у будучыні
+ self_destruct:
+ lead_html: На жаль, дамен %{domain} зачыняецца назаўсёды. Калі ў вас быў уліковы запіс, вы не зможаце працягваць выкарыстоўваць яго, але вы ўсё яшчэ можаце запытаць рэзервовае капіраванне вашых даных.
+ title: Гэты сервер зачыняецца
sessions:
activity: Апошняя актыўнасць
browser: Браўзер
diff --git a/config/locales/ko.yml b/config/locales/ko.yml
index dc1b0d1f49..530cf6a447 100644
--- a/config/locales/ko.yml
+++ b/config/locales/ko.yml
@@ -1600,7 +1600,7 @@ ko:
windows: 윈도우
windows_mobile: 윈도우 모바일
windows_phone: 윈도우 폰
- revoke: 삭제
+ revoke: 취소
revoke_success: 세션을 성공적으로 취소하였습니다
title: 세션
view_authentication_history: 내 계정에 대한 인증 이력 보기
diff --git a/config/locales/lt.yml b/config/locales/lt.yml
index cc00ed7e05..7ad63c5e39 100644
--- a/config/locales/lt.yml
+++ b/config/locales/lt.yml
@@ -232,6 +232,12 @@ lt:
unassign: Nepriskirti
unresolved: Neišspręsti
updated_at: Atnaujinti
+ roles:
+ everyone: Numatytieji leidimai
+ everyone_full_description_html: Tai – bazinis vaidmuo, turintis įtakos visiems naudotojams, net ir tiems, kurie neturi priskirto vaidmens. Visi kiti vaidmenys iš jo paveldi teises.
+ settings:
+ domain_blocks:
+ all: Visiems
statuses:
back_to_account: Atgal į paskyros puslapį
media:
@@ -250,6 +256,10 @@ lt:
body: "%{reporter} parašė skundą apie %{target}"
body_remote: Kažkas iš %{domain} parašė skundą apie %{target}
subject: Naujas skundas %{instance} (#%{id})
+ appearance:
+ localization:
+ body: Mastodon verčia savanoriai.
+ guide_link_text: Visi gali prisidėti.
application_mailer:
notification_preferences: Keisti el pašto parinktis
settings: 'Keisti el pašto parinktis: %{link}'
@@ -458,9 +468,9 @@ lt:
private: Tik sekėjams
private_long: Rodyti tik sekėjams
public: Viešas
- public_long: Matyti gali visi
+ public_long: Visi gali matyti
unlisted: Neįtrauktas į sąrašus
- unlisted_long: Matyti gali visi, tačiau nėra įtraukta į viešas laiko juostas
+ unlisted_long: Matyti gali visi, tačiau nėra įtraukti į viešąsias laiko skales
stream_entries:
sensitive_content: Jautrus turinys
themes:
@@ -507,4 +517,5 @@ lt:
seamless_external_login: Jūs esate prisijungę per išorini įrenginį, todėl slaptąžodis ir el pašto nustatymai neprieinami.
signed_in_as: 'Prisijungta kaip:'
verification:
+ hint_html: "Savo tapatybės patvirtinimas Mastodon skirtas visiems. Remiantis atviraisiais žiniatinklio standartais, dabar ir visam laikui nemokamas. Viskas, ko tau reikia, yra asmeninė svetainė, pagal kurią žmonės tave atpažįsta. Kai iš savo profilio pateiksi nuorodą į šią svetainę, patikrinsime, ar svetainėje yra nuoroda į tavo profilį, ir parodysime vizualinį indikatorių."
verification: Patvirtinimas
diff --git a/config/locales/ru.yml b/config/locales/ru.yml
index 945b190435..7bfccb9a0f 100644
--- a/config/locales/ru.yml
+++ b/config/locales/ru.yml
@@ -1079,6 +1079,7 @@ ru:
confirmations:
awaiting_review: Ваш адрес электронной почты подтвержден! Сотрудники %{domain} проверяют вашу регистрацию. Вы получите письмо, если они подтвердят вашу учетную запись!
awaiting_review_title: Ваша регистрация проверяется
+ clicking_this_link: нажатие на эту ссылку
login_link: войти
proceed_to_login_html: Теперь вы можете перейти к %{login_link}.
registration_complete: Ваша регистрация на %{domain} завершена!
@@ -1536,7 +1537,7 @@ ru:
update:
subject: "%{name} изменил(а) пост"
notifications:
- administration_emails: E-mail уведомления администратора
+ administration_emails: Уведомления администратора по электронной почте
email_events: События для e-mail уведомлений
email_events_hint: 'Выберите события, для которых вы хотели бы получать уведомления:'
other_settings: Остальные настройки уведомлений
@@ -1631,6 +1632,7 @@ ru:
over_total_limit: Вы превысили лимит на %{limit} запланированных постов
too_soon: Запланированная дата должна быть в будущем
self_destruct:
+ lead_html: К сожалению, %{domain} закрывается навсегда. Если вас учётная запись находиться здесь вы не сможете продолжить использовать его, но вы можете запросить резервную копию ваших данных.
title: Этот сервер закрывается
sessions:
activity: Последняя активность
diff --git a/config/locales/simple_form.lt.yml b/config/locales/simple_form.lt.yml
index 6c5cb837ac..69a6b86dd1 100644
--- a/config/locales/simple_form.lt.yml
+++ b/config/locales/simple_form.lt.yml
@@ -1 +1,45 @@
+---
lt:
+ simple_form:
+ hints:
+ account:
+ discoverable: Tavo vieši įrašai ir profilis gali būti rodomi arba rekomenduojami įvairiose Mastodon vietose, o profilis gali būti siūlomas kitiems naudotojams.
+ display_name: Tavo pilnas vardas arba smagus vardas.
+ fields: Tavo pagrindinis puslapis, įvardžiai, amžius, bet kas, ko tik nori.
+ indexable: Tavo vieši įrašai gali būti rodomi Mastodon paieškos rezultatuose. Žmonės, kurie bendravo su tavo įrašais, gali jų ieškoti nepriklausomai nuo to.
+ note: 'Gali @paminėti kitus žmones arba #saitažodžius.'
+ show_collections: Žmonės galės peržiūrėti tavo sekimus ir sekėjus. Žmonės, kuriuos seki, matys, kad juos seki, nepaisant to.
+ unlocked: Žmonės galės tave sekti nepaprašę patvirtinimo. Panaikink žymėjimą, jei nori peržiūrėti sekimo prašymus ir pasirinkti, ar priimti, ar atmesti naujus sekėjus.
+ account_warning_preset:
+ text: Gali naudoti įrašų sintaksę, pavyzdžiui, URL adresus, saitažodus ir paminėjimus
+ defaults:
+ header: PNG, GIF arba JPG. Ne daugiau kaip %{size}. Bus sumažintas iki %{dimensions}tšk.
+ inbox_url: Nukopijuok URL adresą iš pradinio puslapio perdavėjo, kurį nori naudoti
+ irreversible: Filtruoti įrašai išnyks negrįžtamai, net jei vėliau filtras bus pašalintas
+ locale: Naudotojo sąsajos kalba, el. laiškai ir stumiamieji pranešimai
+ password: Naudok bent 8 simbolius
+ phrase: Bus suderinta, neatsižvelgiant į teksto korpusą arba įrašo turinio įspėjimą
+ setting_display_media_hide_all: Visada slėpti žiniasklaidą
+ setting_display_media_show_all: Visada rodyti žiniasklaidą
+ setting_use_blurhash: Gradientai pagrįsti paslėptų vaizdų spalvomis, tačiau užgožia bet kokias detales
+ setting_use_pending_items: Slėpti laiko skalės naujienas po paspaudimo, vietoj automatinio kanalo slinkimo
+ featured_tag:
+ name: 'Štai keletas pastaruoju metu dažniausiai saitažodžių, kurių tu naudojai:'
+ form_admin_settings:
+ peers_api_enabled: Domenų pavadinimų sąrašas, su kuriais šis serveris susidūrė fediverse. Čia nėra duomenų apie tai, ar tu bendrauji su tam tikru serveriu, tik apie tai, kad tavo serveris apie jį žino. Tai naudojama tarnybose, kurios renka federacijos statistiką bendrąja prasme.
+ site_contact_email: Kaip žmonės gali su tavimi susisiekti teisiniais ar pagalbos užklausimais.
+ site_contact_username: Kaip žmonės gali tave pasiekti Mastodon.
+ site_extended_description: Bet kokia papildoma informacija, kuri gali būti naudinga lankytojams ir naudotojams. Gali būti struktūrizuota naudojant Markdown sintaksę.
+ trends: Trendai rodo, kurios įrašai, saitažodžiai ir naujienų istorijos tavo serveryje sulaukia didžiausio susidomėjimo.
+ sessions:
+ webauthn: Jei tai USB raktas, būtinai jį įkišk ir, jei reikia, paliesk.
+ settings:
+ indexable: Tavo profilio puslapis gali būti rodomas paieškos rezultatuose Google, Bing ir kituose.
+ labels:
+ featured_tag:
+ name: Saitažodis
+ tag:
+ listable: Leisti šį saitažodį rodyti paieškose ir pasiūlymuose
+ name: Saitažodis
+ trendable: Leisti šį saitažodį rodyti pagal trendus
+ usable: Leisti įrašams naudoti šį saitažodį
diff --git a/config/locales/sk.yml b/config/locales/sk.yml
index b3bc8c2dcd..954ef745da 100644
--- a/config/locales/sk.yml
+++ b/config/locales/sk.yml
@@ -98,7 +98,7 @@ sk:
disabled: Blokovaný
pending: Čakajúci
silenced: Obmedzený
- suspended: Vylúčený/á
+ suspended: Pozastavený/á
title: Moderácia
moderation_notes: Moderátorské poznámky
most_recent_activity: Posledná aktivita
@@ -149,8 +149,8 @@ sk:
statuses: Príspevkov
strikes: Predchádzajúce údery
subscribe: Odoberaj
- suspend: Vylúč
- suspended: Vylúčený/á
+ suspend: Pozastav
+ suspended: Pozastavený/á
suspension_irreversible: Údaje tohto účtu boli nenávratne vymazané. Účet môžete zrušiť, aby sa dal používať, ale neobnovia sa žiadne údaje, ktoré predtým mal.
suspension_reversible_hint_html: Účet bol pozastavený a údaje budú úplne odstránené dňa %{date}. Dovtedy je možné účet obnoviť bez akýchkoľvek nepriaznivých účinkov. Ak chcete okamžite odstrániť všetky údaje účtu, môžete tak urobiť nižšie.
title: Účty
@@ -162,6 +162,7 @@ sk:
undo_suspension: Zruš blokovanie
unsilenced_msg: Úspešne zrušené obmedzenie účtu %{username}
unsubscribe: Prestaň odoberať
+ unsuspended_msg: "%{username} ov/in účet úspešne spojazdnený"
username: Prezývka
view_domain: Ukáž súhrn pre doménu
warn: Varuj
@@ -209,7 +210,7 @@ sk:
resolve_report: Vyrieš nahlásený problém
sensitive_account: Vynúť všetky médiá na účte ako chúlostivé
silence_account: Utíš účet
- suspend_account: Vylúč účet
+ suspend_account: Pozastav účet
unassigned_report: Odober priradenie nahlásenia
unblock_email_account: Odblokuj emailovú adresu
unsilence_account: Zvráť obmedzenie účtu
@@ -255,6 +256,7 @@ sk:
silence_account_html: "%{name} obmedzil/a účet %{target}"
suspend_account_html: "%{name} zablokoval/a účet používateľa %{target}"
unassigned_report_html: "%{name} odobral/a report od %{target}"
+ unsuspend_account_html: "%{name} spojazdnil/a účet %{target}"
update_user_role_html: "%{name} zmenil/a rolu pre %{target}"
deleted_account: zmazaný účet
empty: Žiadne záznamy nenájdené.
@@ -341,6 +343,7 @@ sk:
confirm_suspension:
cancel: Zruš
confirm: Vylúč
+ preamble_html: Chystáš sa vylúčiť %{domain} a jej poddomény.
title: Potvrď blokovanie domény %{domain}
created_msg: Doména je v štádiu blokovania
destroyed_msg: Blokovanie domény bolo zrušené
@@ -355,7 +358,7 @@ sk:
severity:
noop: Nič
silence: Obmedz
- suspend: Vylúč
+ suspend: Pozastav
title: Nové blokovanie domény
not_permitted: Nemáš povolenie na vykonanie tohto kroku
obfuscate: Zatemniť názov domény
@@ -416,7 +419,7 @@ sk:
reject_media: Zamietni médiá
reject_reports: Zamietni hlásenia
silence: Obmedzená
- suspend: Vylúč
+ suspend: Pozastav
policy: Zásady
reason: Verejné odôvodnenie
title: Zásady o obsahu
@@ -537,7 +540,7 @@ sk:
statuses: Nahlásený obsah
summary:
action_preambles:
- suspend_html: 'Chystáš sa vylúčiť účet @%{acct}. To urobí:'
+ suspend_html: 'Chystáš sa pozastaviť účet @%{acct}. To urobí:'
actions:
delete_html: Vymaž pohoršujúce príspevky
mark_as_sensitive_html: Označ médiá pohoršujúcich príspevkov za chúlostivé
diff --git a/lib/tasks/mastodon.rake b/lib/tasks/mastodon.rake
index f2a90cd92e..f50ef4bbff 100644
--- a/lib/tasks/mastodon.rake
+++ b/lib/tasks/mastodon.rake
@@ -427,7 +427,11 @@ namespace :mastodon do
from: env['SMTP_FROM_ADDRESS'],
}
- mail = ActionMailer::Base.new.mail to: send_to, subject: 'Test', body: 'Mastodon SMTP configuration works!'
+ mail = ActionMailer::Base.new.mail(
+ to: send_to,
+ subject: 'Test', # rubocop:disable Rails/I18nLocaleTexts
+ body: 'Mastodon SMTP configuration works!'
+ )
mail.deliver
break
rescue => e
diff --git a/package.json b/package.json
index 48d772bdfb..f9c934506b 100644
--- a/package.json
+++ b/package.json
@@ -211,7 +211,7 @@
"husky": "^8.0.3",
"jest": "^29.5.0",
"jest-environment-jsdom": "^29.5.0",
- "lint-staged": "^13.2.2",
+ "lint-staged": "^15.0.0",
"prettier": "^3.0.0",
"react-test-renderer": "^18.2.0",
"stylelint": "^15.10.1",
diff --git a/spec/controllers/api/v1/streaming_controller_spec.rb b/spec/controllers/api/v1/streaming_controller_spec.rb
index 06639a13fd..c3e7153ce8 100644
--- a/spec/controllers/api/v1/streaming_controller_spec.rb
+++ b/spec/controllers/api/v1/streaming_controller_spec.rb
@@ -26,7 +26,6 @@ describe Api::V1::StreamingController do
context 'with streaming api on different host' do
before do
Rails.configuration.x.streaming_api_base_url = "wss://streaming-#{Rails.configuration.x.web_domain}"
- @streaming_host = URI.parse(Rails.configuration.x.streaming_api_base_url).host
end
describe 'GET #index' do
@@ -38,7 +37,13 @@ describe Api::V1::StreamingController do
[:scheme, :path, :query, :fragment].each do |part|
expect(redirect_to_uri.send(part)).to eq(request_uri.send(part)), "redirect target #{part}"
end
- expect(redirect_to_uri.host).to eq(@streaming_host), 'redirect target host'
+ expect(redirect_to_uri.host).to eq(streaming_host), 'redirect target host'
+ end
+
+ private
+
+ def streaming_host
+ URI.parse(Rails.configuration.x.streaming_api_base_url).host
end
end
end
diff --git a/spec/controllers/auth/passwords_controller_spec.rb b/spec/controllers/auth/passwords_controller_spec.rb
index ef5706ee78..e7f7ab4676 100644
--- a/spec/controllers/auth/passwords_controller_spec.rb
+++ b/spec/controllers/auth/passwords_controller_spec.rb
@@ -18,12 +18,14 @@ describe Auth::PasswordsController do
before do
request.env['devise.mapping'] = Devise.mappings[:user]
- @token = user.send_reset_password_instructions
end
context 'with valid reset_password_token' do
it 'returns http success' do
- get :edit, params: { reset_password_token: @token }
+ token = user.send_reset_password_instructions
+
+ get :edit, params: { reset_password_token: token }
+
expect(response).to have_http_status(200)
end
end
@@ -38,9 +40,9 @@ describe Auth::PasswordsController do
describe 'POST #update' do
let(:user) { Fabricate(:user) }
+ let(:password) { 'reset0password' }
before do
- @password = 'reset0password'
request.env['devise.mapping'] = Devise.mappings[:user]
end
@@ -50,9 +52,9 @@ describe Auth::PasswordsController do
let!(:web_push_subscription) { Fabricate(:web_push_subscription, access_token: access_token) }
before do
- @token = user.send_reset_password_instructions
+ token = user.send_reset_password_instructions
- post :update, params: { user: { password: @password, password_confirmation: @password, reset_password_token: @token } }
+ post :update, params: { user: { password: password, password_confirmation: password, reset_password_token: token } }
end
it 'redirect to sign in' do
@@ -63,7 +65,7 @@ describe Auth::PasswordsController do
this_user = User.find(user.id)
expect(this_user).to_not be_nil
- expect(this_user.valid_password?(@password)).to be true
+ expect(this_user.valid_password?(password)).to be true
end
it 'deactivates all sessions' do
@@ -81,7 +83,7 @@ describe Auth::PasswordsController do
context 'with invalid reset_password_token' do
before do
- post :update, params: { user: { password: @password, password_confirmation: @password, reset_password_token: 'some_invalid_value' } }
+ post :update, params: { user: { password: password, password_confirmation: password, reset_password_token: 'some_invalid_value' } }
end
it 'renders reset password' do
diff --git a/spec/controllers/concerns/export_controller_concern_spec.rb b/spec/controllers/concerns/export_controller_concern_spec.rb
index e253aa5206..7f0a7c5b54 100644
--- a/spec/controllers/concerns/export_controller_concern_spec.rb
+++ b/spec/controllers/concerns/export_controller_concern_spec.rb
@@ -11,7 +11,7 @@ describe ExportControllerConcern do
end
def export_data
- @export.account.username
+ 'body data value'
end
end
@@ -24,7 +24,7 @@ describe ExportControllerConcern do
expect(response).to have_http_status(200)
expect(response.media_type).to eq 'text/csv'
expect(response.headers['Content-Disposition']).to start_with 'attachment; filename="anonymous.csv"'
- expect(response.body).to eq user.account.username
+ expect(response.body).to eq 'body data value'
end
it 'returns unauthorized when not signed in' do
diff --git a/spec/controllers/settings/imports_controller_spec.rb b/spec/controllers/settings/imports_controller_spec.rb
index 35d2f08193..900d0eb90d 100644
--- a/spec/controllers/settings/imports_controller_spec.rb
+++ b/spec/controllers/settings/imports_controller_spec.rb
@@ -194,7 +194,7 @@ RSpec.describe Settings::ImportsController do
let!(:rows) do
[
{ 'acct' => 'foo@bar' },
- { 'acct' => 'user@bar', 'show_reblogs' => false, 'notify' => true, 'languages' => ['fr', 'de'] },
+ { 'acct' => 'user@bar', 'show_reblogs' => false, 'notify' => true, 'languages' => %w(fr de) },
].map { |data| Fabricate(:bulk_import_row, bulk_import: bulk_import, data: data) }
end
diff --git a/spec/controllers/statuses_cleanup_controller_spec.rb b/spec/controllers/statuses_cleanup_controller_spec.rb
index e082b69c51..8a72621993 100644
--- a/spec/controllers/statuses_cleanup_controller_spec.rb
+++ b/spec/controllers/statuses_cleanup_controller_spec.rb
@@ -5,9 +5,10 @@ require 'rails_helper'
RSpec.describe StatusesCleanupController do
render_views
+ let!(:user) { Fabricate(:user) }
+
before do
- @user = Fabricate(:user)
- sign_in @user, scope: :user
+ sign_in user, scope: :user
end
describe 'GET #show' do
@@ -30,9 +31,9 @@ RSpec.describe StatusesCleanupController do
end
it 'updates the account status cleanup policy' do
- expect(@user.account.statuses_cleanup_policy.enabled).to be true
- expect(@user.account.statuses_cleanup_policy.keep_direct).to be false
- expect(@user.account.statuses_cleanup_policy.keep_polls).to be true
+ expect(user.account.statuses_cleanup_policy.enabled).to be true
+ expect(user.account.statuses_cleanup_policy.keep_direct).to be false
+ expect(user.account.statuses_cleanup_policy.keep_polls).to be true
end
it 'redirects' do
diff --git a/spec/fabricators/session_activation_fabricator.rb b/spec/fabricators/session_activation_fabricator.rb
index 4b5244cec6..655ec37aa8 100644
--- a/spec/fabricators/session_activation_fabricator.rb
+++ b/spec/fabricators/session_activation_fabricator.rb
@@ -2,5 +2,5 @@
Fabricator(:session_activation) do
user { Fabricate.build(:user) }
- session_id 'MyString'
+ session_id { sequence(:session_id) { |i| "session_id_#{i}" } }
end
diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb
index 70d8138ccd..1ccf19a96b 100644
--- a/spec/helpers/application_helper_spec.rb
+++ b/spec/helpers/application_helper_spec.rb
@@ -296,5 +296,51 @@ describe ApplicationHelper do
expect(helper.title).to eq 'site title'
expect(Rails.env).to have_received(:production?)
end
+
+ it 'returns site title with note on non-production environment' do
+ Setting.site_title = 'site title'
+ allow(Rails.env).to receive(:production?).and_return(false)
+ expect(helper.title).to eq 'site title (Dev)'
+ expect(Rails.env).to have_received(:production?)
+ end
+ end
+
+ describe 'html_title' do
+ before do
+ allow(Rails.env).to receive(:production?).and_return(true)
+ end
+
+ around do |example|
+ site_title = Setting.site_title
+ example.run
+ Setting.site_title = site_title
+ end
+
+ context 'with a page_title content_for value' do
+ it 'uses the value in the html title' do
+ Setting.site_title = 'Site Title'
+ helper.content_for(:page_title, 'Test Value')
+
+ expect(helper.html_title).to eq 'Test Value - Site Title'
+ expect(helper.html_title).to be_html_safe
+ end
+
+ it 'removes extra new lines' do
+ Setting.site_title = 'Site Title'
+ helper.content_for(:page_title, "Test Value\n")
+
+ expect(helper.html_title).to eq 'Test Value - Site Title'
+ expect(helper.html_title).to be_html_safe
+ end
+ end
+
+ context 'without any page_title content_for value' do
+ it 'returns the site title' do
+ Setting.site_title = 'Site Title'
+
+ expect(helper.html_title).to eq 'Site Title'
+ expect(helper.html_title).to be_html_safe
+ end
+ end
end
end
diff --git a/spec/helpers/flashes_helper_spec.rb b/spec/helpers/flashes_helper_spec.rb
index 035e8a1de0..a6a3b062d7 100644
--- a/spec/helpers/flashes_helper_spec.rb
+++ b/spec/helpers/flashes_helper_spec.rb
@@ -4,16 +4,23 @@ require 'rails_helper'
describe FlashesHelper do
describe 'user_facing_flashes' do
- it 'returns user facing flashes' do
+ before do
+ # rubocop:disable Rails/I18nLocaleTexts
flash[:alert] = 'an alert'
flash[:error] = 'an error'
flash[:notice] = 'a notice'
flash[:success] = 'a success'
flash[:not_user_facing] = 'a not user facing flash'
- expect(helper.user_facing_flashes).to eq 'alert' => 'an alert',
- 'error' => 'an error',
- 'notice' => 'a notice',
- 'success' => 'a success'
+ # rubocop:enable Rails/I18nLocaleTexts
+ end
+
+ it 'returns user facing flashes' do
+ expect(helper.user_facing_flashes).to eq(
+ 'alert' => 'an alert',
+ 'error' => 'an error',
+ 'notice' => 'a notice',
+ 'success' => 'a success'
+ )
end
end
end
diff --git a/spec/lib/translation_service/deepl_spec.rb b/spec/lib/translation_service/deepl_spec.rb
index 5a1d0f094a..4797a3dc63 100644
--- a/spec/lib/translation_service/deepl_spec.rb
+++ b/spec/lib/translation_service/deepl_spec.rb
@@ -8,12 +8,14 @@ RSpec.describe TranslationService::DeepL do
let(:plan) { 'advanced' }
before do
- stub_request(:get, 'https://api.deepl.com/v2/languages?type=source').to_return(
- body: '[{"language":"EN","name":"English"},{"language":"UK","name":"Ukrainian"}]'
- )
- stub_request(:get, 'https://api.deepl.com/v2/languages?type=target').to_return(
- body: '[{"language":"EN-GB","name":"English (British)"},{"language":"ZH","name":"Chinese"}]'
- )
+ %w(api-free.deepl.com api.deepl.com).each do |host|
+ stub_request(:get, "https://#{host}/v2/languages?type=source").to_return(
+ body: '[{"language":"EN","name":"English"},{"language":"UK","name":"Ukrainian"}]'
+ )
+ stub_request(:get, "https://#{host}/v2/languages?type=target").to_return(
+ body: '[{"language":"EN-GB","name":"English (British)"},{"language":"ZH","name":"Chinese"}]'
+ )
+ end
end
describe '#translate' do
@@ -73,28 +75,25 @@ RSpec.describe TranslationService::DeepL do
end
end
- describe '#request' do
+ describe 'the paid and free plan api hostnames' do
before do
- stub_request(:any, //)
- # rubocop:disable Lint/EmptyBlock
- service.send(:request, :get, '/v2/languages') { |res| }
- # rubocop:enable Lint/EmptyBlock
+ service.languages
end
- it 'uses paid plan base URL' do
- expect(a_request(:get, 'https://api.deepl.com/v2/languages')).to have_been_made.once
- end
-
- context 'with free plan' do
- let(:plan) { 'free' }
-
- it 'uses free plan base URL' do
- expect(a_request(:get, 'https://api-free.deepl.com/v2/languages')).to have_been_made.once
+ context 'without a plan set' do
+ it 'uses paid plan base URL and sends an API key' do
+ expect(a_request(:get, 'https://api.deepl.com/v2/languages?type=source').with(headers: { Authorization: 'DeepL-Auth-Key my-api-key' })).to have_been_made.once
+ expect(a_request(:get, 'https://api.deepl.com/v2/languages?type=target').with(headers: { Authorization: 'DeepL-Auth-Key my-api-key' })).to have_been_made.once
end
end
- it 'sends API key' do
- expect(a_request(:get, 'https://api.deepl.com/v2/languages').with(headers: { Authorization: 'DeepL-Auth-Key my-api-key' })).to have_been_made.once
+ context 'with the free plan' do
+ let(:plan) { 'free' }
+
+ it 'uses free plan base URL and sends an API key' do
+ expect(a_request(:get, 'https://api-free.deepl.com/v2/languages?type=source').with(headers: { Authorization: 'DeepL-Auth-Key my-api-key' })).to have_been_made.once
+ expect(a_request(:get, 'https://api-free.deepl.com/v2/languages?type=target').with(headers: { Authorization: 'DeepL-Auth-Key my-api-key' })).to have_been_made.once
+ end
end
end
end
diff --git a/spec/models/concerns/account_finder_concern_spec.rb b/spec/models/concerns/account_finder_concern_spec.rb
index 25f4fdec4b..3a94c4d545 100644
--- a/spec/models/concerns/account_finder_concern_spec.rb
+++ b/spec/models/concerns/account_finder_concern_spec.rb
@@ -4,17 +4,15 @@ require 'rails_helper'
describe AccountFinderConcern do
describe 'local finders' do
- before do
- @account = Fabricate(:account, username: 'Alice')
- end
+ let!(:account) { Fabricate(:account, username: 'Alice') }
describe '.find_local' do
it 'returns case-insensitive result' do
- expect(Account.find_local('alice')).to eq(@account)
+ expect(Account.find_local('alice')).to eq(account)
end
it 'returns correctly cased result' do
- expect(Account.find_local('Alice')).to eq(@account)
+ expect(Account.find_local('Alice')).to eq(account)
end
it 'returns nil without a match' do
@@ -36,7 +34,7 @@ describe AccountFinderConcern do
describe '.find_local!' do
it 'returns matching result' do
- expect(Account.find_local!('alice')).to eq(@account)
+ expect(Account.find_local!('alice')).to eq(account)
end
it 'raises on non-matching result' do
@@ -54,17 +52,15 @@ describe AccountFinderConcern do
end
describe 'remote finders' do
- before do
- @account = Fabricate(:account, username: 'Alice', domain: 'mastodon.social')
- end
+ let!(:account) { Fabricate(:account, username: 'Alice', domain: 'mastodon.social') }
describe '.find_remote' do
it 'returns exact match result' do
- expect(Account.find_remote('alice', 'mastodon.social')).to eq(@account)
+ expect(Account.find_remote('alice', 'mastodon.social')).to eq(account)
end
it 'returns case-insensitive result' do
- expect(Account.find_remote('ALICE', 'MASTODON.SOCIAL')).to eq(@account)
+ expect(Account.find_remote('ALICE', 'MASTODON.SOCIAL')).to eq(account)
end
it 'returns nil when username does not match' do
@@ -90,7 +86,7 @@ describe AccountFinderConcern do
describe '.find_remote!' do
it 'returns matching result' do
- expect(Account.find_remote!('alice', 'mastodon.social')).to eq(@account)
+ expect(Account.find_remote!('alice', 'mastodon.social')).to eq(account)
end
it 'raises on non-matching result' do
diff --git a/spec/models/concerns/account_interactions_spec.rb b/spec/models/concerns/account_interactions_spec.rb
index 41aedd18b2..4cbdf972a4 100644
--- a/spec/models/concerns/account_interactions_spec.rb
+++ b/spec/models/concerns/account_interactions_spec.rb
@@ -655,38 +655,36 @@ describe AccountInteractions do
end
describe 'ignoring reblogs from an account' do
- before do
- @me = Fabricate(:account, username: 'Me')
- @you = Fabricate(:account, username: 'You')
- end
+ let!(:me) { Fabricate(:account, username: 'Me') }
+ let!(:you) { Fabricate(:account, username: 'You') }
context 'with the reblogs option unspecified' do
before do
- @me.follow!(@you)
+ me.follow!(you)
end
it 'defaults to showing reblogs' do
- expect(@me.muting_reblogs?(@you)).to be(false)
+ expect(me.muting_reblogs?(you)).to be(false)
end
end
context 'with the reblogs option set to false' do
before do
- @me.follow!(@you, reblogs: false)
+ me.follow!(you, reblogs: false)
end
it 'does mute reblogs' do
- expect(@me.muting_reblogs?(@you)).to be(true)
+ expect(me.muting_reblogs?(you)).to be(true)
end
end
context 'with the reblogs option set to true' do
before do
- @me.follow!(@you, reblogs: true)
+ me.follow!(you, reblogs: true)
end
it 'does not mute reblogs' do
- expect(@me.muting_reblogs?(@you)).to be(false)
+ expect(me.muting_reblogs?(you)).to be(false)
end
end
end
diff --git a/spec/models/concerns/remotable_spec.rb b/spec/models/concerns/remotable_spec.rb
index 6413b6f467..db690da3c2 100644
--- a/spec/models/concerns/remotable_spec.rb
+++ b/spec/models/concerns/remotable_spec.rb
@@ -69,7 +69,9 @@ RSpec.describe Remotable do
context 'with an invalid URL' do
before do
- allow(Addressable::URI).to receive_message_chain(:parse, :normalize).with(url).with(no_args).and_raise(Addressable::URI::InvalidURIError)
+ parsed = instance_double(Addressable::URI)
+ allow(parsed).to receive(:normalize).with(no_args).and_raise(Addressable::URI::InvalidURIError)
+ allow(Addressable::URI).to receive(:parse).with(url).and_return(parsed)
end
it 'makes no request' do
diff --git a/spec/models/form/import_spec.rb b/spec/models/form/import_spec.rb
index 2b70e396b9..872697485e 100644
--- a/spec/models/form/import_spec.rb
+++ b/spec/models/form/import_spec.rb
@@ -296,7 +296,7 @@ RSpec.describe Form::Import do
it_behaves_like 'on successful import', 'following', 'merge', 'following_accounts.csv', [
{ 'acct' => 'user@example.com', 'show_reblogs' => true, 'notify' => false, 'languages' => nil },
- { 'acct' => 'user@test.com', 'show_reblogs' => true, 'notify' => true, 'languages' => ['en', 'fr'] },
+ { 'acct' => 'user@test.com', 'show_reblogs' => true, 'notify' => true, 'languages' => %w(en fr) },
]
it_behaves_like 'on successful import', 'muting', 'merge', 'muted_accounts.csv', [
diff --git a/spec/models/public_feed_spec.rb b/spec/models/public_feed_spec.rb
index fbbdf62584..8a1a01e892 100644
--- a/spec/models/public_feed_spec.rb
+++ b/spec/models/public_feed_spec.rb
@@ -199,15 +199,13 @@ RSpec.describe PublicFeed do
end
describe 'with an account passed in' do
- subject { described_class.new(@account).get(20).map(&:id) }
+ subject { described_class.new(account).get(20).map(&:id) }
- before do
- @account = Fabricate(:account)
- end
+ let!(:account) { Fabricate(:account) }
it 'excludes statuses from accounts blocked by the account' do
blocked = Fabricate(:account)
- @account.block!(blocked)
+ account.block!(blocked)
blocked_status = Fabricate(:status, account: blocked)
expect(subject).to_not include(blocked_status.id)
@@ -215,7 +213,7 @@ RSpec.describe PublicFeed do
it 'excludes statuses from accounts who have blocked the account' do
blocker = Fabricate(:account)
- blocker.block!(@account)
+ blocker.block!(account)
blocked_status = Fabricate(:status, account: blocker)
expect(subject).to_not include(blocked_status.id)
@@ -223,7 +221,7 @@ RSpec.describe PublicFeed do
it 'excludes statuses from accounts muted by the account' do
muted = Fabricate(:account)
- @account.mute!(muted)
+ account.mute!(muted)
muted_status = Fabricate(:status, account: muted)
expect(subject).to_not include(muted_status.id)
@@ -231,7 +229,7 @@ RSpec.describe PublicFeed do
it 'excludes statuses from accounts from personally blocked domains' do
blocked = Fabricate(:account, domain: 'example.com')
- @account.block_domain!(blocked.domain)
+ account.block_domain!(blocked.domain)
blocked_status = Fabricate(:status, account: blocked)
expect(subject).to_not include(blocked_status.id)
@@ -239,7 +237,7 @@ RSpec.describe PublicFeed do
context 'with language preferences' do
it 'excludes statuses in languages not allowed by the account user' do
- @account.user.update(chosen_languages: [:en, :es])
+ account.user.update(chosen_languages: [:en, :es])
en_status = Fabricate(:status, language: 'en')
es_status = Fabricate(:status, language: 'es')
fr_status = Fabricate(:status, language: 'fr')
@@ -250,7 +248,7 @@ RSpec.describe PublicFeed do
end
it 'includes all languages when user does not have a setting' do
- @account.user.update(chosen_languages: nil)
+ account.user.update(chosen_languages: nil)
en_status = Fabricate(:status, language: 'en')
es_status = Fabricate(:status, language: 'es')
@@ -260,7 +258,7 @@ RSpec.describe PublicFeed do
end
it 'includes all languages when account does not have a user' do
- @account.update(user: nil)
+ account.update(user: nil)
en_status = Fabricate(:status, language: 'en')
es_status = Fabricate(:status, language: 'es')
diff --git a/spec/models/session_activation_spec.rb b/spec/models/session_activation_spec.rb
index 4012d46fd7..bed411c369 100644
--- a/spec/models/session_activation_spec.rb
+++ b/spec/models/session_activation_spec.rb
@@ -98,34 +98,44 @@ RSpec.describe SessionActivation do
end
context 'when id exists' do
- let(:id) { '1' }
+ let!(:session_activation) { Fabricate(:session_activation) }
- it 'calls where.destroy_all' do
- expect(described_class).to receive_message_chain(:where, :destroy_all)
- .with(session_id: id).with(no_args)
+ it 'destroys the record' do
+ described_class.deactivate(session_activation.session_id)
- described_class.deactivate(id)
+ expect { session_activation.reload }.to raise_error(ActiveRecord::RecordNotFound)
end
end
end
describe '.purge_old' do
- it 'calls order.offset.destroy_all' do
- expect(described_class).to receive_message_chain(:order, :offset, :destroy_all)
- .with('created_at desc').with(Rails.configuration.x.max_session_activations).with(no_args)
+ around do |example|
+ before = Rails.configuration.x.max_session_activations
+ Rails.configuration.x.max_session_activations = 1
+ example.run
+ Rails.configuration.x.max_session_activations = before
+ end
+ let!(:oldest_session_activation) { Fabricate(:session_activation, created_at: 10.days.ago) }
+ let!(:newest_session_activation) { Fabricate(:session_activation, created_at: 5.days.ago) }
+
+ it 'preserves the newest X records based on config' do
described_class.purge_old
+
+ expect { oldest_session_activation.reload }.to raise_error(ActiveRecord::RecordNotFound)
+ expect { newest_session_activation.reload }.to_not raise_error
end
end
describe '.exclusive' do
- let(:id) { '1' }
+ let!(:unwanted_session_activation) { Fabricate(:session_activation) }
+ let!(:wanted_session_activation) { Fabricate(:session_activation) }
- it 'calls where.destroy_all' do
- expect(described_class).to receive_message_chain(:where, :not, :destroy_all)
- .with(session_id: id).with(no_args)
+ it 'preserves supplied record and destroys all others' do
+ described_class.exclusive(wanted_session_activation.session_id)
- described_class.exclusive(id)
+ expect { unwanted_session_activation.reload }.to raise_error(ActiveRecord::RecordNotFound)
+ expect { wanted_session_activation.reload }.to_not raise_error
end
end
end
diff --git a/spec/models/setting_spec.rb b/spec/models/setting_spec.rb
index 5f53ee5634..b08136a1c1 100644
--- a/spec/models/setting_spec.rb
+++ b/spec/models/setting_spec.rb
@@ -77,10 +77,13 @@ RSpec.describe Setting do
let(:default_value) { { default_value: 'default_value' } }
it 'calls default_value.with_indifferent_access.merge!' do
- expect(default_value).to receive_message_chain(:with_indifferent_access, :merge!)
- .with(db_val.value)
+ indifferent_hash = instance_double(Hash, merge!: nil)
+ allow(default_value).to receive(:with_indifferent_access).and_return(indifferent_hash)
described_class[key]
+
+ expect(default_value).to have_received(:with_indifferent_access)
+ expect(indifferent_hash).to have_received(:merge!).with(db_val.value)
end
end
diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb
index c2ef3e3159..79f98f2e22 100644
--- a/spec/rails_helper.rb
+++ b/spec/rails_helper.rb
@@ -11,10 +11,6 @@ if RUN_SYSTEM_SPECS
ENV['STREAMING_API_BASE_URL'] = "http://localhost:#{STREAMING_PORT}"
end
-if RUN_SEARCH_SPECS
- # Include any configuration or setups specific to search tests here
-end
-
require File.expand_path('../config/environment', __dir__)
abort('The Rails environment is running in production mode!') if Rails.env.production?
@@ -35,8 +31,6 @@ Sidekiq.logger = nil
# System tests config
DatabaseCleaner.strategy = [:deletion]
-streaming_server_manager = StreamingServerManager.new
-search_data_manager = SearchDataManager.new
Devise::Test::ControllerHelpers.module_eval do
alias_method :original_sign_in, :sign_in
@@ -100,26 +94,7 @@ RSpec.configure do |config|
Capybara.current_driver = :rack_test
end
- config.before :suite do
- if RUN_SYSTEM_SPECS
- Webpacker.compile
- streaming_server_manager.start(port: STREAMING_PORT)
- end
-
- if RUN_SEARCH_SPECS
- Chewy.strategy(:urgent)
- search_data_manager.prepare_test_data
- end
- end
-
- config.after :suite do
- streaming_server_manager.stop
-
- search_data_manager.cleanup_test_data if RUN_SEARCH_SPECS
- end
-
config.around :each, type: :system do |example|
- # driven_by :selenium, using: :chrome, screen_size: [1600, 1200]
driven_by :selenium, using: :headless_chrome, screen_size: [1600, 1200]
# The streaming server needs access to the database
@@ -136,12 +111,6 @@ RSpec.configure do |config|
self.use_transactional_tests = true
end
- config.around :each, type: :search do |example|
- search_data_manager.populate_indexes
- example.run
- search_data_manager.remove_indexes
- end
-
config.before do |example|
unless example.metadata[:paperclip_processing]
allow_any_instance_of(Paperclip::Attachment).to receive(:post_process).and_return(true) # rubocop:disable RSpec/AnyInstance
diff --git a/spec/requests/cache_spec.rb b/spec/requests/cache_spec.rb
index 19232fce68..ce73d3af75 100644
--- a/spec/requests/cache_spec.rb
+++ b/spec/requests/cache_spec.rb
@@ -119,24 +119,26 @@ module TestEndpoints
end
describe 'Caching behavior' do
- shared_examples 'cachable response' do
- it 'does not set cookies' do
+ shared_examples 'cachable response' do |http_success: false|
+ it 'does not set cookies or set public cache control', :aggregate_failures do
expect(response.cookies).to be_empty
- end
- it 'sets public cache control', :aggregate_failures do
# expect(response.cache_control[:max_age]&.to_i).to be_positive
expect(response.cache_control[:public]).to be_truthy
expect(response.cache_control[:private]).to be_falsy
expect(response.cache_control[:no_store]).to be_falsy
expect(response.cache_control[:no_cache]).to be_falsy
+
+ expect(response).to have_http_status(200) if http_success
end
end
- shared_examples 'non-cacheable response' do
+ shared_examples 'non-cacheable response' do |http_success: false|
it 'sets private cache control' do
expect(response.cache_control[:private]).to be_truthy
expect(response.cache_control[:no_store]).to be_truthy
+
+ expect(response).to have_http_status(200) if http_success
end
end
@@ -149,7 +151,7 @@ describe 'Caching behavior' do
shared_examples 'language-dependent' do
it 'has a Vary on Accept-Language' do
- expect(response.headers['Vary']&.split(',')&.map { |x| x.strip.downcase }).to include('accept-language')
+ expect(response_vary_headers).to include('accept-language')
end
end
@@ -202,7 +204,7 @@ describe 'Caching behavior' do
it_behaves_like 'cachable response'
it 'has a Vary on Cookie' do
- expect(response.headers['Vary']&.split(',')&.map { |x| x.strip.downcase }).to include('cookie')
+ expect(response_vary_headers).to include('cookie')
end
it_behaves_like 'language-dependent' if TestEndpoints::LANGUAGE_DEPENDENT.include?(endpoint)
@@ -216,7 +218,7 @@ describe 'Caching behavior' do
it_behaves_like 'cachable response'
it 'has a Vary on Authorization' do
- expect(response.headers['Vary']&.split(',')&.map { |x| x.strip.downcase }).to include('authorization')
+ expect(response_vary_headers).to include('authorization')
end
it_behaves_like 'language-dependent' if TestEndpoints::LANGUAGE_DEPENDENT.include?(endpoint)
@@ -302,7 +304,7 @@ describe 'Caching behavior' do
it_behaves_like 'non-cacheable response'
it 'has a Vary on Cookie' do
- expect(response.headers['Vary']&.split(',')&.map { |x| x.strip.downcase }).to include('cookie')
+ expect(response_vary_headers).to include('cookie')
end
end
end
@@ -311,11 +313,7 @@ describe 'Caching behavior' do
describe endpoint do
before { get endpoint }
- it_behaves_like 'non-cacheable response'
-
- it 'returns HTTP success' do
- expect(response).to have_http_status(200)
- end
+ it_behaves_like 'non-cacheable response', http_success: true
end
end
@@ -351,7 +349,7 @@ describe 'Caching behavior' do
it_behaves_like 'non-cacheable response'
it 'has a Vary on Authorization' do
- expect(response.headers['Vary']&.split(',')&.map { |x| x.strip.downcase }).to include('authorization')
+ expect(response_vary_headers).to include('authorization')
end
end
end
@@ -362,11 +360,7 @@ describe 'Caching behavior' do
get endpoint, headers: { 'Authorization' => "Bearer #{token.token}" }
end
- it_behaves_like 'non-cacheable response'
-
- it 'returns HTTP success' do
- expect(response).to have_http_status(200)
- end
+ it_behaves_like 'non-cacheable response', http_success: true
end
end
@@ -393,11 +387,7 @@ describe 'Caching behavior' do
context 'when allowed for local users only' do
let(:show_domain_blocks) { 'users' }
- it_behaves_like 'non-cacheable response'
-
- it 'returns HTTP success' do
- expect(response).to have_http_status(200)
- end
+ it_behaves_like 'non-cacheable response', http_success: true
end
context 'when disabled' do
@@ -421,11 +411,7 @@ describe 'Caching behavior' do
get '/actor', sign_with: remote_actor, headers: { 'Accept' => 'application/activity+json' }
end
- it_behaves_like 'cachable response'
-
- it 'returns HTTP success' do
- expect(response).to have_http_status(200)
- end
+ it_behaves_like 'cachable response', http_success: true
end
TestEndpoints::REQUIRE_SIGNATURE.each do |endpoint|
@@ -434,11 +420,7 @@ describe 'Caching behavior' do
get endpoint, sign_with: remote_actor, headers: { 'Accept' => 'application/activity+json' }
end
- it_behaves_like 'non-cacheable response'
-
- it 'returns HTTP success' do
- expect(response).to have_http_status(200)
- end
+ it_behaves_like 'non-cacheable response', http_success: true
end
end
end
@@ -456,11 +438,7 @@ describe 'Caching behavior' do
get '/actor', headers: { 'Accept' => 'application/activity+json' }
end
- it_behaves_like 'cachable response'
-
- it 'returns HTTP success' do
- expect(response).to have_http_status(200)
- end
+ it_behaves_like 'cachable response', http_success: true
end
(TestEndpoints::REQUIRE_SIGNATURE + TestEndpoints::AuthorizedFetch::REQUIRE_SIGNATURE).each do |endpoint|
@@ -487,11 +465,7 @@ describe 'Caching behavior' do
get '/actor', sign_with: remote_actor, headers: { 'Accept' => 'application/activity+json' }
end
- it_behaves_like 'cachable response'
-
- it 'returns HTTP success' do
- expect(response).to have_http_status(200)
- end
+ it_behaves_like 'cachable response', http_success: true
end
(TestEndpoints::REQUIRE_SIGNATURE + TestEndpoints::AuthorizedFetch::REQUIRE_SIGNATURE).each do |endpoint|
@@ -500,11 +474,7 @@ describe 'Caching behavior' do
get endpoint, sign_with: remote_actor, headers: { 'Accept' => 'application/activity+json' }
end
- it_behaves_like 'non-cacheable response'
-
- it 'returns HTTP success' do
- expect(response).to have_http_status(200)
- end
+ it_behaves_like 'non-cacheable response', http_success: true
end
end
end
@@ -528,11 +498,7 @@ describe 'Caching behavior' do
get '/actor', headers: { 'Accept' => 'application/activity+json' }
end
- it_behaves_like 'cachable response'
-
- it 'returns HTTP success' do
- expect(response).to have_http_status(200)
- end
+ it_behaves_like 'cachable response', http_success: true
end
(TestEndpoints::REQUIRE_SIGNATURE + TestEndpoints::AuthorizedFetch::REQUIRE_SIGNATURE).each do |endpoint|
@@ -560,11 +526,7 @@ describe 'Caching behavior' do
get '/actor', sign_with: remote_actor, headers: { 'Accept' => 'application/activity+json' }
end
- it_behaves_like 'cachable response'
-
- it 'returns HTTP success' do
- expect(response).to have_http_status(200)
- end
+ it_behaves_like 'cachable response', http_success: true
end
(TestEndpoints::REQUIRE_SIGNATURE + TestEndpoints::AuthorizedFetch::REQUIRE_SIGNATURE).each do |endpoint|
@@ -573,11 +535,7 @@ describe 'Caching behavior' do
get endpoint, sign_with: remote_actor, headers: { 'Accept' => 'application/activity+json' }
end
- it_behaves_like 'non-cacheable response'
-
- it 'returns HTTP success' do
- expect(response).to have_http_status(200)
- end
+ it_behaves_like 'non-cacheable response', http_success: true
end
end
end
@@ -591,11 +549,7 @@ describe 'Caching behavior' do
get '/actor', sign_with: remote_actor, headers: { 'Accept' => 'application/activity+json' }
end
- it_behaves_like 'cachable response'
-
- it 'returns HTTP success' do
- expect(response).to have_http_status(200)
- end
+ it_behaves_like 'cachable response', http_success: true
end
(TestEndpoints::REQUIRE_SIGNATURE + TestEndpoints::AuthorizedFetch::REQUIRE_SIGNATURE).each do |endpoint|
@@ -667,7 +621,7 @@ describe 'Caching behavior' do
it_behaves_like 'non-cacheable response'
it 'has a Vary on Authorization' do
- expect(response.headers['Vary']&.split(',')&.map { |x| x.strip.downcase }).to include('authorization')
+ expect(response_vary_headers).to include('authorization')
end
end
end
@@ -678,13 +632,15 @@ describe 'Caching behavior' do
get endpoint, headers: { 'Authorization' => "Bearer #{token.token}" }
end
- it_behaves_like 'non-cacheable response'
-
- it 'returns HTTP success' do
- expect(response).to have_http_status(200)
- end
+ it_behaves_like 'non-cacheable response', http_success: true
end
end
end
end
+
+ private
+
+ def response_vary_headers
+ response.headers['Vary']&.split(',')&.map { |x| x.strip.downcase }
+ end
end
diff --git a/spec/services/remove_status_service_spec.rb b/spec/services/remove_status_service_spec.rb
index c19b4fac15..7754ae8004 100644
--- a/spec/services/remove_status_service_spec.rb
+++ b/spec/services/remove_status_service_spec.rb
@@ -20,71 +20,70 @@ RSpec.describe RemoveStatusService, type: :service do
end
context 'when removed status is not a reblog' do
+ let!(:status) { PostStatusService.new.call(alice, text: 'Hello @bob@example.com ThisIsASecret') }
+
before do
- @status = PostStatusService.new.call(alice, text: 'Hello @bob@example.com ThisIsASecret')
- FavouriteService.new.call(jeff, @status)
- Fabricate(:status, account: bill, reblog: @status, uri: 'hoge')
+ FavouriteService.new.call(jeff, status)
+ Fabricate(:status, account: bill, reblog: status, uri: 'hoge')
end
it 'removes status from author\'s home feed' do
- subject.call(@status)
- expect(HomeFeed.new(alice).get(10).pluck(:id)).to_not include(@status.id)
+ subject.call(status)
+ expect(HomeFeed.new(alice).get(10).pluck(:id)).to_not include(status.id)
end
it 'removes status from local follower\'s home feed' do
- subject.call(@status)
- expect(HomeFeed.new(jeff).get(10).pluck(:id)).to_not include(@status.id)
+ subject.call(status)
+ expect(HomeFeed.new(jeff).get(10).pluck(:id)).to_not include(status.id)
end
it 'sends Delete activity to followers' do
- subject.call(@status)
+ subject.call(status)
expect(a_request(:post, 'http://example.com/inbox').with(
body: hash_including({
'type' => 'Delete',
'object' => {
'type' => 'Tombstone',
- 'id' => ActivityPub::TagManager.instance.uri_for(@status),
- 'atomUri' => OStatus::TagManager.instance.uri_for(@status),
+ 'id' => ActivityPub::TagManager.instance.uri_for(status),
+ 'atomUri' => OStatus::TagManager.instance.uri_for(status),
},
})
)).to have_been_made.once
end
it 'sends Delete activity to rebloggers' do
- subject.call(@status)
+ subject.call(status)
expect(a_request(:post, 'http://example2.com/inbox').with(
body: hash_including({
'type' => 'Delete',
'object' => {
'type' => 'Tombstone',
- 'id' => ActivityPub::TagManager.instance.uri_for(@status),
- 'atomUri' => OStatus::TagManager.instance.uri_for(@status),
+ 'id' => ActivityPub::TagManager.instance.uri_for(status),
+ 'atomUri' => OStatus::TagManager.instance.uri_for(status),
},
})
)).to have_been_made.once
end
it 'remove status from notifications' do
- expect { subject.call(@status) }.to change {
+ expect { subject.call(status) }.to change {
Notification.where(activity_type: 'Favourite', from_account: jeff, account: alice).count
}.from(1).to(0)
end
end
context 'when removed status is a private self-reblog' do
- before do
- @original_status = Fabricate(:status, account: alice, text: 'Hello ThisIsASecret', visibility: :private)
- @status = ReblogService.new.call(alice, @original_status)
- end
+ let!(:original_status) { Fabricate(:status, account: alice, text: 'Hello ThisIsASecret', visibility: :private) }
+ let!(:status) { ReblogService.new.call(alice, original_status) }
it 'sends Undo activity to followers' do
- subject.call(@status)
+ subject.call(status)
expect(a_request(:post, 'http://example.com/inbox').with(
body: hash_including({
'type' => 'Undo',
'object' => hash_including({
'type' => 'Announce',
- 'object' => ActivityPub::TagManager.instance.uri_for(@original_status),
+ 'object' => ActivityPub::TagManager.instance.uri_for(original_status),
}),
})
)).to have_been_made.once
@@ -92,19 +91,17 @@ RSpec.describe RemoveStatusService, type: :service do
end
context 'when removed status is public self-reblog' do
- before do
- @original_status = Fabricate(:status, account: alice, text: 'Hello ThisIsASecret', visibility: :public)
- @status = ReblogService.new.call(alice, @original_status)
- end
+ let!(:original_status) { Fabricate(:status, account: alice, text: 'Hello ThisIsASecret', visibility: :public) }
+ let!(:status) { ReblogService.new.call(alice, original_status) }
it 'sends Undo activity to followers' do
- subject.call(@status)
+ subject.call(status)
expect(a_request(:post, 'http://example.com/inbox').with(
body: hash_including({
'type' => 'Undo',
'object' => hash_including({
'type' => 'Announce',
- 'object' => ActivityPub::TagManager.instance.uri_for(@original_status),
+ 'object' => ActivityPub::TagManager.instance.uri_for(original_status),
}),
})
)).to have_been_made.once
diff --git a/spec/services/search_service_spec.rb b/spec/services/search_service_spec.rb
index cb69af5f54..39adf43876 100644
--- a/spec/services/search_service_spec.rb
+++ b/spec/services/search_service_spec.rb
@@ -19,17 +19,15 @@ describe SearchService, type: :service do
end
describe 'with an url query' do
- before do
- @query = 'http://test.host/query'
- end
+ let(:query) { 'http://test.host/query' }
context 'when it does not find anything' do
it 'returns the empty results' do
service = instance_double(ResolveURLService, call: nil)
allow(ResolveURLService).to receive(:new).and_return(service)
- results = subject.call(@query, nil, 10, resolve: true)
+ results = subject.call(query, nil, 10, resolve: true)
- expect(service).to have_received(:call).with(@query, on_behalf_of: nil)
+ expect(service).to have_received(:call).with(query, on_behalf_of: nil)
expect(results).to eq empty_results
end
end
@@ -40,8 +38,8 @@ describe SearchService, type: :service do
service = instance_double(ResolveURLService, call: account)
allow(ResolveURLService).to receive(:new).and_return(service)
- results = subject.call(@query, nil, 10, resolve: true)
- expect(service).to have_received(:call).with(@query, on_behalf_of: nil)
+ results = subject.call(query, nil, 10, resolve: true)
+ expect(service).to have_received(:call).with(query, on_behalf_of: nil)
expect(results).to eq empty_results.merge(accounts: [account])
end
end
@@ -52,8 +50,8 @@ describe SearchService, type: :service do
service = instance_double(ResolveURLService, call: status)
allow(ResolveURLService).to receive(:new).and_return(service)
- results = subject.call(@query, nil, 10, resolve: true)
- expect(service).to have_received(:call).with(@query, on_behalf_of: nil)
+ results = subject.call(query, nil, 10, resolve: true)
+ expect(service).to have_received(:call).with(query, on_behalf_of: nil)
expect(results).to eq empty_results.merge(statuses: [status])
end
end
diff --git a/spec/services/unblock_domain_service_spec.rb b/spec/services/unblock_domain_service_spec.rb
index 27dbc92ada..3d6d82ff68 100644
--- a/spec/services/unblock_domain_service_spec.rb
+++ b/spec/services/unblock_domain_service_spec.rb
@@ -6,38 +6,36 @@ describe UnblockDomainService, type: :service do
subject { described_class.new }
describe 'call' do
- before do
- @independently_suspended = Fabricate(:account, domain: 'example.com', suspended_at: 1.hour.ago)
- @independently_silenced = Fabricate(:account, domain: 'example.com', silenced_at: 1.hour.ago)
- @domain_block = Fabricate(:domain_block, domain: 'example.com')
- @silenced = Fabricate(:account, domain: 'example.com', silenced_at: @domain_block.created_at)
- @suspended = Fabricate(:account, domain: 'example.com', suspended_at: @domain_block.created_at)
- end
+ let!(:independently_suspended) { Fabricate(:account, domain: 'example.com', suspended_at: 1.hour.ago) }
+ let!(:independently_silenced) { Fabricate(:account, domain: 'example.com', silenced_at: 1.hour.ago) }
+ let!(:domain_block) { Fabricate(:domain_block, domain: 'example.com') }
+ let!(:silenced) { Fabricate(:account, domain: 'example.com', silenced_at: domain_block.created_at) }
+ let!(:suspended) { Fabricate(:account, domain: 'example.com', suspended_at: domain_block.created_at) }
it 'unsilences accounts and removes block' do
- @domain_block.update(severity: :silence)
+ domain_block.update(severity: :silence)
- subject.call(@domain_block)
+ subject.call(domain_block)
expect_deleted_domain_block
- expect(@silenced.reload.silenced?).to be false
- expect(@suspended.reload.suspended?).to be true
- expect(@independently_suspended.reload.suspended?).to be true
- expect(@independently_silenced.reload.silenced?).to be true
+ expect(silenced.reload.silenced?).to be false
+ expect(suspended.reload.suspended?).to be true
+ expect(independently_suspended.reload.suspended?).to be true
+ expect(independently_silenced.reload.silenced?).to be true
end
it 'unsuspends accounts and removes block' do
- @domain_block.update(severity: :suspend)
+ domain_block.update(severity: :suspend)
- subject.call(@domain_block)
+ subject.call(domain_block)
expect_deleted_domain_block
- expect(@suspended.reload.suspended?).to be false
- expect(@silenced.reload.silenced?).to be false
- expect(@independently_suspended.reload.suspended?).to be true
- expect(@independently_silenced.reload.silenced?).to be true
+ expect(suspended.reload.suspended?).to be false
+ expect(silenced.reload.silenced?).to be false
+ expect(independently_suspended.reload.suspended?).to be true
+ expect(independently_silenced.reload.silenced?).to be true
end
end
def expect_deleted_domain_block
- expect { @domain_block.reload }.to raise_error(ActiveRecord::RecordNotFound)
+ expect { domain_block.reload }.to raise_error(ActiveRecord::RecordNotFound)
end
end
diff --git a/spec/support/search_data_manager.rb b/spec/support/search_data_manager.rb
index 24c95ae069..176a674adf 100644
--- a/spec/support/search_data_manager.rb
+++ b/spec/support/search_data_manager.rb
@@ -41,3 +41,38 @@ class SearchDataManager
Tag.destroy_all
end
end
+
+RSpec.configure do |config|
+ config.before :suite do
+ if search_examples_present?
+ # Configure chewy to use `urgent` strategy to index documents
+ Chewy.strategy(:urgent)
+
+ # Create search data
+ search_data_manager.prepare_test_data
+ end
+ end
+
+ config.after :suite do
+ if search_examples_present?
+ # Clean up after search data
+ search_data_manager.cleanup_test_data
+ end
+ end
+
+ config.around :each, type: :search do |example|
+ search_data_manager.populate_indexes
+ example.run
+ search_data_manager.remove_indexes
+ end
+
+ private
+
+ def search_data_manager
+ @search_data_manager ||= SearchDataManager.new
+ end
+
+ def search_examples_present?
+ RUN_SEARCH_SPECS
+ end
+end
diff --git a/spec/support/streaming_server_manager.rb b/spec/support/streaming_server_manager.rb
index 93e1a6d17f..2c535767e2 100644
--- a/spec/support/streaming_server_manager.rb
+++ b/spec/support/streaming_server_manager.rb
@@ -76,3 +76,32 @@ class StreamingServerManager
@running_thread.join
end
end
+
+RSpec.configure do |config|
+ config.before :suite do
+ if streaming_examples_present?
+ # Compile assets
+ Webpacker.compile
+
+ # Start the node streaming server
+ streaming_server_manager.start(port: STREAMING_PORT)
+ end
+ end
+
+ config.after :suite do
+ if streaming_examples_present?
+ # Stop the node streaming server
+ streaming_server_manager.stop
+ end
+ end
+
+ private
+
+ def streaming_server_manager
+ @streaming_server_manager ||= StreamingServerManager.new
+ end
+
+ def streaming_examples_present?
+ RUN_SYSTEM_SPECS
+ end
+end
diff --git a/spec/validators/blacklisted_email_validator_spec.rb b/spec/validators/blacklisted_email_validator_spec.rb
index bfe2a11a99..6292f0737e 100644
--- a/spec/validators/blacklisted_email_validator_spec.rb
+++ b/spec/validators/blacklisted_email_validator_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-RSpec.describe BlacklistedEmailValidator, type: :validator do
+RSpec.describe BlacklistedEmailValidator do
describe '#validate' do
subject { described_class.new.validate(user); errors }
diff --git a/spec/validators/disallowed_hashtags_validator_spec.rb b/spec/validators/disallowed_hashtags_validator_spec.rb
index 7144d28918..570ddb31c2 100644
--- a/spec/validators/disallowed_hashtags_validator_spec.rb
+++ b/spec/validators/disallowed_hashtags_validator_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-RSpec.describe DisallowedHashtagsValidator, type: :validator do
+RSpec.describe DisallowedHashtagsValidator do
let(:disallowed_tags) { [] }
describe '#validate' do
diff --git a/spec/validators/follow_limit_validator_spec.rb b/spec/validators/follow_limit_validator_spec.rb
index 86b6511d65..51b0683d27 100644
--- a/spec/validators/follow_limit_validator_spec.rb
+++ b/spec/validators/follow_limit_validator_spec.rb
@@ -2,48 +2,76 @@
require 'rails_helper'
-RSpec.describe FollowLimitValidator, type: :validator do
+RSpec.describe FollowLimitValidator do
describe '#validate' do
- before do
- allow_any_instance_of(described_class).to receive(:limit_reached?).with(account) do
- limit_reached
- end
+ context 'with a nil account' do
+ it 'does not add validation errors to base' do
+ follow = Fabricate.build(:follow, account: nil)
- described_class.new.validate(follow)
- end
+ follow.valid?
- let(:follow) { instance_double(Follow, account: account, errors: errors) }
- let(:errors) { instance_double(ActiveModel::Errors, add: nil) }
- let(:account) { instance_double(Account, nil?: _nil, local?: local, following_count: 0, followers_count: 0) }
- let(:_nil) { true }
- let(:local) { false }
-
- context 'with follow.account.nil? || !follow.account.local?' do
- let(:_nil) { true }
-
- it 'not calls errors.add' do
- expect(errors).to_not have_received(:add).with(:base, any_args)
+ expect(follow.errors[:base]).to be_empty
end
end
- context 'with !(follow.account.nil? || !follow.account.local?)' do
- let(:_nil) { false }
- let(:local) { true }
+ context 'with a non-local account' do
+ it 'does not add validation errors to base' do
+ follow = Fabricate.build(:follow, account: Account.new(domain: 'host.example'))
- context 'when limit_reached?' do
- let(:limit_reached) { true }
+ follow.valid?
- it 'calls errors.add' do
- expect(errors).to have_received(:add)
- .with(:base, I18n.t('users.follow_limit_reached', limit: FollowLimitValidator::LIMIT))
+ expect(follow.errors[:base]).to be_empty
+ end
+ end
+
+ context 'with a local account' do
+ let(:account) { Account.new }
+
+ context 'when the followers count is under the limit' do
+ before do
+ allow(account).to receive(:following_count).and_return(described_class::LIMIT - 100)
+ end
+
+ it 'does not add validation errors to base' do
+ follow = Fabricate.build(:follow, account: account)
+
+ follow.valid?
+
+ expect(follow.errors[:base]).to be_empty
end
end
- context 'with !limit_reached?' do
- let(:limit_reached) { false }
+ context 'when the following count is over the limit' do
+ before do
+ allow(account).to receive(:following_count).and_return(described_class::LIMIT + 100)
+ end
- it 'not calls errors.add' do
- expect(errors).to_not have_received(:add).with(:base, any_args)
+ context 'when the followers count is low' do
+ before do
+ allow(account).to receive(:followers_count).and_return(10)
+ end
+
+ it 'adds validation errors to base' do
+ follow = Fabricate.build(:follow, account: account)
+
+ follow.valid?
+
+ expect(follow.errors[:base]).to include(I18n.t('users.follow_limit_reached', limit: FollowLimitValidator::LIMIT))
+ end
+ end
+
+ context 'when the followers count is high' do
+ before do
+ allow(account).to receive(:followers_count).and_return(100_000)
+ end
+
+ it 'does not add validation errors to base' do
+ follow = Fabricate.build(:follow, account: account)
+
+ follow.valid?
+
+ expect(follow.errors[:base]).to be_empty
+ end
end
end
end
diff --git a/spec/validators/poll_validator_spec.rb b/spec/validators/poll_validator_spec.rb
index 95feb043db..f2a2534898 100644
--- a/spec/validators/poll_validator_spec.rb
+++ b/spec/validators/poll_validator_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-RSpec.describe PollValidator, type: :validator do
+RSpec.describe PollValidator do
describe '#validate' do
before do
validator.validate(poll)
diff --git a/spec/validators/status_pin_validator_spec.rb b/spec/validators/status_pin_validator_spec.rb
index e8f8a45434..d5109f990f 100644
--- a/spec/validators/status_pin_validator_spec.rb
+++ b/spec/validators/status_pin_validator_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-RSpec.describe StatusPinValidator, type: :validator do
+RSpec.describe StatusPinValidator do
describe '#validate' do
before do
subject.validate(pin)
diff --git a/yarn.lock b/yarn.lock
index 1c66d2af73..5dfcdb9d01 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -52,33 +52,40 @@ __metadata:
languageName: node
linkType: hard
-"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.22.9, @babel/compat-data@npm:^7.23.2":
+"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.22.9":
version: 7.23.2
resolution: "@babel/compat-data@npm:7.23.2"
checksum: 0397a08c3e491696cc1b12cf0879bf95fc550bfc6ef524d5a9452981aa0e192a958b2246debfb230fa22718fac473cc5a36616f89b1ad6e7e52055732cd374a1
languageName: node
linkType: hard
+"@babel/compat-data@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/compat-data@npm:7.23.3"
+ checksum: c6af331753c34ee8a5678bc94404320826cb56b1dda3efc1311ec8fb0774e78225132f3c1acc988440ace667f14a838e297a822692b95758aa63da406e1f97a1
+ languageName: node
+ linkType: hard
+
"@babel/core@npm:^7.10.4, @babel/core@npm:^7.11.1, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.22.1":
- version: 7.23.2
- resolution: "@babel/core@npm:7.23.2"
+ version: 7.23.3
+ resolution: "@babel/core@npm:7.23.3"
dependencies:
"@ampproject/remapping": "npm:^2.2.0"
"@babel/code-frame": "npm:^7.22.13"
- "@babel/generator": "npm:^7.23.0"
+ "@babel/generator": "npm:^7.23.3"
"@babel/helper-compilation-targets": "npm:^7.22.15"
- "@babel/helper-module-transforms": "npm:^7.23.0"
+ "@babel/helper-module-transforms": "npm:^7.23.3"
"@babel/helpers": "npm:^7.23.2"
- "@babel/parser": "npm:^7.23.0"
+ "@babel/parser": "npm:^7.23.3"
"@babel/template": "npm:^7.22.15"
- "@babel/traverse": "npm:^7.23.2"
- "@babel/types": "npm:^7.23.0"
+ "@babel/traverse": "npm:^7.23.3"
+ "@babel/types": "npm:^7.23.3"
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: 14ad6e0a3ac0085dc008e7fb0c8513f0a3e39f2ab883a964a89ef1311338d49cf085c94cb6165c07fdec0fdcc6e865ce4811253c479f9f45ac375226dfe3ad3b
+ checksum: 08d43b749e24052d12713a7fb1f0c0d1275d4fb056d00846faeb8da79ecf6d0ba91a11b6afec407b8b0f9388d00e2c2f485f282bef0ade4d6d0a17de191a4287
languageName: node
linkType: hard
@@ -94,6 +101,18 @@ __metadata:
languageName: node
linkType: hard
+"@babel/generator@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/generator@npm:7.23.3"
+ dependencies:
+ "@babel/types": "npm:^7.23.3"
+ "@jridgewell/gen-mapping": "npm:^0.3.2"
+ "@jridgewell/trace-mapping": "npm:^0.3.17"
+ jsesc: "npm:^2.5.1"
+ checksum: d5fff1417eecfada040e01a7c77a4968e81c436aeb35815ce85b4e80cd01e731423613d61033044a6cb5563bb8449ee260e3379b63eb50b38ec0a9ea9c00abfd
+ languageName: node
+ linkType: hard
+
"@babel/helper-annotate-as-pure@npm:^7.22.5":
version: 7.22.5
resolution: "@babel/helper-annotate-as-pure@npm:7.22.5"
@@ -103,7 +122,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.22.5":
+"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.22.15":
version: 7.22.15
resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.22.15"
dependencies:
@@ -112,17 +131,17 @@ __metadata:
languageName: node
linkType: hard
-"@babel/helper-builder-react-jsx@npm:^7.22.5":
- version: 7.22.5
- resolution: "@babel/helper-builder-react-jsx@npm:7.22.5"
+"@babel/helper-builder-react-jsx@npm:^7.22.10":
+ version: 7.22.10
+ resolution: "@babel/helper-builder-react-jsx@npm:7.22.10"
dependencies:
"@babel/helper-annotate-as-pure": "npm:^7.22.5"
- "@babel/types": "npm:^7.22.5"
- checksum: 001b727c911b4c777c10844070a2bf3bdf7cdb46bb3169de273eb2415e1efc3769980520fbdcd47912e9bd3055cb563a0a703a3c9150368f45e68d894bd863ec
+ "@babel/types": "npm:^7.22.10"
+ checksum: 8e2ad2e17dd779ddccec29f6b1de61df1f199694673bdbbae0474878211139f2e574810726110e4d46c1e9a0221af1f2d38bd0398dd20490eb03a24f790602be
languageName: node
linkType: hard
-"@babel/helper-compilation-targets@npm:^7.22.15, @babel/helper-compilation-targets@npm:^7.22.5, @babel/helper-compilation-targets@npm:^7.22.6":
+"@babel/helper-compilation-targets@npm:^7.22.15, @babel/helper-compilation-targets@npm:^7.22.6":
version: 7.22.15
resolution: "@babel/helper-compilation-targets@npm:7.22.15"
dependencies:
@@ -135,7 +154,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/helper-create-class-features-plugin@npm:^7.22.11, @babel/helper-create-class-features-plugin@npm:^7.22.15, @babel/helper-create-class-features-plugin@npm:^7.22.5":
+"@babel/helper-create-class-features-plugin@npm:^7.22.15":
version: 7.22.15
resolution: "@babel/helper-create-class-features-plugin@npm:7.22.15"
dependencies:
@@ -154,7 +173,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.22.5":
+"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.22.15, @babel/helper-create-regexp-features-plugin@npm:^7.22.5":
version: 7.22.15
resolution: "@babel/helper-create-regexp-features-plugin@npm:7.22.15"
dependencies:
@@ -217,7 +236,7 @@ __metadata:
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.22.15, @babel/helper-module-imports@npm:^7.22.5":
+"@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.22.15":
version: 7.22.15
resolution: "@babel/helper-module-imports@npm:7.22.15"
dependencies:
@@ -226,9 +245,9 @@ __metadata:
languageName: node
linkType: hard
-"@babel/helper-module-transforms@npm:^7.22.5, @babel/helper-module-transforms@npm:^7.23.0":
- version: 7.23.0
- resolution: "@babel/helper-module-transforms@npm:7.23.0"
+"@babel/helper-module-transforms@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/helper-module-transforms@npm:7.23.3"
dependencies:
"@babel/helper-environment-visitor": "npm:^7.22.20"
"@babel/helper-module-imports": "npm:^7.22.15"
@@ -237,7 +256,7 @@ __metadata:
"@babel/helper-validator-identifier": "npm:^7.22.20"
peerDependencies:
"@babel/core": ^7.0.0
- checksum: 15a52e401bd17fe44ba9be51cca693a3e182dc93264dc28ede732081c43211741df81ce8eb15e82e81c8ad51beb8893301ecc31d5c77add0f7be78dff6815318
+ checksum: 211e1399d0c4993671e8e5c2b25383f08bee40004ace5404ed4065f0e9258cc85d99c1b82fd456c030ce5cfd4d8f310355b54ef35de9924eabfc3dff1331d946
languageName: node
linkType: hard
@@ -257,7 +276,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/helper-remap-async-to-generator@npm:^7.22.20, @babel/helper-remap-async-to-generator@npm:^7.22.5":
+"@babel/helper-remap-async-to-generator@npm:^7.22.20":
version: 7.22.20
resolution: "@babel/helper-remap-async-to-generator@npm:7.22.20"
dependencies:
@@ -270,7 +289,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/helper-replace-supers@npm:^7.22.5, @babel/helper-replace-supers@npm:^7.22.9":
+"@babel/helper-replace-supers@npm:^7.22.20, @babel/helper-replace-supers@npm:^7.22.9":
version: 7.22.20
resolution: "@babel/helper-replace-supers@npm:7.22.20"
dependencies:
@@ -373,27 +392,48 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.22.15":
- version: 7.22.15
- resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.22.15"
+"@babel/parser@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/parser@npm:7.23.3"
+ bin:
+ parser: ./bin/babel-parser.js
+ checksum: 0fe11eadd4146a9155305b5bfece0f8223a3b1b97357ffa163c0156940de92e76cd0e7a173de819b8692767147e62f33389b312d1537f84cede51092672df6ef
+ languageName: node
+ linkType: hard
+
+"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.23.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.22.5"
peerDependencies:
"@babel/core": ^7.0.0
- checksum: fb2288ac168e6670a77f73b92e835f7a579468435e81c9261729e9ba9c601ff22622bacd3e71eb190b135016a6fbab5d824501c7b91733dd379022a75163806c
+ checksum: 356a4e9fc52d7ca761ce6857fc58e2295c2785d22565760e6a5680be86c6e5883ab86e0ba25ef572882c01713d3a31ae6cfa3e3222cdb95e6026671dab1fa415
languageName: node
linkType: hard
-"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.22.15":
- version: 7.22.15
- resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.22.15"
+"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.23.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.22.5"
"@babel/helper-skip-transparent-expression-wrappers": "npm:^7.22.5"
- "@babel/plugin-transform-optional-chaining": "npm:^7.22.15"
+ "@babel/plugin-transform-optional-chaining": "npm:^7.23.3"
peerDependencies:
"@babel/core": ^7.13.0
- checksum: 46fb46af40446918d64530f544ea0104e274ccd8a16b8a8f6fa2e51a198af6ac2b620aaf8875f3427671f09717949a584c79fe20f521245214f50b8de56cd116
+ checksum: a8785f099d55ca71ed89815e0f3a636a80c16031f80934cfec17c928d096ee0798964733320c8b145ef36ba429c5e19d5107b06231e0ab6777cfb0f01adfdc23
+ languageName: node
+ linkType: hard
+
+"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.23.3"
+ dependencies:
+ "@babel/helper-environment-visitor": "npm:^7.22.20"
+ "@babel/helper-plugin-utils": "npm:^7.22.5"
+ peerDependencies:
+ "@babel/core": ^7.0.0
+ checksum: 0f43b74741d50e637ba4dcef2786621126fe4da6ccf4ee2e94423ee23f6a04ecd91d458e59764c43e4968be139e5197ee43be8a2fea2c09f0b202a3391e548cc
languageName: node
linkType: hard
@@ -472,25 +512,25 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-syntax-import-assertions@npm:^7.22.5":
- version: 7.22.5
- resolution: "@babel/plugin-syntax-import-assertions@npm:7.22.5"
+"@babel/plugin-syntax-import-assertions@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-syntax-import-assertions@npm:7.23.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.22.5"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: b297d7c757c746ed0ef3496ad749ae2ce648ec73dae5184120b191c280e62da7dc104ee126bc0053dfece3ce198a5ee7dc1cbf4768860f666afef5dee84a7146
+ checksum: 7db8b59f75667bada2293353bb66b9d5651a673b22c72f47da9f5c46e719142481601b745f9822212fd7522f92e26e8576af37116f85dae1b5e5967f80d0faab
languageName: node
linkType: hard
-"@babel/plugin-syntax-import-attributes@npm:^7.22.5":
- version: 7.22.5
- resolution: "@babel/plugin-syntax-import-attributes@npm:7.22.5"
+"@babel/plugin-syntax-import-attributes@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-syntax-import-attributes@npm:7.23.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.22.5"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: de0b104a82cb8ffdc29472177210936609b973665a2ad8ef26c078251d7c728fbd521119de4c417285408a8bae345b5da09cd4a4a3311619f71b9b2c64cce3fa
+ checksum: 99b40d33d79205a8e04bb5dea56fd72906ffc317513b20ca7319e7683e18fce8ea2eea5e9171056f92b979dc0ab1e31b2cb5171177a5ba61e05b54fe7850a606
languageName: node
linkType: hard
@@ -527,6 +567,17 @@ __metadata:
languageName: node
linkType: hard
+"@babel/plugin-syntax-jsx@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-syntax-jsx@npm:7.23.3"
+ dependencies:
+ "@babel/helper-plugin-utils": "npm:^7.22.5"
+ peerDependencies:
+ "@babel/core": ^7.0.0-0
+ checksum: 563bb7599b868773f1c7c1d441ecc9bc53aeb7832775da36752c926fc402a1fa5421505b39e724f71eb217c13e4b93117e081cac39723b0e11dac4c897f33c3e
+ languageName: node
+ linkType: hard
+
"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4, @babel/plugin-syntax-logical-assignment-operators@npm:^7.8.3":
version: 7.10.4
resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4"
@@ -615,7 +666,18 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-syntax-typescript@npm:^7.22.5, @babel/plugin-syntax-typescript@npm:^7.7.2":
+"@babel/plugin-syntax-typescript@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-syntax-typescript@npm:7.23.3"
+ dependencies:
+ "@babel/helper-plugin-utils": "npm:^7.22.5"
+ peerDependencies:
+ "@babel/core": ^7.0.0-0
+ checksum: 4d6e9cdb9d0bfb9bd9b220fc951d937fce2ca69135ec121153572cebe81d86abc9a489208d6b69ee5f10cadcaeffa10d0425340a5029e40e14a6025021b90948
+ languageName: node
+ linkType: hard
+
+"@babel/plugin-syntax-typescript@npm:^7.7.2":
version: 7.22.5
resolution: "@babel/plugin-syntax-typescript@npm:7.22.5"
dependencies:
@@ -638,20 +700,20 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-arrow-functions@npm:^7.22.5":
- version: 7.22.5
- resolution: "@babel/plugin-transform-arrow-functions@npm:7.22.5"
+"@babel/plugin-transform-arrow-functions@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-arrow-functions@npm:7.23.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.22.5"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 1b24d47ddac6ae2fe8c7fab9a020fdb6a556d17d8c5f189bb470ff2958a5437fe6441521fd3d850f4283a1131d7a0acf3e8ebe789f9077f54bab4e2e8c6df176
+ checksum: b128315c058f5728d29b0b78723659b11de88247ea4d0388f0b935cddf60a80c40b9067acf45cbbe055bd796928faef152a09d9e4a0695465aca4394d9f109ca
languageName: node
linkType: hard
-"@babel/plugin-transform-async-generator-functions@npm:^7.23.2":
- version: 7.23.2
- resolution: "@babel/plugin-transform-async-generator-functions@npm:7.23.2"
+"@babel/plugin-transform-async-generator-functions@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-async-generator-functions@npm:7.23.3"
dependencies:
"@babel/helper-environment-visitor": "npm:^7.22.20"
"@babel/helper-plugin-utils": "npm:^7.22.5"
@@ -659,289 +721,289 @@ __metadata:
"@babel/plugin-syntax-async-generators": "npm:^7.8.4"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 16d7bd5dbd67991ab320a46ada19a9a0c8364725603c731f152afc98ee8764dc738c93f081a7560906d265b78c376bccabf3e31b9f99071c8982a6f9c8e2ac45
+ checksum: e846f282658e097fce4fccf3ee29289bf05f0654846a5994727a36f0cdc2e47abdffd4be4fa65787e94aa975824fae894c90afbfdc8caacd46c12c7f43e99d7f
languageName: node
linkType: hard
-"@babel/plugin-transform-async-to-generator@npm:^7.22.5":
- version: 7.22.5
- resolution: "@babel/plugin-transform-async-to-generator@npm:7.22.5"
+"@babel/plugin-transform-async-to-generator@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-async-to-generator@npm:7.23.3"
dependencies:
- "@babel/helper-module-imports": "npm:^7.22.5"
+ "@babel/helper-module-imports": "npm:^7.22.15"
"@babel/helper-plugin-utils": "npm:^7.22.5"
- "@babel/helper-remap-async-to-generator": "npm:^7.22.5"
+ "@babel/helper-remap-async-to-generator": "npm:^7.22.20"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 2972f22c3a5a56a8b225f4fa1bbdbcf6e989e0da460d5f4e2280652b1433d7c68b6ddc0cc2affc4b59905835133a253a31c24c7ca1bebe1a2f28377d27b4ca1c
+ checksum: da3ffd413eef02a8e2cfee3e0bb0d5fc0fcb795c187bc14a5a8e8874cdbdc43bbf00089c587412d7752d97efc5967c3c18ff5398e3017b9a14a06126f017e7e9
languageName: node
linkType: hard
-"@babel/plugin-transform-block-scoped-functions@npm:^7.22.5":
- version: 7.22.5
- resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.22.5"
+"@babel/plugin-transform-block-scoped-functions@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.23.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.22.5"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 21878d4f0040f5001c4a14e17759e80bf699cb883a497552fa882dbc05230b100e8572345654b091021d5c4227555ed2bf40c8d6ba16a54d81145abfe0022cf8
+ checksum: 82c12a11277528184a979163de7189ceb00129f60dd930b0d5313454310bf71205f302fb2bf0430247161c8a22aaa9fb9eec1459f9f7468206422c191978fd59
languageName: node
linkType: hard
-"@babel/plugin-transform-block-scoping@npm:^7.23.0":
- version: 7.23.0
- resolution: "@babel/plugin-transform-block-scoping@npm:7.23.0"
+"@babel/plugin-transform-block-scoping@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-block-scoping@npm:7.23.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.22.5"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: f5d0822a4e2bb3a0b5172f01f8c107999b880f0e538a9c1bae3c7720e85d8d117a67167f5e8eba909e0ec3db67be3b30e7f5c83211dd4be5c7096222071571be
+ checksum: ccaeded7954c196811d22a35322579254cda52676e823682b6234885a3aaf88fe0d5152dacaec43db9031dcf35a050a5343e36028e5905b0ba9c02d36b30a57f
languageName: node
linkType: hard
-"@babel/plugin-transform-class-properties@npm:^7.22.5":
- version: 7.22.5
- resolution: "@babel/plugin-transform-class-properties@npm:7.22.5"
+"@babel/plugin-transform-class-properties@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-class-properties@npm:7.23.3"
dependencies:
- "@babel/helper-create-class-features-plugin": "npm:^7.22.5"
+ "@babel/helper-create-class-features-plugin": "npm:^7.22.15"
"@babel/helper-plugin-utils": "npm:^7.22.5"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 707f976d3aea2b52dad36a5695a71af8956f9b1d5dec02c2b8cce7ff3b5e60df4cbe059c71ae0b7983034dc639de654a2c928b97e4e01ebf436d58ea43639e7d
+ checksum: bca30d576f539eef216494b56d610f1a64aa9375de4134bc021d9660f1fa735b1d7cc413029f22abc0b7cb737e3a57935c8ae9d8bd1730921ccb1deebce51bfd
languageName: node
linkType: hard
-"@babel/plugin-transform-class-static-block@npm:^7.22.11":
- version: 7.22.11
- resolution: "@babel/plugin-transform-class-static-block@npm:7.22.11"
+"@babel/plugin-transform-class-static-block@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-class-static-block@npm:7.23.3"
dependencies:
- "@babel/helper-create-class-features-plugin": "npm:^7.22.11"
+ "@babel/helper-create-class-features-plugin": "npm:^7.22.15"
"@babel/helper-plugin-utils": "npm:^7.22.5"
"@babel/plugin-syntax-class-static-block": "npm:^7.14.5"
peerDependencies:
"@babel/core": ^7.12.0
- checksum: 74c06f315dbeb101784682f89d6e40a46b243132b63f430ac9ee5781d3fedff57fc6bf7390aa2b19d44a9d7e49a1e70e572bdde1907480881204ef33163b9630
+ checksum: 89cdb66d7bc834cd51659eb7286a6bee23add0bc114943d68c4b6c0c834178cf0d55183df0cf508fec9c55ed4155641360e6f55a91c16fe826ccaf1adf381922
languageName: node
linkType: hard
-"@babel/plugin-transform-classes@npm:^7.22.15":
- version: 7.22.15
- resolution: "@babel/plugin-transform-classes@npm:7.22.15"
+"@babel/plugin-transform-classes@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-classes@npm:7.23.3"
dependencies:
"@babel/helper-annotate-as-pure": "npm:^7.22.5"
"@babel/helper-compilation-targets": "npm:^7.22.15"
- "@babel/helper-environment-visitor": "npm:^7.22.5"
- "@babel/helper-function-name": "npm:^7.22.5"
+ "@babel/helper-environment-visitor": "npm:^7.22.20"
+ "@babel/helper-function-name": "npm:^7.23.0"
"@babel/helper-optimise-call-expression": "npm:^7.22.5"
"@babel/helper-plugin-utils": "npm:^7.22.5"
- "@babel/helper-replace-supers": "npm:^7.22.9"
+ "@babel/helper-replace-supers": "npm:^7.22.20"
"@babel/helper-split-export-declaration": "npm:^7.22.6"
globals: "npm:^11.1.0"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: c9342bcf41e0253d83d9f73c4f9d2c9f885c0412f58ebfe462d57579c8247b949cbb023f15383d18c89fe5d12b537633e2ca4ba906ce47238615bc679beafb55
+ checksum: 88bfd332db0ba5cbfb8557a2ba5a7185151aebc9cfe3035b014aa6d795556acbe672bb8c78da3c9fd1d23f55a333d14b5daa127ef037f5ced5198b6d79a146d6
languageName: node
linkType: hard
-"@babel/plugin-transform-computed-properties@npm:^7.22.5":
- version: 7.22.5
- resolution: "@babel/plugin-transform-computed-properties@npm:7.22.5"
+"@babel/plugin-transform-computed-properties@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-computed-properties@npm:7.23.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.22.5"
- "@babel/template": "npm:^7.22.5"
+ "@babel/template": "npm:^7.22.15"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 22ecea23c1635083f5473092c5fbca62cbf7a85764bcf3e704c850446d68fe946097f6001c4cbfc92b4aee27ed30b375773ee479f749293e41fdb8f1fb8fcb67
+ checksum: 3ca8a006f8e652b58c21ecb84df1d01a73f0a96b1d216fd09a890b235dd90cb966b152b603b88f7e850ae238644b1636ce5c30b7c029c0934b43383932372e4a
languageName: node
linkType: hard
-"@babel/plugin-transform-destructuring@npm:^7.23.0":
- version: 7.23.0
- resolution: "@babel/plugin-transform-destructuring@npm:7.23.0"
+"@babel/plugin-transform-destructuring@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-destructuring@npm:7.23.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.22.5"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 038505eabdde2e1bb3bb904e50292b263d61d35e18660f751e7753b5723e2a5a5903a493290d772c8598da98c2c904b7cf45552ad1c11636fcb78f60754abd53
+ checksum: 717e9a62c1b0c93c507f87b4eaf839ec08d3c3147f14d74ae240d8749488d9762a8b3950132be620a069bde70f4b3e4ee9867b226c973fcc40f3cdec975cde71
languageName: node
linkType: hard
-"@babel/plugin-transform-dotall-regex@npm:^7.22.5":
- version: 7.22.5
- resolution: "@babel/plugin-transform-dotall-regex@npm:7.22.5"
+"@babel/plugin-transform-dotall-regex@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-dotall-regex@npm:7.23.3"
dependencies:
- "@babel/helper-create-regexp-features-plugin": "npm:^7.22.5"
+ "@babel/helper-create-regexp-features-plugin": "npm:^7.22.15"
"@babel/helper-plugin-utils": "npm:^7.22.5"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: e0d7b95380483ef563c13f7c0a2122f575c58708cfb56494d6265ebb31753cf46ee0b3f5126fa6bbea5af392b3a2da05bf1e028d0b2b4d1dc279edd67cf3c3d9
+ checksum: 6c89286d1277c2a63802a453c797c87c1203f89e4c25115f7b6620f5fce15d8c8d37af613222f6aa497aa98773577a6ec8752e79e13d59bc5429270677ea010b
languageName: node
linkType: hard
-"@babel/plugin-transform-duplicate-keys@npm:^7.22.5":
- version: 7.22.5
- resolution: "@babel/plugin-transform-duplicate-keys@npm:7.22.5"
+"@babel/plugin-transform-duplicate-keys@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-duplicate-keys@npm:7.23.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.22.5"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 82772fdcc1301358bc722c1316bea071ad0cd5893ca95b08e183748e044277a93ee90f9c641ac7873a00e4b31a8df7cf8c0981ca98d01becb4864a11b22c09d1
+ checksum: 7e2640e4e6adccd5e7b0615b6e9239d7c98363e21c52086ea13759dfa11cf7159b255fc5331c2de435639ea8eb6acefae115ae0d797a3d19d12587652f8052a5
languageName: node
linkType: hard
-"@babel/plugin-transform-dynamic-import@npm:^7.22.11":
- version: 7.22.11
- resolution: "@babel/plugin-transform-dynamic-import@npm:7.22.11"
+"@babel/plugin-transform-dynamic-import@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-dynamic-import@npm:7.23.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.22.5"
"@babel/plugin-syntax-dynamic-import": "npm:^7.8.3"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: cf0dd2d3da42ae18ccfa54bef7c80bf26b3bcc48751fc38dd41ad47bc14cc76ca8ec692f39f8b1ef54b3f48eff8db79e6397e4653033bb3a64e433f3c3a43edf
+ checksum: df3fd130312dc53d068fa76333991dce5e86987b023af8c3b502bd7d36a8e67da6f718e61dc838576a9fbacd06628e29607ee22d9bae30705485c14130eab201
languageName: node
linkType: hard
-"@babel/plugin-transform-exponentiation-operator@npm:^7.22.5":
- version: 7.22.5
- resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.22.5"
+"@babel/plugin-transform-exponentiation-operator@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.23.3"
dependencies:
- "@babel/helper-builder-binary-assignment-operator-visitor": "npm:^7.22.5"
+ "@babel/helper-builder-binary-assignment-operator-visitor": "npm:^7.22.15"
"@babel/helper-plugin-utils": "npm:^7.22.5"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: e8832460cfc9e087561fa42a796bb4eb181e6983d6db85c6dcec15f98af4ae3d13fcab18a262252a43b075d79ac93aaa38d33022bc5a870d2760c6888ba5d211
+ checksum: 5c33ee6a1bdc52fcdf0807f445b27e3fbdce33008531885e65a699762327565fffbcfde8395be7f21bcb22d582e425eddae45650c986462bb84ba68f43687516
languageName: node
linkType: hard
-"@babel/plugin-transform-export-namespace-from@npm:^7.22.11":
- version: 7.22.11
- resolution: "@babel/plugin-transform-export-namespace-from@npm:7.22.11"
+"@babel/plugin-transform-export-namespace-from@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-export-namespace-from@npm:7.23.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.22.5"
"@babel/plugin-syntax-export-namespace-from": "npm:^7.8.3"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 2b65ddf9ab4cfa8ffc72983c689b99d9ce0fe74846c2e518a1955f703e1fe073d0865810959164800613c3235a29cf9cae3567a46bf9cb53a2384469d3913e85
+ checksum: 390c6626dcda99023629049d92090242b4575351a4a7b47f97febabd2381f2cd0f624de661d8de8d1f715fedd63753cfd1feddead19e5960c27b88e447465b81
languageName: node
linkType: hard
-"@babel/plugin-transform-for-of@npm:^7.22.15":
- version: 7.22.15
- resolution: "@babel/plugin-transform-for-of@npm:7.22.15"
+"@babel/plugin-transform-for-of@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-for-of@npm:7.23.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.22.5"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 64182292f4be8cdf1fff06fe62ba110bf5e5dbb5d966d5e8871ef40a673cd934217da51b9f4a4ba303ca936be787f30e3d13a91fe410339de79e0fe9f0807e15
+ checksum: 8a36202cfee312ba80e509c7c2131e6773524e572b4dc64a8ee95bd912634fdeb5ea91c6c7747ee30e03562d0f0d333f88ed7dbb929b36b60b8d74189189e12f
languageName: node
linkType: hard
-"@babel/plugin-transform-function-name@npm:^7.22.5":
- version: 7.22.5
- resolution: "@babel/plugin-transform-function-name@npm:7.22.5"
+"@babel/plugin-transform-function-name@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-function-name@npm:7.23.3"
dependencies:
- "@babel/helper-compilation-targets": "npm:^7.22.5"
- "@babel/helper-function-name": "npm:^7.22.5"
+ "@babel/helper-compilation-targets": "npm:^7.22.15"
+ "@babel/helper-function-name": "npm:^7.23.0"
"@babel/helper-plugin-utils": "npm:^7.22.5"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 206bdef2ff91c29a7d94c77778ad79f18bdb2cd6a30179449f2b95af04637cb68d96625dc673d9a0961b6b7088bd325bbed7540caf9aa8f69e5b003d6ba20456
+ checksum: 89cb9747802118048115cf92a8f310752f02030549b26f008904990cbdc86c3d4a68e07ca3b5c46de8a46ed4df2cb576ac222c74c56de67253d2a3ddc2956083
languageName: node
linkType: hard
-"@babel/plugin-transform-json-strings@npm:^7.22.11":
- version: 7.22.11
- resolution: "@babel/plugin-transform-json-strings@npm:7.22.11"
+"@babel/plugin-transform-json-strings@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-json-strings@npm:7.23.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.22.5"
"@babel/plugin-syntax-json-strings": "npm:^7.8.3"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 90f46a99c4136187d16f30f1f5f51e479c919edb6f6b4ce43fe81fdae2c89a556a0a6f6f2ec7ea3de7014a504f6df2220e3bc19dd7011f76bd275c195842f886
+ checksum: e1cef6a485b9da32aba9449fb459dac062dfc401f3d6ad48e7fbdcb73bbe470c995cc15ce5c421b95efe1e9a90d5507eb606360fe10b6d8cb869dd5dae7a2562
languageName: node
linkType: hard
-"@babel/plugin-transform-literals@npm:^7.22.5":
- version: 7.22.5
- resolution: "@babel/plugin-transform-literals@npm:7.22.5"
+"@babel/plugin-transform-literals@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-literals@npm:7.23.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.22.5"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 1003d0cf98e9ae432889bcf5f3d5f7d463f777fc2c74b0d4a1a93b51e83606c263a16146e34f0a06b291300aa5f2001d6e8bf65ed1bf478ab071b714bf158aa5
+ checksum: 8292106b106201464c2bfdd5c014fe6a9ca1c0256eb0a8031deb20081e21906fe68b156186f77d993c23eeab6d8d6f5f66e8895eec7ed97ce6de5dbcafbcd7f4
languageName: node
linkType: hard
-"@babel/plugin-transform-logical-assignment-operators@npm:^7.22.11":
- version: 7.22.11
- resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.22.11"
+"@babel/plugin-transform-logical-assignment-operators@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.23.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.22.5"
"@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 9810f7918514bd59579ccc0950b4f352569abb40959569d38931e57f11e6b9aa920bdef403ffd8cd5d4e0243e0bbf7a1ebb445f3428c8b7a2421568ff2f681be
+ checksum: 23b7588b26d420c8b132bd08916d49871ca0c8db892f6b58637b10e2a0d918163d413c505db880a9157fc2e61d089040f139298a60d837ccbd0efca0474ac7ca
languageName: node
linkType: hard
-"@babel/plugin-transform-member-expression-literals@npm:^7.22.5":
- version: 7.22.5
- resolution: "@babel/plugin-transform-member-expression-literals@npm:7.22.5"
+"@babel/plugin-transform-member-expression-literals@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-member-expression-literals@npm:7.23.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.22.5"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 731a341b17511809ae435b64822d4d093e86fd928b572028e6742bdfba271c57070860b0f3da080a76c5574d58c4f369fac3f7bf0f450b37920c0fc6fe27bb4e
+ checksum: 687f24f3ec60b627fef6e87b9e2770df77f76727b9d5f54fa4c84a495bb24eb4a20f1a6240fa22d339d45aac5eaeb1b39882e941bfd00cf498f9c53478d1ec88
languageName: node
linkType: hard
-"@babel/plugin-transform-modules-amd@npm:^7.23.0":
- version: 7.23.0
- resolution: "@babel/plugin-transform-modules-amd@npm:7.23.0"
+"@babel/plugin-transform-modules-amd@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-modules-amd@npm:7.23.3"
dependencies:
- "@babel/helper-module-transforms": "npm:^7.23.0"
+ "@babel/helper-module-transforms": "npm:^7.23.3"
"@babel/helper-plugin-utils": "npm:^7.22.5"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: dda02864029ff66955e21d19c3d245aad69792b75e748de1391403bc86c8e9720b4f320b0db8413a29c11ba63b168146cf849180b5677bc6a74bfd085d20376d
+ checksum: 9f7ec036f7cfc588833a4dd117a44813b64aa4c1fd5bfb6c78f60198c1d290938213090c93a46f97a68a2490fad909e21a82b2472e95da74d108c125df21c8d5
languageName: node
linkType: hard
-"@babel/plugin-transform-modules-commonjs@npm:^7.23.0":
- version: 7.23.0
- resolution: "@babel/plugin-transform-modules-commonjs@npm:7.23.0"
+"@babel/plugin-transform-modules-commonjs@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-modules-commonjs@npm:7.23.3"
dependencies:
- "@babel/helper-module-transforms": "npm:^7.23.0"
+ "@babel/helper-module-transforms": "npm:^7.23.3"
"@babel/helper-plugin-utils": "npm:^7.22.5"
"@babel/helper-simple-access": "npm:^7.22.5"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 1f015764c2e63445d46660e7a2eb9002c20def04daf98fa93c9dadb5bd55adbefefd1ccdc11bcafa5e2f04275939d2414482703bc35bc60d6ca2bf1f67b720e3
+ checksum: 5c8840c5c9ecba39367ae17c973ed13dbc43234147b77ae780eec65010e2a9993c5d717721b23e8179f7cf49decdd325c509b241d69cfbf92aa647a1d8d5a37d
languageName: node
linkType: hard
-"@babel/plugin-transform-modules-systemjs@npm:^7.23.0":
- version: 7.23.0
- resolution: "@babel/plugin-transform-modules-systemjs@npm:7.23.0"
+"@babel/plugin-transform-modules-systemjs@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-modules-systemjs@npm:7.23.3"
dependencies:
"@babel/helper-hoist-variables": "npm:^7.22.5"
- "@babel/helper-module-transforms": "npm:^7.23.0"
+ "@babel/helper-module-transforms": "npm:^7.23.3"
"@babel/helper-plugin-utils": "npm:^7.22.5"
"@babel/helper-validator-identifier": "npm:^7.22.20"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 04c5cef7d6921bb9c9073cea389289099124e78cd1e3b7e020e3c085d486b48efadd9a42c0c0d963a9b1c3d5465c3151229092ea719997e53427f36935c84178
+ checksum: 0d55280a276510222c8896bf4e581acb84824aa5b14c824f7102242ad6bc5104aaffe5ab22fe4d27518f4ae2811bd59c36d0c0bfa695157f9cfce33f0517a069
languageName: node
linkType: hard
-"@babel/plugin-transform-modules-umd@npm:^7.22.5":
- version: 7.22.5
- resolution: "@babel/plugin-transform-modules-umd@npm:7.22.5"
+"@babel/plugin-transform-modules-umd@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-modules-umd@npm:7.23.3"
dependencies:
- "@babel/helper-module-transforms": "npm:^7.22.5"
+ "@babel/helper-module-transforms": "npm:^7.23.3"
"@babel/helper-plugin-utils": "npm:^7.22.5"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: f4a40e18986182a2b1be6af949aaff67a7d112af3d26bbd4319d05b50f323a62a10b32b5584148e4630bdffbd4d85b31c0d571fe4f601354898b837b87afca4c
+ checksum: f0d2f890a15b4367d0d8f160bed7062bdb145c728c24e9bfbc1211c7925aae5df72a88df3832c92dd2011927edfed4da1b1249e4c78402e893509316c0c2caa6
languageName: node
linkType: hard
@@ -957,138 +1019,138 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-new-target@npm:^7.22.5":
- version: 7.22.5
- resolution: "@babel/plugin-transform-new-target@npm:7.22.5"
+"@babel/plugin-transform-new-target@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-new-target@npm:7.23.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.22.5"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 22ead0668bfd8db9166a4a47579d9f44726b59f21104561a6dd851156336741abdc5c576558e042c58c4b4fd577d3e29e4bd836021007f3381c33fe3c88dca19
+ checksum: f489b9e1f17b42b2ba6312d58351e757cb23a8409f64f2bb6af4c09d015359588a5d68943b20756f141d0931a94431c782f3ed1225228a930a04b07be0c31b04
languageName: node
linkType: hard
-"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.22.11, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.22.3":
- version: 7.22.11
- resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.22.11"
+"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.22.3, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.23.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.22.5"
"@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 328c0ebfbbc82256af00252fb795996b093f57b528a57afcb30843ca52d24a6d824029ad6d22f042f3af336bb4dc1963b4841c2ad774424b02d14ae7cfff2701
+ checksum: f960faed3975c8454c52d2b5d85daf0c9a27677b248d7933882e59b10202ade2a98c7b925ce0bae2b8eb4d66eb5d63a5588c1090d54eaa4cd235533d71228ff3
languageName: node
linkType: hard
-"@babel/plugin-transform-numeric-separator@npm:^7.22.11":
- version: 7.22.11
- resolution: "@babel/plugin-transform-numeric-separator@npm:7.22.11"
+"@babel/plugin-transform-numeric-separator@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-numeric-separator@npm:7.23.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.22.5"
"@babel/plugin-syntax-numeric-separator": "npm:^7.10.4"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: fcde065002948c9c39f853be99c38b02aa1a1eb453e70ab1a164feb250c1fcbf1edd38071e28ed8bde6840b8a394af8b291b2ab2d793f283872ba43f89cf6dd2
+ checksum: d3748cce20e8752e61dfda55e275c699459a3ff8d0bb46585da813136e04066b1ce70b71beef504fcdc8d4cca3c955112cea96d5e9fd5a42a5bc8956d05236c2
languageName: node
linkType: hard
-"@babel/plugin-transform-object-rest-spread@npm:^7.22.15":
- version: 7.22.15
- resolution: "@babel/plugin-transform-object-rest-spread@npm:7.22.15"
+"@babel/plugin-transform-object-rest-spread@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-object-rest-spread@npm:7.23.3"
dependencies:
- "@babel/compat-data": "npm:^7.22.9"
+ "@babel/compat-data": "npm:^7.23.3"
"@babel/helper-compilation-targets": "npm:^7.22.15"
"@babel/helper-plugin-utils": "npm:^7.22.5"
"@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3"
- "@babel/plugin-transform-parameters": "npm:^7.22.15"
+ "@babel/plugin-transform-parameters": "npm:^7.23.3"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: c485084360607a4392227d8af461e0f313953a6088221826668f90e92df6e16da04e2b3424e283c2980586095430d1068ae6e549b828dfa3891e2d1a397bd034
+ checksum: 31ab631aaba945c118662943e5f1f54a21f07d64f06e06b25d55871168c460f3eeeccdf7b05aa74a1340e2cfbe781ad3c7ceccd0c2585d39f7b73ba11ebaa9d0
languageName: node
linkType: hard
-"@babel/plugin-transform-object-super@npm:^7.22.5":
- version: 7.22.5
- resolution: "@babel/plugin-transform-object-super@npm:7.22.5"
+"@babel/plugin-transform-object-super@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-object-super@npm:7.23.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.22.5"
- "@babel/helper-replace-supers": "npm:^7.22.5"
+ "@babel/helper-replace-supers": "npm:^7.22.20"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 062a78ff897c095a71f0db577bd4e4654659d542cb9ef79ec0fda7873ee6fefe31a0cb8a6c2e307e16dacaae1f50d48572184a59e1235b8d9d9cb2f38c4259ce
+ checksum: a6856fd8c0afbe5b3318c344d4d201d009f4051e2f6ff6237ff2660593e93c5997a58772b13d639077c3e29ced3440247b29c496cd77b13af1e7559a70009775
languageName: node
linkType: hard
-"@babel/plugin-transform-optional-catch-binding@npm:^7.22.11":
- version: 7.22.11
- resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.22.11"
+"@babel/plugin-transform-optional-catch-binding@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.23.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.22.5"
"@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 6a731f4fee93397634b088ef7de990c150ea1c29e2cf681b2520d9196888d79a4252cbcc497d9b0db0453160ea2267043036fee4ccea8964864ef1b55a40d76f
+ checksum: 85ac1e94ee8f21648816151628ff931cc16143ec8c904649a1ecfd8960160290eccc5a197b4ae3ee7a1c7a27a7c4189e61b4de24483d5bad4040784afe2d206f
languageName: node
linkType: hard
-"@babel/plugin-transform-optional-chaining@npm:^7.22.15, @babel/plugin-transform-optional-chaining@npm:^7.23.0":
- version: 7.23.0
- resolution: "@babel/plugin-transform-optional-chaining@npm:7.23.0"
+"@babel/plugin-transform-optional-chaining@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-optional-chaining@npm:7.23.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.22.5"
"@babel/helper-skip-transparent-expression-wrappers": "npm:^7.22.5"
"@babel/plugin-syntax-optional-chaining": "npm:^7.8.3"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 2bf605b908c75f8d7616e8be52e4656983f2b027032260fbf5279f28297a67a1a28ec3ed60cd5760537dbd08a021246b8092ce06fb2418884390230b807142b3
+ checksum: 2b358962169d871392aa292a67527e5335909438da0ddbb0d19e7838c0f8a2081cc751a49e6e534ac4d6c932254531a205ac22b197f64fc4c89f41bf9f595497
languageName: node
linkType: hard
-"@babel/plugin-transform-parameters@npm:^7.22.15":
- version: 7.22.15
- resolution: "@babel/plugin-transform-parameters@npm:7.22.15"
+"@babel/plugin-transform-parameters@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-parameters@npm:7.23.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.22.5"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 9b9faf55b20aea4755a66db75e1195f7a203b4cfeef0ed5ceb25d6364bbb7a5bd0b5c587489c37ab339c4e4e7275406d0db0c05c25aa731a3cf6b4cc51e97c8d
+ checksum: a8d4cbe0f6ba68d158f5b4215c63004fc37a1fdc539036eb388a9792017c8496ea970a1932ccb929308f61e53dc56676ed01d8df6f42bc0a85c7fd5ba82482b7
languageName: node
linkType: hard
-"@babel/plugin-transform-private-methods@npm:^7.22.5":
- version: 7.22.5
- resolution: "@babel/plugin-transform-private-methods@npm:7.22.5"
+"@babel/plugin-transform-private-methods@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-private-methods@npm:7.23.3"
dependencies:
- "@babel/helper-create-class-features-plugin": "npm:^7.22.5"
+ "@babel/helper-create-class-features-plugin": "npm:^7.22.15"
"@babel/helper-plugin-utils": "npm:^7.22.5"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: a62f2e47ca30f6b8043201483c5a505e3d54416e6ddfbe7cb696a1db853a4281b1fffee9f883fe26ac72ba02bba0db5832d69e02f2eb4746e9811b8779287cc1
+ checksum: 745a655edcd111b7f91882b921671ca0613079760d8c9befe336b8a9bc4ce6bb49c0c08941831c950afb1b225b4b2d3eaac8842e732db095b04db38efd8c34f4
languageName: node
linkType: hard
-"@babel/plugin-transform-private-property-in-object@npm:^7.22.11":
- version: 7.22.11
- resolution: "@babel/plugin-transform-private-property-in-object@npm:7.22.11"
+"@babel/plugin-transform-private-property-in-object@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-private-property-in-object@npm:7.23.3"
dependencies:
"@babel/helper-annotate-as-pure": "npm:^7.22.5"
- "@babel/helper-create-class-features-plugin": "npm:^7.22.11"
+ "@babel/helper-create-class-features-plugin": "npm:^7.22.15"
"@babel/helper-plugin-utils": "npm:^7.22.5"
"@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: ec1ed8cc5483b8661e2cf7c020ffefe2a85e793a353d580c4174686923e465cdfaf13fc344ebb2eead4a1dbecd49baba93e342a9de400a29abedb79dcc6745a2
+ checksum: 9211dd25a6e87a01535f2d97a663fa6de3472b963c8dcfaacce229a2e3fa6500f2e9fc690bc100a540fc7b66c8364faf7ef19b32e9c9b9791e4561b742c15ed3
languageName: node
linkType: hard
-"@babel/plugin-transform-property-literals@npm:^7.22.5":
- version: 7.22.5
- resolution: "@babel/plugin-transform-property-literals@npm:7.22.5"
+"@babel/plugin-transform-property-literals@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-property-literals@npm:7.23.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.22.5"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 8d25b7b01b5f487cfc1a296555273c1ddad45276f01039130f57eb9ab0fafa0560d10d972323071042e73ac3b8bab596543c9d1a877229624a52e6535084ea51
+ checksum: b2549f23f90cf276c2e3058c2225c3711c2ad1c417e336d3391199445a9776dd791b83be47b2b9a7ae374b40652d74b822387e31fa5267a37bf49c122e1a9747
languageName: node
linkType: hard
@@ -1103,26 +1165,26 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-react-display-name@npm:^7.22.5":
- version: 7.22.5
- resolution: "@babel/plugin-transform-react-display-name@npm:7.22.5"
+"@babel/plugin-transform-react-display-name@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-react-display-name@npm:7.23.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.22.5"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 41e0167ecd8e5281e427556146b1d3bee8652bcd0664be013f16ffeeb4d61b7ab0b1e59bcc2c923774f0d265f78012628d5277880f758f3675893226f9be012e
+ checksum: 3aed142af7bd1aed1df2bdad91ed33ba1cdd5c3c67ce6eafba821ff72f129162a197ffb55f1eb1775af276abd5545934489a8257fef6c6665ddf253a4f39a939
languageName: node
linkType: hard
"@babel/plugin-transform-react-inline-elements@npm:^7.21.0":
- version: 7.22.5
- resolution: "@babel/plugin-transform-react-inline-elements@npm:7.22.5"
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-react-inline-elements@npm:7.23.3"
dependencies:
- "@babel/helper-builder-react-jsx": "npm:^7.22.5"
+ "@babel/helper-builder-react-jsx": "npm:^7.22.10"
"@babel/helper-plugin-utils": "npm:^7.22.5"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 9c814948e7e8fda4426e778ebc31999c47c3e68fa03bf6f99642d27c0872b4b5ee70a174fb405ce9be6e7f70606ee9269fc41de2e68852f215fdb63447a94c92
+ checksum: 138f7769b30f65d339588155affe677c68fde3cdaa060a2dc73152cc8c941c246d4b2ae73c8f1d9ddf1055e587fcb7379c155d49daec086ed50557f2117c1d50
languageName: node
linkType: hard
@@ -1152,44 +1214,44 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-react-pure-annotations@npm:^7.22.5":
- version: 7.22.5
- resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.22.5"
+"@babel/plugin-transform-react-pure-annotations@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.23.3"
dependencies:
"@babel/helper-annotate-as-pure": "npm:^7.22.5"
"@babel/helper-plugin-utils": "npm:^7.22.5"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 18db2e2346d79ebe4a3f85f51fa7757a63a09bc6da7f339e6ce9e7534de68b5165fe7d49ac363dee6ba3f81eb904d44bf9c13653331805f9b236a1d9fec7e018
+ checksum: 76287adeab656fb7f39243e5ab6a8c60069cf69fffeebd1566457d56cb2f966366a23bd755d3e369f4d0437459e3b76243df370caa7d7d2287a8560b66c53ca2
languageName: node
linkType: hard
-"@babel/plugin-transform-regenerator@npm:^7.22.10":
- version: 7.22.10
- resolution: "@babel/plugin-transform-regenerator@npm:7.22.10"
+"@babel/plugin-transform-regenerator@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-regenerator@npm:7.23.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.22.5"
regenerator-transform: "npm:^0.15.2"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: b903bfc1e849ca956a981a199b4913c0998877b6ba759f6d64530c5106610f89a818d61471a9c1bdabb6d94ba4ba150febeb4d196f6a8e67fcdc44207bb8fef6
+ checksum: 3b0e989ae5db78894ee300b24e07fbcec490c39ab48629c519377581cf94e90308f4ddc10a8914edc9f403e2d3ac7a7ae0ae09003629d852da03e2ba846299c6
languageName: node
linkType: hard
-"@babel/plugin-transform-reserved-words@npm:^7.22.5":
- version: 7.22.5
- resolution: "@babel/plugin-transform-reserved-words@npm:7.22.5"
+"@babel/plugin-transform-reserved-words@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-reserved-words@npm:7.23.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.22.5"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 3ee861941b1d3f9e50f1bb97a2067f33c868b8cd5fd3419a610b2ad5f3afef5f9e4b3740d26a617dc1a9e169a33477821d96b6917c774ea87cac6790d341abbd
+ checksum: 4e6d61f6c9757592661cfbd2c39c4f61551557b98cb5f0995ef10f5540f67e18dde8a42b09716d58943b6e4b7ef5c9bcf19902839e7328a4d49149e0fecdbfcd
languageName: node
linkType: hard
"@babel/plugin-transform-runtime@npm:^7.22.4":
- version: 7.23.2
- resolution: "@babel/plugin-transform-runtime@npm:7.23.2"
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-runtime@npm:7.23.3"
dependencies:
"@babel/helper-module-imports": "npm:^7.22.15"
"@babel/helper-plugin-utils": "npm:^7.22.5"
@@ -1199,145 +1261,146 @@ __metadata:
semver: "npm:^6.3.1"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 440291cd42e51c3f8789a0bd45cebbf597cf5d4ee4185050f1151f579465db016902054c50684e288342a03c9f1af8cec365fc02d85d14dc2b2a30ad5eb07c42
+ checksum: 111fc412cc3968402183086879e1625ad4b869309f2e5aa33498a71ba700d3196c151d506977b5b535e8ff2c42c0731d59bfbfcb158ecddeeb3c49d5d4a58c0a
languageName: node
linkType: hard
-"@babel/plugin-transform-shorthand-properties@npm:^7.22.5":
- version: 7.22.5
- resolution: "@babel/plugin-transform-shorthand-properties@npm:7.22.5"
+"@babel/plugin-transform-shorthand-properties@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-shorthand-properties@npm:7.23.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.22.5"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: d2dd6b7033f536dd74569d7343bf3ca88c4bc12575e572a2c5446f42a1ebc8e69cec5e38fc0e63ac7c4a48b944a3225e4317d5db94287b9a5b381a5045c0cdb2
+ checksum: c423c66fec0b6503f50561741754c84366ef9e9818442c8881fbaa90cc363fd137084b9431cdc00ed2f1fd8c8a1a5982c4a7e1f2af3769db4caf2ac7ea55d4f0
languageName: node
linkType: hard
-"@babel/plugin-transform-spread@npm:^7.22.5":
- version: 7.22.5
- resolution: "@babel/plugin-transform-spread@npm:7.22.5"
+"@babel/plugin-transform-spread@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-spread@npm:7.23.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.22.5"
"@babel/helper-skip-transparent-expression-wrappers": "npm:^7.22.5"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: f8896b00d69557a4aafb3f48b7db6fbaa8462588e733afc4eabfdf79b12a6aed7d20341d160d704205591f0a43d04971d391fa80328f61240d1edc918079a1b0
+ checksum: a348e4ae47e4ceeceb760506ec7bf835ccc18a2cf70ec74ebfbe41bc172fa2412b05b7d1b86836f8aee375e41a04ff20486074778d0e2d19d668b33dc52e9dbb
languageName: node
linkType: hard
-"@babel/plugin-transform-sticky-regex@npm:^7.22.5":
- version: 7.22.5
- resolution: "@babel/plugin-transform-sticky-regex@npm:7.22.5"
+"@babel/plugin-transform-sticky-regex@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-sticky-regex@npm:7.23.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.22.5"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 42d9295d357415b55c04967ff1cd124cdcbabf2635614f9ad4f8b372d9ae35f6c02bf7473a5418b91e75235960cb1e61493e2c0581cb55bf9719b0986bcd22a5
+ checksum: cd15c407906b41e4b924ea151e455c11274dba050771ee7154ad88a1a274140ac5e84efc8d08c4379f2f0cec8a09e4a0a3b2a3a954ba6a67d9fb35df1c714c56
languageName: node
linkType: hard
-"@babel/plugin-transform-template-literals@npm:^7.22.5":
- version: 7.22.5
- resolution: "@babel/plugin-transform-template-literals@npm:7.22.5"
+"@babel/plugin-transform-template-literals@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-template-literals@npm:7.23.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.22.5"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 1fc597716edf9f5c7bc74e2fead4d7751467500486dd17092af90ccbd65c5fc4a1db2e9c86e9ed1a9f206f6a3403bbc07eab50b0c2b8e50f819b4118f2cf71ef
+ checksum: 9b5f43788b9ffcb8f2b445a16b1aa40fcf23cb0446a4649445f098ec6b4cb751f243a535da623d59fefe48f4c40552f5621187a61811779076bab26863e3373d
languageName: node
linkType: hard
-"@babel/plugin-transform-typeof-symbol@npm:^7.22.5":
- version: 7.22.5
- resolution: "@babel/plugin-transform-typeof-symbol@npm:7.22.5"
+"@babel/plugin-transform-typeof-symbol@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-typeof-symbol@npm:7.23.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.22.5"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 277084dd3e873d62541f683173c7cf33b8317f7714335b7e861cc5b4b76f09acbf532a4c9dfbcf7756d29bc07b94b48bd9356af478f424865a86c7d5798be7c0
+ checksum: 50e81d84c6059878be2a0e41e0d790cab10882cfb8fa85e8c2665ccb0b3cd7233f49197f17427bc7c1b36c80e07076640ecf1b641888d78b9cb91bc16478d84a
languageName: node
linkType: hard
-"@babel/plugin-transform-typescript@npm:^7.22.15":
- version: 7.22.15
- resolution: "@babel/plugin-transform-typescript@npm:7.22.15"
+"@babel/plugin-transform-typescript@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-typescript@npm:7.23.3"
dependencies:
"@babel/helper-annotate-as-pure": "npm:^7.22.5"
"@babel/helper-create-class-features-plugin": "npm:^7.22.15"
"@babel/helper-plugin-utils": "npm:^7.22.5"
- "@babel/plugin-syntax-typescript": "npm:^7.22.5"
+ "@babel/plugin-syntax-typescript": "npm:^7.23.3"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: e6a110f5b70334c6a503c90855dde5660f479e48262c8338261aeb30c70eedcfe885265b788c89f5bef757d99ab6704ee22bb0d23579597bc9415cfa86607458
+ checksum: a3c738efcf491ceb1eee646f57c44990ee0c80465527b88fcfa0b7602688c4ff8c165a4c5b62caf05d968b095212018fd30a02879c12d37c657081f57b31fb26
languageName: node
linkType: hard
-"@babel/plugin-transform-unicode-escapes@npm:^7.22.10":
- version: 7.22.10
- resolution: "@babel/plugin-transform-unicode-escapes@npm:7.22.10"
+"@babel/plugin-transform-unicode-escapes@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-unicode-escapes@npm:7.23.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.22.5"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 68425d56698650087faa33fe40adf8bde32efc1d05ce564f02b62526e7f5b2f4633278b0a10ee2e7e36fb89c79c3330c730d96b8a872acea4702c5645cee98f8
+ checksum: f1ed54742dc982666f471df5d087cfda9c6dbf7842bec2d0f7893ed359b142a38c0210358f297ab5c7a3e11ec0dfb0e523de2e2edf48b62f257aaadd5f068866
languageName: node
linkType: hard
-"@babel/plugin-transform-unicode-property-regex@npm:^7.22.5":
- version: 7.22.5
- resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.22.5"
+"@babel/plugin-transform-unicode-property-regex@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.23.3"
dependencies:
- "@babel/helper-create-regexp-features-plugin": "npm:^7.22.5"
+ "@babel/helper-create-regexp-features-plugin": "npm:^7.22.15"
"@babel/helper-plugin-utils": "npm:^7.22.5"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: da424c1e99af0e920d21f7f121fb9503d0771597a4bd14130fb5f116407be29e9340c049d04733b3d8a132effe4f4585fe3cc9630ae3294a2df9199c8dfd7075
+ checksum: dca5702d43fac70351623a12e4dfa454fd028a67498888522b644fd1a02534fabd440106897e886ebcc6ce6a39c58094ca29953b6f51bc67372aa8845a5ae49f
languageName: node
linkType: hard
-"@babel/plugin-transform-unicode-regex@npm:^7.22.5":
- version: 7.22.5
- resolution: "@babel/plugin-transform-unicode-regex@npm:7.22.5"
+"@babel/plugin-transform-unicode-regex@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-unicode-regex@npm:7.23.3"
dependencies:
- "@babel/helper-create-regexp-features-plugin": "npm:^7.22.5"
+ "@babel/helper-create-regexp-features-plugin": "npm:^7.22.15"
"@babel/helper-plugin-utils": "npm:^7.22.5"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 4cfaf4bb724a5c55a6fb5b0ee6ebbeba78dc700b9bc0043715d4b37409d90b43c888735c613690a1ec0d8d8e41a500b9d3f0395aa9f55b174449c8407663684b
+ checksum: df824dcca2f6e731f61d69103e87d5dd974d8a04e46e28684a4ba935ae633d876bded09b8db890fd72d0caf7b9638e2672b753671783613cc78d472951e2df8c
languageName: node
linkType: hard
-"@babel/plugin-transform-unicode-sets-regex@npm:^7.22.5":
- version: 7.22.5
- resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.22.5"
+"@babel/plugin-transform-unicode-sets-regex@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.23.3"
dependencies:
- "@babel/helper-create-regexp-features-plugin": "npm:^7.22.5"
+ "@babel/helper-create-regexp-features-plugin": "npm:^7.22.15"
"@babel/helper-plugin-utils": "npm:^7.22.5"
peerDependencies:
"@babel/core": ^7.0.0
- checksum: af37b468332db051f0aaa144adbfab39574e570f613e121b58a551e3cbb7083c9f8c32a83ba2641172a4065128052643468438c19ad098cd62b2d97140dc483e
+ checksum: 30fe1d29af8395a867d40a63a250ca89072033d9bc7d4587eeebeaf4ad7f776aab83064321bfdb1d09d7e29a1d392852361f4f60a353f0f4d1a3b435dcbf256b
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.23.2
- resolution: "@babel/preset-env@npm:7.23.2"
+ version: 7.23.3
+ resolution: "@babel/preset-env@npm:7.23.3"
dependencies:
- "@babel/compat-data": "npm:^7.23.2"
+ "@babel/compat-data": "npm:^7.23.3"
"@babel/helper-compilation-targets": "npm:^7.22.15"
"@babel/helper-plugin-utils": "npm:^7.22.5"
"@babel/helper-validator-option": "npm:^7.22.15"
- "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "npm:^7.22.15"
- "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.22.15"
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "npm:^7.23.3"
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.23.3"
+ "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.23.3"
"@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.22.5"
- "@babel/plugin-syntax-import-attributes": "npm:^7.22.5"
+ "@babel/plugin-syntax-import-assertions": "npm:^7.23.3"
+ "@babel/plugin-syntax-import-attributes": "npm:^7.23.3"
"@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"
@@ -1349,56 +1412,55 @@ __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.22.5"
- "@babel/plugin-transform-async-generator-functions": "npm:^7.23.2"
- "@babel/plugin-transform-async-to-generator": "npm:^7.22.5"
- "@babel/plugin-transform-block-scoped-functions": "npm:^7.22.5"
- "@babel/plugin-transform-block-scoping": "npm:^7.23.0"
- "@babel/plugin-transform-class-properties": "npm:^7.22.5"
- "@babel/plugin-transform-class-static-block": "npm:^7.22.11"
- "@babel/plugin-transform-classes": "npm:^7.22.15"
- "@babel/plugin-transform-computed-properties": "npm:^7.22.5"
- "@babel/plugin-transform-destructuring": "npm:^7.23.0"
- "@babel/plugin-transform-dotall-regex": "npm:^7.22.5"
- "@babel/plugin-transform-duplicate-keys": "npm:^7.22.5"
- "@babel/plugin-transform-dynamic-import": "npm:^7.22.11"
- "@babel/plugin-transform-exponentiation-operator": "npm:^7.22.5"
- "@babel/plugin-transform-export-namespace-from": "npm:^7.22.11"
- "@babel/plugin-transform-for-of": "npm:^7.22.15"
- "@babel/plugin-transform-function-name": "npm:^7.22.5"
- "@babel/plugin-transform-json-strings": "npm:^7.22.11"
- "@babel/plugin-transform-literals": "npm:^7.22.5"
- "@babel/plugin-transform-logical-assignment-operators": "npm:^7.22.11"
- "@babel/plugin-transform-member-expression-literals": "npm:^7.22.5"
- "@babel/plugin-transform-modules-amd": "npm:^7.23.0"
- "@babel/plugin-transform-modules-commonjs": "npm:^7.23.0"
- "@babel/plugin-transform-modules-systemjs": "npm:^7.23.0"
- "@babel/plugin-transform-modules-umd": "npm:^7.22.5"
+ "@babel/plugin-transform-arrow-functions": "npm:^7.23.3"
+ "@babel/plugin-transform-async-generator-functions": "npm:^7.23.3"
+ "@babel/plugin-transform-async-to-generator": "npm:^7.23.3"
+ "@babel/plugin-transform-block-scoped-functions": "npm:^7.23.3"
+ "@babel/plugin-transform-block-scoping": "npm:^7.23.3"
+ "@babel/plugin-transform-class-properties": "npm:^7.23.3"
+ "@babel/plugin-transform-class-static-block": "npm:^7.23.3"
+ "@babel/plugin-transform-classes": "npm:^7.23.3"
+ "@babel/plugin-transform-computed-properties": "npm:^7.23.3"
+ "@babel/plugin-transform-destructuring": "npm:^7.23.3"
+ "@babel/plugin-transform-dotall-regex": "npm:^7.23.3"
+ "@babel/plugin-transform-duplicate-keys": "npm:^7.23.3"
+ "@babel/plugin-transform-dynamic-import": "npm:^7.23.3"
+ "@babel/plugin-transform-exponentiation-operator": "npm:^7.23.3"
+ "@babel/plugin-transform-export-namespace-from": "npm:^7.23.3"
+ "@babel/plugin-transform-for-of": "npm:^7.23.3"
+ "@babel/plugin-transform-function-name": "npm:^7.23.3"
+ "@babel/plugin-transform-json-strings": "npm:^7.23.3"
+ "@babel/plugin-transform-literals": "npm:^7.23.3"
+ "@babel/plugin-transform-logical-assignment-operators": "npm:^7.23.3"
+ "@babel/plugin-transform-member-expression-literals": "npm:^7.23.3"
+ "@babel/plugin-transform-modules-amd": "npm:^7.23.3"
+ "@babel/plugin-transform-modules-commonjs": "npm:^7.23.3"
+ "@babel/plugin-transform-modules-systemjs": "npm:^7.23.3"
+ "@babel/plugin-transform-modules-umd": "npm:^7.23.3"
"@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.22.5"
- "@babel/plugin-transform-new-target": "npm:^7.22.5"
- "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.22.11"
- "@babel/plugin-transform-numeric-separator": "npm:^7.22.11"
- "@babel/plugin-transform-object-rest-spread": "npm:^7.22.15"
- "@babel/plugin-transform-object-super": "npm:^7.22.5"
- "@babel/plugin-transform-optional-catch-binding": "npm:^7.22.11"
- "@babel/plugin-transform-optional-chaining": "npm:^7.23.0"
- "@babel/plugin-transform-parameters": "npm:^7.22.15"
- "@babel/plugin-transform-private-methods": "npm:^7.22.5"
- "@babel/plugin-transform-private-property-in-object": "npm:^7.22.11"
- "@babel/plugin-transform-property-literals": "npm:^7.22.5"
- "@babel/plugin-transform-regenerator": "npm:^7.22.10"
- "@babel/plugin-transform-reserved-words": "npm:^7.22.5"
- "@babel/plugin-transform-shorthand-properties": "npm:^7.22.5"
- "@babel/plugin-transform-spread": "npm:^7.22.5"
- "@babel/plugin-transform-sticky-regex": "npm:^7.22.5"
- "@babel/plugin-transform-template-literals": "npm:^7.22.5"
- "@babel/plugin-transform-typeof-symbol": "npm:^7.22.5"
- "@babel/plugin-transform-unicode-escapes": "npm:^7.22.10"
- "@babel/plugin-transform-unicode-property-regex": "npm:^7.22.5"
- "@babel/plugin-transform-unicode-regex": "npm:^7.22.5"
- "@babel/plugin-transform-unicode-sets-regex": "npm:^7.22.5"
+ "@babel/plugin-transform-new-target": "npm:^7.23.3"
+ "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.23.3"
+ "@babel/plugin-transform-numeric-separator": "npm:^7.23.3"
+ "@babel/plugin-transform-object-rest-spread": "npm:^7.23.3"
+ "@babel/plugin-transform-object-super": "npm:^7.23.3"
+ "@babel/plugin-transform-optional-catch-binding": "npm:^7.23.3"
+ "@babel/plugin-transform-optional-chaining": "npm:^7.23.3"
+ "@babel/plugin-transform-parameters": "npm:^7.23.3"
+ "@babel/plugin-transform-private-methods": "npm:^7.23.3"
+ "@babel/plugin-transform-private-property-in-object": "npm:^7.23.3"
+ "@babel/plugin-transform-property-literals": "npm:^7.23.3"
+ "@babel/plugin-transform-regenerator": "npm:^7.23.3"
+ "@babel/plugin-transform-reserved-words": "npm:^7.23.3"
+ "@babel/plugin-transform-shorthand-properties": "npm:^7.23.3"
+ "@babel/plugin-transform-spread": "npm:^7.23.3"
+ "@babel/plugin-transform-sticky-regex": "npm:^7.23.3"
+ "@babel/plugin-transform-template-literals": "npm:^7.23.3"
+ "@babel/plugin-transform-typeof-symbol": "npm:^7.23.3"
+ "@babel/plugin-transform-unicode-escapes": "npm:^7.23.3"
+ "@babel/plugin-transform-unicode-property-regex": "npm:^7.23.3"
+ "@babel/plugin-transform-unicode-regex": "npm:^7.23.3"
+ "@babel/plugin-transform-unicode-sets-regex": "npm:^7.23.3"
"@babel/preset-modules": "npm:0.1.6-no-external-plugins"
- "@babel/types": "npm:^7.23.0"
babel-plugin-polyfill-corejs2: "npm:^0.4.6"
babel-plugin-polyfill-corejs3: "npm:^0.8.5"
babel-plugin-polyfill-regenerator: "npm:^0.5.3"
@@ -1406,7 +1468,7 @@ __metadata:
semver: "npm:^6.3.1"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: b5912f09dc92a8f6b93420f3274499e30255af6dbe5673075a30a5bfead1a651e5eb362c6b95e3ba48c6e6bd4e38b7a5aceebba99997ec7c83833e2e6af9abde
+ checksum: 36b02a86817ab5474bb74a8d62a110723b0b05904a52ddc5627cf89457525b8d5ac0739b8e435a6ae12ef8b90cd5fc191169898c3dc2ac9d2c84026b02f2580a
languageName: node
linkType: hard
@@ -1424,33 +1486,33 @@ __metadata:
linkType: hard
"@babel/preset-react@npm:^7.12.5, @babel/preset-react@npm:^7.22.3":
- version: 7.22.15
- resolution: "@babel/preset-react@npm:7.22.15"
+ version: 7.23.3
+ resolution: "@babel/preset-react@npm:7.23.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.22.5"
"@babel/helper-validator-option": "npm:^7.22.15"
- "@babel/plugin-transform-react-display-name": "npm:^7.22.5"
+ "@babel/plugin-transform-react-display-name": "npm:^7.23.3"
"@babel/plugin-transform-react-jsx": "npm:^7.22.15"
"@babel/plugin-transform-react-jsx-development": "npm:^7.22.5"
- "@babel/plugin-transform-react-pure-annotations": "npm:^7.22.5"
+ "@babel/plugin-transform-react-pure-annotations": "npm:^7.23.3"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 80940aa494292b7f689d902b76828cb3ab4eaf4e6421107f23388b6ea7316ab25ccd817b766fde5c40787fd92f1cba1f660190bfd71965c902e49b42c9e290c2
+ checksum: cecb2493e09fd4ffa5effcef1d06e968386b1bfe077a99834f7e8ef249208274fca62fe5a6b3986ef1c1c3900b2eb409adb528ae1b73dba31397b16f9262e83c
languageName: node
linkType: hard
"@babel/preset-typescript@npm:^7.21.5":
- version: 7.23.2
- resolution: "@babel/preset-typescript@npm:7.23.2"
+ version: 7.23.3
+ resolution: "@babel/preset-typescript@npm:7.23.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.22.5"
"@babel/helper-validator-option": "npm:^7.22.15"
- "@babel/plugin-syntax-jsx": "npm:^7.22.5"
- "@babel/plugin-transform-modules-commonjs": "npm:^7.23.0"
- "@babel/plugin-transform-typescript": "npm:^7.22.15"
+ "@babel/plugin-syntax-jsx": "npm:^7.23.3"
+ "@babel/plugin-transform-modules-commonjs": "npm:^7.23.3"
+ "@babel/plugin-transform-typescript": "npm:^7.23.3"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 40eb71e9959d97a0c2e89fe5cf4c9db7edea5b103618d4c4b5cc7a41dd8c66ab1b1922c443607427000d7bb63e135e8c5f268f35426b2ba00ce53f75bf3b0f8b
+ checksum: e72b654c7f0f08b35d7e1c0e3a59c0c13037f295c425760b8b148aa7dde01e6ddd982efc525710f997a1494fafdd55cb525738c016609e7e4d703d02014152b7
languageName: node
linkType: hard
@@ -1479,7 +1541,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/template@npm:^7.22.15, @babel/template@npm:^7.22.5, @babel/template@npm:^7.3.3":
+"@babel/template@npm:^7.22.15, @babel/template@npm:^7.3.3":
version: 7.22.15
resolution: "@babel/template@npm:7.22.15"
dependencies:
@@ -1508,6 +1570,24 @@ __metadata:
languageName: node
linkType: hard
+"@babel/traverse@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/traverse@npm:7.23.3"
+ dependencies:
+ "@babel/code-frame": "npm:^7.22.13"
+ "@babel/generator": "npm:^7.23.3"
+ "@babel/helper-environment-visitor": "npm:^7.22.20"
+ "@babel/helper-function-name": "npm:^7.23.0"
+ "@babel/helper-hoist-variables": "npm:^7.22.5"
+ "@babel/helper-split-export-declaration": "npm:^7.22.6"
+ "@babel/parser": "npm:^7.23.3"
+ "@babel/types": "npm:^7.23.3"
+ debug: "npm:^4.1.0"
+ globals: "npm:^11.1.0"
+ checksum: 3c2784f4765185126d64fd5eebce0413b7aee6d54f779998594a343a7f973a9693a441ba27533df84e7ab7ce22f1239c6837f35e903132a1b25f7fc7a67bc30f
+ 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.22.15, @babel/types@npm:^7.22.19, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3":
version: 7.23.0
resolution: "@babel/types@npm:7.23.0"
@@ -1519,6 +1599,17 @@ __metadata:
languageName: node
linkType: hard
+"@babel/types@npm:^7.22.10, @babel/types@npm:^7.23.3":
+ version: 7.23.3
+ resolution: "@babel/types@npm:7.23.3"
+ dependencies:
+ "@babel/helper-string-parser": "npm:^7.22.5"
+ "@babel/helper-validator-identifier": "npm:^7.22.20"
+ to-fast-properties: "npm:^2.0.0"
+ checksum: 371a10dd9c8d8ebf48fc5d9e1b327dafd74453f8ea582dcbddd1cee5ae34e8881b743e783a86c08c04dcd1849b1842455472a911ae8a1c185484fe9b7b5f1595
+ languageName: node
+ linkType: hard
+
"@bcoe/v8-coverage@npm:^0.2.3":
version: 0.2.3
resolution: "@bcoe/v8-coverage@npm:0.2.3"
@@ -2445,7 +2536,7 @@ __metadata:
jest-environment-jsdom: "npm:^29.5.0"
js-yaml: "npm:^4.1.0"
jsdom: "npm:^22.1.0"
- lint-staged: "npm:^13.2.2"
+ lint-staged: "npm:^15.0.0"
lodash: "npm:^4.17.21"
mark-loader: "npm:^0.1.6"
marky: "npm:^1.2.5"
@@ -4182,7 +4273,7 @@ __metadata:
languageName: node
linkType: hard
-"ansi-escapes@npm:^4.2.1, ansi-escapes@npm:^4.3.0":
+"ansi-escapes@npm:^4.2.1":
version: 4.3.2
resolution: "ansi-escapes@npm:4.3.2"
dependencies:
@@ -4191,6 +4282,15 @@ __metadata:
languageName: node
linkType: hard
+"ansi-escapes@npm:^5.0.0":
+ version: 5.0.0
+ resolution: "ansi-escapes@npm:5.0.0"
+ dependencies:
+ type-fest: "npm:^1.0.2"
+ checksum: f705cc7fbabb981ddf51562cd950792807bccd7260cc3d9478a619dda62bff6634c87ca100f2545ac7aade9b72652c4edad8c7f0d31a0b949b5fa58f33eaf0d0
+ languageName: node
+ linkType: hard
+
"ansi-html-community@npm:0.0.8":
version: 0.0.8
resolution: "ansi-html-community@npm:0.0.8"
@@ -4672,13 +4772,13 @@ __metadata:
linkType: hard
"axios@npm:^1.4.0":
- version: 1.6.0
- resolution: "axios@npm:1.6.0"
+ version: 1.6.1
+ resolution: "axios@npm:1.6.1"
dependencies:
follow-redirects: "npm:^1.15.0"
form-data: "npm:^4.0.0"
proxy-from-env: "npm:^1.1.0"
- checksum: 2879e17b96cbca7e2096d231a44e2d0f03e657d79f8928ea38ec5fbaf5a5b7bf952d580cdb58a66ba328c26eb3528b89d5a32da57cc5cf89813786c044f7e9d6
+ checksum: ca2c6f56659a7f19e4a99082f549fe151952f6fd8aa72ed148559ab2d6a32ce37cd5dc72ce6d4d3cd91f0c1e2617c7c95c20077e5e244a79f319a6c0ce41204f
languageName: node
linkType: hard
@@ -5436,10 +5536,10 @@ __metadata:
languageName: node
linkType: hard
-"chalk@npm:5.2.0":
- version: 5.2.0
- resolution: "chalk@npm:5.2.0"
- checksum: 8a519b35c239f96e041b7f1ed8fdd79d3ca2332a8366cb957378b8a1b8a4cdfb740d19628e8bf74654d4c0917aa10cf39c20752e177a1304eac29a1168a740e9
+"chalk@npm:5.3.0":
+ version: 5.3.0
+ resolution: "chalk@npm:5.3.0"
+ checksum: 8297d436b2c0f95801103ff2ef67268d362021b8210daf8ddbe349695333eb3610a71122172ff3b0272f1ef2cf7cc2c41fdaa4715f52e49ffe04c56340feed09
languageName: node
linkType: hard
@@ -5596,22 +5696,12 @@ __metadata:
languageName: node
linkType: hard
-"cli-cursor@npm:^3.1.0":
- version: 3.1.0
- resolution: "cli-cursor@npm:3.1.0"
+"cli-cursor@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "cli-cursor@npm:4.0.0"
dependencies:
- restore-cursor: "npm:^3.1.0"
- checksum: 92a2f98ff9037d09be3dfe1f0d749664797fb674bf388375a2207a1203b69d41847abf16434203e0089212479e47a358b13a0222ab9fccfe8e2644a7ccebd111
- languageName: node
- linkType: hard
-
-"cli-truncate@npm:^2.1.0":
- version: 2.1.0
- resolution: "cli-truncate@npm:2.1.0"
- dependencies:
- slice-ansi: "npm:^3.0.0"
- string-width: "npm:^4.2.0"
- checksum: dfaa3df675bcef7a3254773de768712b590250420345a4c7ac151f041a4bacb4c25864b1377bee54a39b5925a030c00eabf014e312e3a4ac130952ed3b3879e9
+ restore-cursor: "npm:^4.0.0"
+ checksum: e776e8c3c6727300d0539b0d25160b2bb56aed1a63942753ba1826b012f337a6f4b7ace3548402e4f2f13b5e16bfd751be672c44b203205e7eca8be94afec42c
languageName: node
linkType: hard
@@ -5762,7 +5852,7 @@ __metadata:
languageName: node
linkType: hard
-"colorette@npm:^2.0.19":
+"colorette@npm:^2.0.20":
version: 2.0.20
resolution: "colorette@npm:2.0.20"
checksum: e94116ff33b0ff56f3b83b9ace895e5bf87c2a7a47b3401b8c3f3226e050d5ef76cf4072fb3325f9dc24d1698f9b730baf4e05eeaf861d74a1883073f4c98a40
@@ -5785,10 +5875,10 @@ __metadata:
languageName: node
linkType: hard
-"commander@npm:^10.0.0":
- version: 10.0.1
- resolution: "commander@npm:10.0.1"
- checksum: 53f33d8927758a911094adadda4b2cbac111a5b377d8706700587650fd8f45b0bbe336de4b5c3fe47fd61f420a3d9bd452b6e0e6e5600a7e74d7bf0174f6efe3
+"commander@npm:11.1.0":
+ version: 11.1.0
+ resolution: "commander@npm:11.1.0"
+ checksum: 13cc6ac875e48780250f723fb81c1c1178d35c5decb1abb1b628b3177af08a8554e76b2c0f29de72d69eef7c864d12613272a71fabef8047922bc622ab75a179
languageName: node
linkType: hard
@@ -6421,7 +6511,7 @@ __metadata:
languageName: node
linkType: hard
-"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.2, debug@npm:^4.3.4":
+"debug@npm:4, debug@npm:4.3.4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.2, debug@npm:^4.3.4":
version: 4.3.4
resolution: "debug@npm:4.3.4"
dependencies:
@@ -7690,6 +7780,13 @@ __metadata:
languageName: node
linkType: hard
+"eventemitter3@npm:^5.0.1":
+ version: 5.0.1
+ resolution: "eventemitter3@npm:5.0.1"
+ checksum: 4ba5c00c506e6c786b4d6262cfbce90ddc14c10d4667e5c83ae993c9de88aa856033994dd2b35b83e8dc1170e224e66a319fa80adc4c32adcd2379bbc75da814
+ languageName: node
+ linkType: hard
+
"events@npm:^3.0.0, events@npm:^3.3.0":
version: 3.3.0
resolution: "events@npm:3.3.0"
@@ -7715,6 +7812,23 @@ __metadata:
languageName: node
linkType: hard
+"execa@npm:8.0.1":
+ version: 8.0.1
+ resolution: "execa@npm:8.0.1"
+ dependencies:
+ cross-spawn: "npm:^7.0.3"
+ get-stream: "npm:^8.0.1"
+ human-signals: "npm:^5.0.0"
+ is-stream: "npm:^3.0.0"
+ merge-stream: "npm:^2.0.0"
+ npm-run-path: "npm:^5.1.0"
+ onetime: "npm:^6.0.0"
+ signal-exit: "npm:^4.1.0"
+ strip-final-newline: "npm:^3.0.0"
+ checksum: 2c52d8775f5bf103ce8eec9c7ab3059909ba350a5164744e9947ed14a53f51687c040a250bda833f906d1283aa8803975b84e6c8f7a7c42f99dc8ef80250d1af
+ languageName: node
+ linkType: hard
+
"execa@npm:^1.0.0":
version: 1.0.0
resolution: "execa@npm:1.0.0"
@@ -7747,7 +7861,7 @@ __metadata:
languageName: node
linkType: hard
-"execa@npm:^7.0.0, execa@npm:^7.1.1":
+"execa@npm:^7.1.1":
version: 7.2.0
resolution: "execa@npm:7.2.0"
dependencies:
@@ -8410,6 +8524,13 @@ __metadata:
languageName: node
linkType: hard
+"get-stream@npm:^8.0.1":
+ version: 8.0.1
+ resolution: "get-stream@npm:8.0.1"
+ checksum: 5c2181e98202b9dae0bb4a849979291043e5892eb40312b47f0c22b9414fc9b28a3b6063d2375705eb24abc41ecf97894d9a51f64ff021511b504477b27b4290
+ languageName: node
+ linkType: hard
+
"get-symbol-description@npm:^1.0.0":
version: 1.0.0
resolution: "get-symbol-description@npm:1.0.0"
@@ -9010,6 +9131,13 @@ __metadata:
languageName: node
linkType: hard
+"human-signals@npm:^5.0.0":
+ version: 5.0.0
+ resolution: "human-signals@npm:5.0.0"
+ checksum: 5a9359073fe17a8b58e5a085e9a39a950366d9f00217c4ff5878bd312e09d80f460536ea6a3f260b5943a01fe55c158d1cea3fc7bee3d0520aeef04f6d915c82
+ languageName: node
+ linkType: hard
+
"husky@npm:^8.0.3":
version: 8.0.3
resolution: "husky@npm:8.0.3"
@@ -10853,47 +10981,37 @@ __metadata:
languageName: node
linkType: hard
-"lint-staged@npm:^13.2.2":
- version: 13.2.3
- resolution: "lint-staged@npm:13.2.3"
+"lint-staged@npm:^15.0.0":
+ version: 15.0.2
+ resolution: "lint-staged@npm:15.0.2"
dependencies:
- chalk: "npm:5.2.0"
- cli-truncate: "npm:^3.1.0"
- commander: "npm:^10.0.0"
- debug: "npm:^4.3.4"
- execa: "npm:^7.0.0"
+ chalk: "npm:5.3.0"
+ commander: "npm:11.1.0"
+ debug: "npm:4.3.4"
+ execa: "npm:8.0.1"
lilconfig: "npm:2.1.0"
- listr2: "npm:^5.0.7"
- micromatch: "npm:^4.0.5"
- normalize-path: "npm:^3.0.0"
- object-inspect: "npm:^1.12.3"
- pidtree: "npm:^0.6.0"
- string-argv: "npm:^0.3.1"
- yaml: "npm:^2.2.2"
+ listr2: "npm:7.0.2"
+ micromatch: "npm:4.0.5"
+ pidtree: "npm:0.6.0"
+ string-argv: "npm:0.3.2"
+ yaml: "npm:2.3.3"
bin:
lint-staged: bin/lint-staged.js
- checksum: 4907d2e60c8bd4b7ba354464a914e9db61d3e121232a3111bfe3e9f24d1ae8c9bd89c8ff19f819227a97fce0d797a33a62bcc29adebb37fb937e012a0a8b358b
+ checksum: 5c8806137c8c9c63e1156e16f2a2763586a9eab8f24713b95bbfd099308c83f85af2df622fdc326a9f0e455e657718f61f6d4a81067a5c77243e65e822c8f16c
languageName: node
linkType: hard
-"listr2@npm:^5.0.7":
- version: 5.0.8
- resolution: "listr2@npm:5.0.8"
+"listr2@npm:7.0.2":
+ version: 7.0.2
+ resolution: "listr2@npm:7.0.2"
dependencies:
- cli-truncate: "npm:^2.1.0"
- colorette: "npm:^2.0.19"
- log-update: "npm:^4.0.0"
- p-map: "npm:^4.0.0"
+ cli-truncate: "npm:^3.1.0"
+ colorette: "npm:^2.0.20"
+ eventemitter3: "npm:^5.0.1"
+ log-update: "npm:^5.0.1"
rfdc: "npm:^1.3.0"
- rxjs: "npm:^7.8.0"
- through: "npm:^2.3.8"
- wrap-ansi: "npm:^7.0.0"
- peerDependencies:
- enquirer: ">= 2.3.0 < 3"
- peerDependenciesMeta:
- enquirer:
- optional: true
- checksum: 00f00ad18262909bafff21b42d2d94faa9ed3911d70094a12a1182e773533f9b3cfd78d83a81fdbfb7dbc42e3e3252093f504c822de152100a953a91f3adf7cb
+ wrap-ansi: "npm:^8.1.0"
+ checksum: 37b6501be84ebea66dcce07c5f86c224aff0c01c9fb43f5055cc38a063030281d58198aad0aad481f174438309831ddf5f763b890e820cd7b7b4f4a5dfa229c9
languageName: node
linkType: hard
@@ -11096,15 +11214,16 @@ __metadata:
languageName: node
linkType: hard
-"log-update@npm:^4.0.0":
- version: 4.0.0
- resolution: "log-update@npm:4.0.0"
+"log-update@npm:^5.0.1":
+ version: 5.0.1
+ resolution: "log-update@npm:5.0.1"
dependencies:
- ansi-escapes: "npm:^4.3.0"
- cli-cursor: "npm:^3.1.0"
- slice-ansi: "npm:^4.0.0"
- wrap-ansi: "npm:^6.2.0"
- checksum: 18b299e230432a156f2535660776406d15ba8bb7817dd3eaadd58004b363756d4ecaabcd658f9949f90b62ea7d3354423be3fdeb7a201ab951ec0e8d6139af86
+ ansi-escapes: "npm:^5.0.0"
+ cli-cursor: "npm:^4.0.0"
+ slice-ansi: "npm:^5.0.0"
+ strip-ansi: "npm:^7.0.1"
+ wrap-ansi: "npm:^8.0.1"
+ checksum: 1050ea2027e80f32e132aace909987cb00c2719368c78b82ffca681a5b3f4020eeb5f4b4e310c47c35c6c36aff258c1d1bc51485ac44d6fdac9eb0a4275c539f
languageName: node
linkType: hard
@@ -11396,6 +11515,16 @@ __metadata:
languageName: node
linkType: hard
+"micromatch@npm:4.0.5, micromatch@npm:^4.0.4, micromatch@npm:^4.0.5":
+ version: 4.0.5
+ resolution: "micromatch@npm:4.0.5"
+ dependencies:
+ braces: "npm:^3.0.2"
+ picomatch: "npm:^2.3.1"
+ checksum: 3d6505b20f9fa804af5d8c596cb1c5e475b9b0cd05f652c5b56141cf941bd72adaeb7a436fda344235cef93a7f29b7472efc779fcdb83b478eab0867b95cdeff
+ languageName: node
+ linkType: hard
+
"micromatch@npm:^3.0.4, micromatch@npm:^3.1.10, micromatch@npm:^3.1.4":
version: 3.1.10
resolution: "micromatch@npm:3.1.10"
@@ -11417,16 +11546,6 @@ __metadata:
languageName: node
linkType: hard
-"micromatch@npm:^4.0.4, micromatch@npm:^4.0.5":
- version: 4.0.5
- resolution: "micromatch@npm:4.0.5"
- dependencies:
- braces: "npm:^3.0.2"
- picomatch: "npm:^2.3.1"
- checksum: 3d6505b20f9fa804af5d8c596cb1c5e475b9b0cd05f652c5b56141cf941bd72adaeb7a436fda344235cef93a7f29b7472efc779fcdb83b478eab0867b95cdeff
- languageName: node
- linkType: hard
-
"miller-rabin@npm:^4.0.0":
version: 4.0.1
resolution: "miller-rabin@npm:4.0.1"
@@ -12040,7 +12159,7 @@ __metadata:
languageName: node
linkType: hard
-"object-inspect@npm:^1.12.3, object-inspect@npm:^1.13.1, object-inspect@npm:^1.9.0":
+"object-inspect@npm:^1.13.1, object-inspect@npm:^1.9.0":
version: 1.13.1
resolution: "object-inspect@npm:1.13.1"
checksum: fad603f408e345c82e946abdf4bfd774260a5ed3e5997a0b057c44153ac32c7271ff19e3a5ae39c858da683ba045ccac2f65245c12763ce4e8594f818f4a648d
@@ -12690,7 +12809,7 @@ __metadata:
languageName: node
linkType: hard
-"pidtree@npm:^0.6.0":
+"pidtree@npm:0.6.0":
version: 0.6.0
resolution: "pidtree@npm:0.6.0"
bin:
@@ -14450,13 +14569,13 @@ __metadata:
languageName: node
linkType: hard
-"restore-cursor@npm:^3.1.0":
- version: 3.1.0
- resolution: "restore-cursor@npm:3.1.0"
+"restore-cursor@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "restore-cursor@npm:4.0.0"
dependencies:
onetime: "npm:^5.1.0"
signal-exit: "npm:^3.0.2"
- checksum: 8051a371d6aa67ff21625fa94e2357bd81ffdc96267f3fb0fc4aaf4534028343836548ef34c240ffa8c25b280ca35eb36be00b3cb2133fa4f51896d7e73c6b4f
+ checksum: 6f7da8c5e422ac26aa38354870b1afac09963572cf2879443540449068cb43476e9cbccf6f8de3e0171e0d6f7f533c2bc1a0a008003c9a525bbc098e89041318
languageName: node
linkType: hard
@@ -14584,15 +14703,6 @@ __metadata:
languageName: node
linkType: hard
-"rxjs@npm:^7.8.0":
- version: 7.8.1
- resolution: "rxjs@npm:7.8.1"
- dependencies:
- tslib: "npm:^2.1.0"
- checksum: 3c49c1ecd66170b175c9cacf5cef67f8914dcbc7cd0162855538d365c83fea631167cacb644b3ce533b2ea0e9a4d0b12175186985f89d75abe73dbd8f7f06f68
- languageName: node
- linkType: hard
-
"safe-array-concat@npm:^1.0.0, safe-array-concat@npm:^1.0.1":
version: 1.0.1
resolution: "safe-array-concat@npm:1.0.1"
@@ -15004,7 +15114,7 @@ __metadata:
languageName: node
linkType: hard
-"signal-exit@npm:^4.0.1":
+"signal-exit@npm:^4.0.1, signal-exit@npm:^4.1.0":
version: 4.1.0
resolution: "signal-exit@npm:4.1.0"
checksum: 41602dce540e46d599edba9d9860193398d135f7ff72cab629db5171516cfae628d21e7bfccde1bbfdf11c48726bc2a6d1a8fb8701125852fbfda7cf19c6aa83
@@ -15036,17 +15146,6 @@ __metadata:
languageName: node
linkType: hard
-"slice-ansi@npm:^3.0.0":
- version: 3.0.0
- resolution: "slice-ansi@npm:3.0.0"
- dependencies:
- ansi-styles: "npm:^4.0.0"
- astral-regex: "npm:^2.0.0"
- is-fullwidth-code-point: "npm:^3.0.0"
- checksum: 88083c9d0ca67d09f8b4c78f68833d69cabbb7236b74df5d741ad572bbf022deaf243fa54009cd434350622a1174ab267710fcc80a214ecc7689797fe00cb27c
- languageName: node
- linkType: hard
-
"slice-ansi@npm:^4.0.0":
version: 4.0.0
resolution: "slice-ansi@npm:4.0.0"
@@ -15472,7 +15571,7 @@ __metadata:
languageName: node
linkType: hard
-"string-argv@npm:^0.3.1":
+"string-argv@npm:0.3.2":
version: 0.3.2
resolution: "string-argv@npm:0.3.2"
checksum: 75c02a83759ad1722e040b86823909d9a2fc75d15dd71ec4b537c3560746e33b5f5a07f7332d1e3f88319909f82190843aa2f0a0d8c8d591ec08e93d5b8dec82
@@ -16133,13 +16232,6 @@ __metadata:
languageName: node
linkType: hard
-"through@npm:^2.3.8":
- version: 2.3.8
- resolution: "through@npm:2.3.8"
- checksum: 4b09f3774099de0d4df26d95c5821a62faee32c7e96fb1f4ebd54a2d7c11c57fe88b0a0d49cf375de5fee5ae6bf4eb56dbbf29d07366864e2ee805349970d3cc
- languageName: node
- linkType: hard
-
"thunky@npm:^1.0.2":
version: 1.1.0
resolution: "thunky@npm:1.1.0"
@@ -16333,7 +16425,7 @@ __metadata:
languageName: node
linkType: hard
-"tslib@npm:2.6.2, tslib@npm:^2.1.0, tslib@npm:^2.4.0, tslib@npm:^2.5.0, tslib@npm:^2.6.0":
+"tslib@npm:2.6.2, tslib@npm:^2.4.0, tslib@npm:^2.5.0, tslib@npm:^2.6.0":
version: 2.6.2
resolution: "tslib@npm:2.6.2"
checksum: e03a8a4271152c8b26604ed45535954c0a45296e32445b4b87f8a5abdb2421f40b59b4ca437c4346af0f28179780d604094eb64546bee2019d903d01c6c19bdb
@@ -16403,7 +16495,7 @@ __metadata:
languageName: node
linkType: hard
-"type-fest@npm:^1.0.1, type-fest@npm:^1.2.1, type-fest@npm:^1.2.2":
+"type-fest@npm:^1.0.1, type-fest@npm:^1.0.2, type-fest@npm:^1.2.1, type-fest@npm:^1.2.2":
version: 1.4.0
resolution: "type-fest@npm:1.4.0"
checksum: a3c0f4ee28ff6ddf800d769eafafcdeab32efa38763c1a1b8daeae681920f6e345d7920bf277245235561d8117dab765cb5f829c76b713b4c9de0998a5397141
@@ -17616,18 +17708,7 @@ __metadata:
languageName: node
linkType: hard
-"wrap-ansi@npm:^6.2.0":
- version: 6.2.0
- resolution: "wrap-ansi@npm:6.2.0"
- dependencies:
- ansi-styles: "npm:^4.0.0"
- string-width: "npm:^4.1.0"
- strip-ansi: "npm:^6.0.0"
- checksum: baad244e6e33335ea24e86e51868fe6823626e3a3c88d9a6674642afff1d34d9a154c917e74af8d845fd25d170c4ea9cf69a47133c3f3656e1252b3d462d9f6c
- languageName: node
- linkType: hard
-
-"wrap-ansi@npm:^8.1.0":
+"wrap-ansi@npm:^8.0.1, wrap-ansi@npm:^8.1.0":
version: 8.1.0
resolution: "wrap-ansi@npm:8.1.0"
dependencies:
@@ -17753,6 +17834,13 @@ __metadata:
languageName: node
linkType: hard
+"yaml@npm:2.3.3":
+ version: 2.3.3
+ resolution: "yaml@npm:2.3.3"
+ checksum: a0c56bf682159b0567e9cbbddf23efc2f6806f6450716d9be6ec5eb1af1b941e95c8d3dc9c47da20d1b6883a9d6c61e31cf98bb4b77ebca4396bf772657f2f00
+ languageName: node
+ linkType: hard
+
"yaml@npm:^1.10.0":
version: 1.10.2
resolution: "yaml@npm:1.10.2"
@@ -17760,13 +17848,6 @@ __metadata:
languageName: node
linkType: hard
-"yaml@npm:^2.2.2":
- version: 2.3.1
- resolution: "yaml@npm:2.3.1"
- checksum: ed4c21a907fb1cd60a25177612fa46d95064a144623d269199817908475fe85bef20fb17406e3bdc175351b6488056a6f84beb7836e8c262646546a0220188e3
- languageName: node
- linkType: hard
-
"yargs-parser@npm:^13.1.2":
version: 13.1.2
resolution: "yargs-parser@npm:13.1.2"