Merge remote-tracking branch 'parent/main' into upstream-20231107
This commit is contained in:
commit
64578feeb4
69 changed files with 437 additions and 218 deletions
17
.rubocop.yml
17
.rubocop.yml
|
@ -121,16 +121,11 @@ Rails/Exit:
|
||||||
# https://docs.rubocop.org/rubocop-rspec/cops_rspec.html#rspecfilepath
|
# https://docs.rubocop.org/rubocop-rspec/cops_rspec.html#rspecfilepath
|
||||||
RSpec/FilePath:
|
RSpec/FilePath:
|
||||||
CustomTransform:
|
CustomTransform:
|
||||||
ActivityPub: activitypub # Ignore the snake_case due to the amount of files to rename
|
ActivityPub: activitypub
|
||||||
DeepL: deepl
|
DeepL: deepl
|
||||||
FetchOEmbedService: fetch_oembed_service
|
FetchOEmbedService: fetch_oembed_service
|
||||||
JsonLdHelper: jsonld_helper
|
|
||||||
OEmbedController: oembed_controller
|
OEmbedController: oembed_controller
|
||||||
OStatus: ostatus
|
OStatus: ostatus
|
||||||
NodeInfoController: nodeinfo_controller # NodeInfo isn't snake_cased for any of the instances
|
|
||||||
Exclude:
|
|
||||||
- 'spec/config/initializers/rack_attack_spec.rb' # namespaces usually have separate folder
|
|
||||||
- 'spec/lib/sanitize_config_spec.rb' # namespaces usually have separate folder
|
|
||||||
|
|
||||||
# Reason:
|
# Reason:
|
||||||
# https://docs.rubocop.org/rubocop-rspec/cops_rspec.html#rspecnamedsubject
|
# https://docs.rubocop.org/rubocop-rspec/cops_rspec.html#rspecnamedsubject
|
||||||
|
@ -147,6 +142,16 @@ RSpec/NotToNot:
|
||||||
RSpec/Rails/HttpStatus:
|
RSpec/Rails/HttpStatus:
|
||||||
EnforcedStyle: numeric
|
EnforcedStyle: numeric
|
||||||
|
|
||||||
|
# Reason: Match overrides from Rspec/FilePath rule above
|
||||||
|
# https://docs.rubocop.org/rubocop-rspec/cops_rspec.html#rspecspecfilepathformat
|
||||||
|
RSpec/SpecFilePathFormat:
|
||||||
|
CustomTransform:
|
||||||
|
ActivityPub: activitypub
|
||||||
|
DeepL: deepl
|
||||||
|
FetchOEmbedService: fetch_oembed_service
|
||||||
|
OEmbedController: oembed_controller
|
||||||
|
OStatus: ostatus
|
||||||
|
|
||||||
# Reason:
|
# Reason:
|
||||||
# https://docs.rubocop.org/rubocop/cops_style.html#styleclassandmodulechildren
|
# https://docs.rubocop.org/rubocop/cops_style.html#styleclassandmodulechildren
|
||||||
Style/ClassAndModuleChildren:
|
Style/ClassAndModuleChildren:
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# syntax=docker/dockerfile:1.4
|
# syntax=docker/dockerfile:1.4
|
||||||
# This needs to be bookworm-slim because the Ruby image is built on bookworm-slim
|
# This needs to be bookworm-slim because the Ruby image is built on bookworm-slim
|
||||||
ARG NODE_VERSION="20.8-bookworm-slim"
|
ARG NODE_VERSION="20.9-bookworm-slim"
|
||||||
|
|
||||||
FROM ghcr.io/moritzheiber/ruby-jemalloc:3.2.2-slim as ruby
|
FROM ghcr.io/moritzheiber/ruby-jemalloc:3.2.2-slim as ruby
|
||||||
FROM node:${NODE_VERSION} as build
|
FROM node:${NODE_VERSION} as build
|
||||||
|
|
17
Gemfile.lock
17
Gemfile.lock
|
@ -235,7 +235,7 @@ GEM
|
||||||
devise (>= 4.0.0)
|
devise (>= 4.0.0)
|
||||||
rpam2 (~> 4.0)
|
rpam2 (~> 4.0)
|
||||||
diff-lcs (1.5.0)
|
diff-lcs (1.5.0)
|
||||||
discard (1.2.1)
|
discard (1.3.0)
|
||||||
activerecord (>= 4.2, < 8)
|
activerecord (>= 4.2, < 8)
|
||||||
docile (1.4.0)
|
docile (1.4.0)
|
||||||
domain_name (0.5.20190701)
|
domain_name (0.5.20190701)
|
||||||
|
@ -264,7 +264,7 @@ GEM
|
||||||
tzinfo
|
tzinfo
|
||||||
excon (0.100.0)
|
excon (0.100.0)
|
||||||
fabrication (2.30.0)
|
fabrication (2.30.0)
|
||||||
faker (3.2.1)
|
faker (3.2.2)
|
||||||
i18n (>= 1.8.11, < 2)
|
i18n (>= 1.8.11, < 2)
|
||||||
faraday (1.10.3)
|
faraday (1.10.3)
|
||||||
faraday-em_http (~> 1.0)
|
faraday-em_http (~> 1.0)
|
||||||
|
@ -535,7 +535,7 @@ GEM
|
||||||
pundit (2.3.1)
|
pundit (2.3.1)
|
||||||
activesupport (>= 3.0.0)
|
activesupport (>= 3.0.0)
|
||||||
raabro (1.4.0)
|
raabro (1.4.0)
|
||||||
racc (1.7.1)
|
racc (1.7.3)
|
||||||
rack (2.2.8)
|
rack (2.2.8)
|
||||||
rack-attack (6.7.0)
|
rack-attack (6.7.0)
|
||||||
rack (>= 1.0, < 4)
|
rack (>= 1.0, < 4)
|
||||||
|
@ -650,8 +650,7 @@ GEM
|
||||||
rspec-mocks (~> 3.0)
|
rspec-mocks (~> 3.0)
|
||||||
sidekiq (>= 5, < 8)
|
sidekiq (>= 5, < 8)
|
||||||
rspec-support (3.12.1)
|
rspec-support (3.12.1)
|
||||||
rubocop (1.57.1)
|
rubocop (1.57.2)
|
||||||
base64 (~> 0.1.1)
|
|
||||||
json (~> 2.3)
|
json (~> 2.3)
|
||||||
language_server-protocol (>= 3.17.0)
|
language_server-protocol (>= 3.17.0)
|
||||||
parallel (~> 1.10)
|
parallel (~> 1.10)
|
||||||
|
@ -662,11 +661,11 @@ GEM
|
||||||
rubocop-ast (>= 1.28.1, < 2.0)
|
rubocop-ast (>= 1.28.1, < 2.0)
|
||||||
ruby-progressbar (~> 1.7)
|
ruby-progressbar (~> 1.7)
|
||||||
unicode-display_width (>= 2.4.0, < 3.0)
|
unicode-display_width (>= 2.4.0, < 3.0)
|
||||||
rubocop-ast (1.29.0)
|
rubocop-ast (1.30.0)
|
||||||
parser (>= 3.2.1.0)
|
parser (>= 3.2.1.0)
|
||||||
rubocop-capybara (2.19.0)
|
rubocop-capybara (2.19.0)
|
||||||
rubocop (~> 1.41)
|
rubocop (~> 1.41)
|
||||||
rubocop-factory_bot (2.23.1)
|
rubocop-factory_bot (2.24.0)
|
||||||
rubocop (~> 1.33)
|
rubocop (~> 1.33)
|
||||||
rubocop-performance (1.19.1)
|
rubocop-performance (1.19.1)
|
||||||
rubocop (>= 1.7.0, < 2.0)
|
rubocop (>= 1.7.0, < 2.0)
|
||||||
|
@ -675,8 +674,8 @@ GEM
|
||||||
activesupport (>= 4.2.0)
|
activesupport (>= 4.2.0)
|
||||||
rack (>= 1.1)
|
rack (>= 1.1)
|
||||||
rubocop (>= 1.33.0, < 2.0)
|
rubocop (>= 1.33.0, < 2.0)
|
||||||
rubocop-rspec (2.23.2)
|
rubocop-rspec (2.25.0)
|
||||||
rubocop (~> 1.33)
|
rubocop (~> 1.40)
|
||||||
rubocop-capybara (~> 2.17)
|
rubocop-capybara (~> 2.17)
|
||||||
rubocop-factory_bot (~> 2.22)
|
rubocop-factory_bot (~> 2.22)
|
||||||
ruby-prof (1.6.3)
|
ruby-prof (1.6.3)
|
||||||
|
|
|
@ -41,32 +41,34 @@ const normalizeAccounts = (
|
||||||
return state;
|
return state;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const accountsReducer: Reducer<typeof initialState> = (
|
function getCurrentUser() {
|
||||||
state = initialState,
|
if (!me)
|
||||||
action,
|
|
||||||
) => {
|
|
||||||
const currentUserId = me;
|
|
||||||
|
|
||||||
if (!currentUserId)
|
|
||||||
throw new Error(
|
throw new Error(
|
||||||
'No current user (me) defined when calling `accountsReducer`',
|
'No current user (me) defined when calling `accountsReducer`',
|
||||||
);
|
);
|
||||||
|
|
||||||
|
return me;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const accountsReducer: Reducer<typeof initialState> = (
|
||||||
|
state = initialState,
|
||||||
|
action,
|
||||||
|
) => {
|
||||||
if (revealAccount.match(action))
|
if (revealAccount.match(action))
|
||||||
return state.setIn([action.payload.id, 'hidden'], false);
|
return state.setIn([action.payload.id, 'hidden'], false);
|
||||||
else if (importAccounts.match(action))
|
else if (importAccounts.match(action))
|
||||||
return normalizeAccounts(state, action.payload.accounts);
|
return normalizeAccounts(state, action.payload.accounts);
|
||||||
else if (followAccountSuccess.match(action))
|
else if (followAccountSuccess.match(action)) {
|
||||||
return state
|
return state
|
||||||
.update(
|
.update(
|
||||||
action.payload.relationship.id,
|
action.payload.relationship.id,
|
||||||
(account) => account?.update('followers_count', (n) => n + 1),
|
(account) => account?.update('followers_count', (n) => n + 1),
|
||||||
)
|
)
|
||||||
.update(
|
.update(
|
||||||
currentUserId,
|
getCurrentUser(),
|
||||||
(account) => account?.update('following_count', (n) => n + 1),
|
(account) => account?.update('following_count', (n) => n + 1),
|
||||||
);
|
);
|
||||||
else if (unfollowAccountSuccess.match(action))
|
} else if (unfollowAccountSuccess.match(action))
|
||||||
return state
|
return state
|
||||||
.update(
|
.update(
|
||||||
action.payload.relationship.id,
|
action.payload.relationship.id,
|
||||||
|
@ -74,7 +76,7 @@ export const accountsReducer: Reducer<typeof initialState> = (
|
||||||
account?.update('followers_count', (n) => Math.max(0, n - 1)),
|
account?.update('followers_count', (n) => Math.max(0, n - 1)),
|
||||||
)
|
)
|
||||||
.update(
|
.update(
|
||||||
currentUserId,
|
getCurrentUser(),
|
||||||
(account) =>
|
(account) =>
|
||||||
account?.update('following_count', (n) => Math.max(0, n - 1)),
|
account?.update('following_count', (n) => Math.max(0, n - 1)),
|
||||||
);
|
);
|
||||||
|
|
|
@ -1886,12 +1886,14 @@ a.account__display-name {
|
||||||
&.activate {
|
&.activate {
|
||||||
& > .icon {
|
& > .icon {
|
||||||
animation: spring-rotate-in 1s linear;
|
animation: spring-rotate-in 1s linear;
|
||||||
|
transform-origin: 50% 55%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.deactivate {
|
&.deactivate {
|
||||||
& > .icon {
|
& > .icon {
|
||||||
animation: spring-rotate-out 1s linear;
|
animation: spring-rotate-out 1s linear;
|
||||||
|
transform-origin: 50% 55%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,7 +55,8 @@ class ActivityPub::Parser::StatusParser
|
||||||
end
|
end
|
||||||
|
|
||||||
def created_at
|
def created_at
|
||||||
@object['published']&.to_datetime
|
datetime = @object['published']&.to_datetime
|
||||||
|
datetime if datetime.present? && (0..9999).cover?(datetime.year)
|
||||||
rescue ArgumentError
|
rescue ArgumentError
|
||||||
nil
|
nil
|
||||||
end
|
end
|
||||||
|
|
|
@ -62,7 +62,7 @@ class DeliveryFailureTracker
|
||||||
key.delete_prefix(exhausted_deliveries_key_by(''))
|
key.delete_prefix(exhausted_deliveries_key_by(''))
|
||||||
end
|
end
|
||||||
|
|
||||||
domains - UnavailableDomain.all.pluck(:domain)
|
domains - UnavailableDomain.pluck(:domain)
|
||||||
end
|
end
|
||||||
|
|
||||||
def warning_domains_map(domains = nil)
|
def warning_domains_map(domains = nil)
|
||||||
|
|
|
@ -261,7 +261,7 @@ class FeedManager
|
||||||
# @param [Account] target_account
|
# @param [Account] target_account
|
||||||
# @return [void]
|
# @return [void]
|
||||||
def clear_from_lists(account, target_account)
|
def clear_from_lists(account, target_account)
|
||||||
List.where(account: account).each do |list|
|
List.where(account: account).find_each do |list|
|
||||||
clear_from_list(list, target_account)
|
clear_from_list(list, target_account)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -55,7 +55,7 @@ class ActivityPub::FetchFeaturedTagsCollectionService < BaseService
|
||||||
|
|
||||||
FeaturedTag.includes(:tag).references(:tag).where(account: @account).where.not(tag: { name: normalized_names }).delete_all
|
FeaturedTag.includes(:tag).references(:tag).where(account: @account).where.not(tag: { name: normalized_names }).delete_all
|
||||||
|
|
||||||
FeaturedTag.includes(:tag).references(:tag).where(account: @account, tag: { name: normalized_names }).each do |featured_tag|
|
FeaturedTag.includes(:tag).references(:tag).where(account: @account, tag: { name: normalized_names }).find_each do |featured_tag|
|
||||||
featured_tag.update(name: tags.delete(featured_tag.tag.name))
|
featured_tag.update(name: tags.delete(featured_tag.tag.name))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@ class ActivityPub::SynchronizeFollowersService < BaseService
|
||||||
private
|
private
|
||||||
|
|
||||||
def remove_unexpected_local_followers!
|
def remove_unexpected_local_followers!
|
||||||
@account.followers.local.where.not(id: @expected_followers.map(&:id)).each do |unexpected_follower|
|
@account.followers.local.where.not(id: @expected_followers.map(&:id)).reorder(nil).find_each do |unexpected_follower|
|
||||||
UnfollowService.new.call(unexpected_follower, @account)
|
UnfollowService.new.call(unexpected_follower, @account)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -22,7 +22,7 @@ class AppealService < BaseService
|
||||||
end
|
end
|
||||||
|
|
||||||
def notify_staff!
|
def notify_staff!
|
||||||
User.those_who_can(:manage_appeals).includes(:account).each do |u|
|
User.those_who_can(:manage_appeals).includes(:account).find_each do |u|
|
||||||
AdminMailer.with(recipient: u.account).new_appeal(@appeal).deliver_later if u.allows_appeal_emails?
|
AdminMailer.with(recipient: u.account).new_appeal(@appeal).deliver_later if u.allows_appeal_emails?
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -55,7 +55,7 @@ class ApproveAppealService < BaseService
|
||||||
|
|
||||||
def undo_mark_statuses_as_sensitive!
|
def undo_mark_statuses_as_sensitive!
|
||||||
representative_account = Account.representative
|
representative_account = Account.representative
|
||||||
@strike.statuses.includes(:media_attachments).each do |status|
|
@strike.statuses.includes(:media_attachments).find_each do |status|
|
||||||
UpdateStatusService.new.call(status, representative_account.id, sensitive: false) if status.with_media?
|
UpdateStatusService.new.call(status, representative_account.id, sensitive: false) if status.with_media?
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -24,7 +24,7 @@ class ProcessHashtagsService < BaseService
|
||||||
added_tags = @current_tags - @previous_tags
|
added_tags = @current_tags - @previous_tags
|
||||||
|
|
||||||
unless added_tags.empty?
|
unless added_tags.empty?
|
||||||
@account.featured_tags.where(tag_id: added_tags.map(&:id)).each do |featured_tag|
|
@account.featured_tags.where(tag_id: added_tags.map(&:id)).find_each do |featured_tag|
|
||||||
featured_tag.increment(@status.created_at)
|
featured_tag.increment(@status.created_at)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -32,7 +32,7 @@ class ProcessHashtagsService < BaseService
|
||||||
removed_tags = @previous_tags - @current_tags
|
removed_tags = @previous_tags - @current_tags
|
||||||
|
|
||||||
unless removed_tags.empty?
|
unless removed_tags.empty?
|
||||||
@account.featured_tags.where(tag_id: removed_tags.map(&:id)).each do |featured_tag|
|
@account.featured_tags.where(tag_id: removed_tags.map(&:id)).find_each do |featured_tag|
|
||||||
featured_tag.decrement(@status.id)
|
featured_tag.decrement(@status.id)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -134,7 +134,7 @@ class RemoveStatusService < BaseService
|
||||||
end
|
end
|
||||||
|
|
||||||
def remove_from_hashtags
|
def remove_from_hashtags
|
||||||
@account.featured_tags.where(tag_id: @status.tags.map(&:id)).each do |featured_tag|
|
@account.featured_tags.where(tag_id: @status.tags.map(&:id)).find_each do |featured_tag|
|
||||||
featured_tag.decrement(@status.id)
|
featured_tag.decrement(@status.id)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,7 @@ class ReportService < BaseService
|
||||||
def notify_staff!
|
def notify_staff!
|
||||||
return if @report.unresolved_siblings?
|
return if @report.unresolved_siblings?
|
||||||
|
|
||||||
User.those_who_can(:manage_reports).includes(:account).each do |u|
|
User.those_who_can(:manage_reports).includes(:account).find_each do |u|
|
||||||
LocalNotificationWorker.perform_async(u.account_id, @report.id, 'Report', 'admin.report')
|
LocalNotificationWorker.perform_async(u.account_id, @report.id, 'Report', 'admin.report')
|
||||||
AdminMailer.with(recipient: u.account).new_report(@report).deliver_later if u.allows_report_emails?
|
AdminMailer.with(recipient: u.account).new_report(@report).deliver_later if u.allows_report_emails?
|
||||||
end
|
end
|
||||||
|
|
|
@ -52,6 +52,10 @@ module.exports = (api) => {
|
||||||
case 'development':
|
case 'development':
|
||||||
reactOptions.development = true;
|
reactOptions.development = true;
|
||||||
envOptions.debug = true;
|
envOptions.debug = true;
|
||||||
|
|
||||||
|
// We need Babel to not inject polyfills in dev, as this breaks `preval` files
|
||||||
|
envOptions.useBuiltIns = false;
|
||||||
|
envOptions.corejs = undefined;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,6 @@ ActiveSupport::Inflector.inflections(:en) do |inflect|
|
||||||
inflect.acronym 'PubSubHubbub'
|
inflect.acronym 'PubSubHubbub'
|
||||||
inflect.acronym 'ActivityStreams'
|
inflect.acronym 'ActivityStreams'
|
||||||
inflect.acronym 'JsonLd'
|
inflect.acronym 'JsonLd'
|
||||||
inflect.acronym 'NodeInfo'
|
|
||||||
inflect.acronym 'Ed25519'
|
inflect.acronym 'Ed25519'
|
||||||
inflect.acronym 'TOC'
|
inflect.acronym 'TOC'
|
||||||
inflect.acronym 'RSS'
|
inflect.acronym 'RSS'
|
||||||
|
|
|
@ -58,12 +58,12 @@ Rails.application.routes.draw do
|
||||||
end
|
end
|
||||||
|
|
||||||
get '.well-known/host-meta', to: 'well_known/host_meta#show', as: :host_meta, defaults: { format: 'xml' }
|
get '.well-known/host-meta', to: 'well_known/host_meta#show', as: :host_meta, defaults: { format: 'xml' }
|
||||||
get '.well-known/nodeinfo', to: 'well_known/nodeinfo#index', as: :nodeinfo, defaults: { format: 'json' }
|
get '.well-known/nodeinfo', to: 'well_known/node_info#index', as: :nodeinfo, defaults: { format: 'json' }
|
||||||
get '.well-known/webfinger', to: 'well_known/webfinger#show', as: :webfinger
|
get '.well-known/webfinger', to: 'well_known/webfinger#show', as: :webfinger
|
||||||
get '.well-known/change-password', to: redirect('/auth/edit')
|
get '.well-known/change-password', to: redirect('/auth/edit')
|
||||||
get '.well-known/proxy', to: redirect { |_, request| "/authorize_interaction?#{request.params.to_query}" }
|
get '.well-known/proxy', to: redirect { |_, request| "/authorize_interaction?#{request.params.to_query}" }
|
||||||
|
|
||||||
get '/nodeinfo/2.0', to: 'well_known/nodeinfo#show', as: :nodeinfo_schema
|
get '/nodeinfo/2.0', to: 'well_known/node_info#show', as: :nodeinfo_schema
|
||||||
|
|
||||||
get 'manifest', to: 'manifests#show', defaults: { format: 'json' }
|
get 'manifest', to: 'manifests#show', defaults: { format: 'json' }
|
||||||
get 'intent', to: 'intents#show'
|
get 'intent', to: 'intents#show'
|
||||||
|
|
|
@ -2,8 +2,10 @@
|
||||||
|
|
||||||
class AddProfileFieldsToAccounts < ActiveRecord::Migration[4.2]
|
class AddProfileFieldsToAccounts < ActiveRecord::Migration[4.2]
|
||||||
def change
|
def change
|
||||||
add_column :accounts, :note, :text, null: false, default: ''
|
change_table :accounts, bulk: true do |t|
|
||||||
add_column :accounts, :display_name, :string, null: false, default: ''
|
t.column :note, :text, null: false, default: ''
|
||||||
add_column :accounts, :uri, :string, null: false, default: ''
|
t.column :display_name, :string, null: false, default: ''
|
||||||
|
t.column :uri, :string, null: false, default: ''
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,7 +2,9 @@
|
||||||
|
|
||||||
class AddMetadataToStatuses < ActiveRecord::Migration[4.2]
|
class AddMetadataToStatuses < ActiveRecord::Migration[4.2]
|
||||||
def change
|
def change
|
||||||
add_column :statuses, :in_reply_to_id, :integer, null: true
|
change_table(:statuses, bulk: true) do |t|
|
||||||
add_column :statuses, :reblog_of_id, :integer, null: true
|
t.column :in_reply_to_id, :integer, null: true
|
||||||
|
t.column :reblog_of_id, :integer, null: true
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
class AddDeviseToUsers < ActiveRecord::Migration[4.2]
|
class AddDeviseToUsers < ActiveRecord::Migration[4.2]
|
||||||
def self.up
|
def self.up
|
||||||
change_table(:users) do |t|
|
change_table(:users, bulk: true) do |t|
|
||||||
## Database authenticatable
|
## Database authenticatable
|
||||||
t.string :encrypted_password, null: false, default: ''
|
t.string :encrypted_password, null: false, default: ''
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,10 @@
|
||||||
|
|
||||||
class AddOwnerToApplication < ActiveRecord::Migration[4.2]
|
class AddOwnerToApplication < ActiveRecord::Migration[4.2]
|
||||||
def change
|
def change
|
||||||
add_column :oauth_applications, :owner_id, :integer, null: true
|
change_table(:oauth_applications, bulk: true) do |t|
|
||||||
add_column :oauth_applications, :owner_type, :string, null: true
|
t.column :owner_id, :integer, null: true
|
||||||
|
t.column :owner_type, :string, null: true
|
||||||
|
end
|
||||||
add_index :oauth_applications, [:owner_id, :owner_type]
|
add_index :oauth_applications, [:owner_id, :owner_type]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,8 +2,10 @@
|
||||||
|
|
||||||
class RemoveOwnerFromApplication < ActiveRecord::Migration[5.0]
|
class RemoveOwnerFromApplication < ActiveRecord::Migration[5.0]
|
||||||
def change
|
def change
|
||||||
remove_index :oauth_applications, [:owner_id, :owner_type]
|
change_table(:oauth_applications, bulk: true) do |t|
|
||||||
remove_column :oauth_applications, :owner_id, :integer, null: true
|
t.remove_index [:owner_id, :owner_type]
|
||||||
remove_column :oauth_applications, :owner_type, :string, null: true
|
t.remove :owner_id, type: :integer, options: { null: true }
|
||||||
|
t.remove :owner_type, type: :string, options: { null: true }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,10 +2,12 @@
|
||||||
|
|
||||||
class AddConfirmableToUsers < ActiveRecord::Migration[5.0]
|
class AddConfirmableToUsers < ActiveRecord::Migration[5.0]
|
||||||
def change
|
def change
|
||||||
add_column :users, :confirmation_token, :string
|
change_table(:users, bulk: true) do |t|
|
||||||
add_column :users, :confirmed_at, :datetime
|
t.column :confirmation_token, :string
|
||||||
add_column :users, :confirmation_sent_at, :datetime
|
t.column :confirmed_at, :datetime
|
||||||
add_column :users, :unconfirmed_email, :string
|
t.column :confirmation_sent_at, :datetime
|
||||||
|
t.column :unconfirmed_email, :string
|
||||||
|
end
|
||||||
add_index :users, :confirmation_token, unique: true
|
add_index :users, :confirmation_token, unique: true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,20 +2,24 @@
|
||||||
|
|
||||||
class MigrateSettings < ActiveRecord::Migration[4.2]
|
class MigrateSettings < ActiveRecord::Migration[4.2]
|
||||||
def up
|
def up
|
||||||
remove_index :settings, [:target_type, :target_id, :var]
|
change_table(:settings, bulk: true) do |t|
|
||||||
rename_column :settings, :target_id, :thing_id
|
t.remove_index [:target_type, :target_id, :var]
|
||||||
rename_column :settings, :target_type, :thing_type
|
t.rename :target_id, :thing_id
|
||||||
change_column :settings, :thing_id, :integer, null: true, default: nil
|
t.rename :target_type, :thing_type
|
||||||
change_column :settings, :thing_type, :string, null: true, default: nil
|
t.change :thing_id, :integer, null: true, default: nil
|
||||||
add_index :settings, [:thing_type, :thing_id, :var], unique: true
|
t.change :thing_type, :string, null: true, default: nil
|
||||||
|
t.index [:thing_type, :thing_id, :var], unique: true
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def down
|
def down
|
||||||
remove_index :settings, [:thing_type, :thing_id, :var]
|
change_table(:settings, bulk: true) do |t|
|
||||||
rename_column :settings, :thing_id, :target_id
|
t.remove_index [:thing_type, :thing_id, :var]
|
||||||
rename_column :settings, :thing_type, :target_type
|
t.rename :thing_id, :target_id
|
||||||
change_column :settings, :target_id, :integer, null: false
|
t.rename :thing_type, :target_type
|
||||||
change_column :settings, :target_type, :string, null: false, default: ''
|
t.column :target_id, :integer, null: false
|
||||||
add_index :settings, [:target_type, :target_id, :var], unique: true
|
t.column :target_type, :string, null: false, default: ''
|
||||||
|
t.index [:target_type, :target_id, :var], unique: true
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,10 +2,12 @@
|
||||||
|
|
||||||
class AddDeviseTwoFactorToUsers < ActiveRecord::Migration[5.0]
|
class AddDeviseTwoFactorToUsers < ActiveRecord::Migration[5.0]
|
||||||
def change
|
def change
|
||||||
add_column :users, :encrypted_otp_secret, :string
|
change_table(:users, bulk: true) do |t|
|
||||||
add_column :users, :encrypted_otp_secret_iv, :string
|
t.column :encrypted_otp_secret, :string
|
||||||
add_column :users, :encrypted_otp_secret_salt, :string
|
t.column :encrypted_otp_secret_iv, :string
|
||||||
add_column :users, :consumed_timestep, :integer
|
t.column :encrypted_otp_secret_salt, :string
|
||||||
add_column :users, :otp_required_for_login, :boolean
|
t.column :consumed_timestep, :integer
|
||||||
|
t.column :otp_required_for_login, :boolean
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,9 +2,11 @@
|
||||||
|
|
||||||
class ChangePrimaryKeyToBigintOnStatuses < ActiveRecord::Migration[5.0]
|
class ChangePrimaryKeyToBigintOnStatuses < ActiveRecord::Migration[5.0]
|
||||||
def change
|
def change
|
||||||
change_column :statuses, :id, :bigint
|
change_table(:statuses, bulk: true) do |t|
|
||||||
change_column :statuses, :reblog_of_id, :bigint
|
t.change :id, :bigint
|
||||||
change_column :statuses, :in_reply_to_id, :bigint
|
t.change :reblog_of_id, :bigint
|
||||||
|
t.change :in_reply_to_id, :bigint
|
||||||
|
end
|
||||||
|
|
||||||
change_column :media_attachments, :status_id, :bigint
|
change_column :media_attachments, :status_id, :bigint
|
||||||
change_column :mentions, :status_id, :bigint
|
change_column :mentions, :status_id, :bigint
|
||||||
|
|
|
@ -2,11 +2,15 @@
|
||||||
|
|
||||||
class AddCounterCaches < ActiveRecord::Migration[5.0]
|
class AddCounterCaches < ActiveRecord::Migration[5.0]
|
||||||
def change
|
def change
|
||||||
add_column :statuses, :favourites_count, :integer, null: false, default: 0
|
change_table(:statuses, bulk: true) do |t|
|
||||||
add_column :statuses, :reblogs_count, :integer, null: false, default: 0
|
t.column :favourites_count, :integer, null: false, default: 0
|
||||||
add_column :accounts, :statuses_count, :integer, null: false, default: 0
|
t.column :reblogs_count, :integer, null: false, default: 0
|
||||||
add_column :accounts, :followers_count, :integer, null: false, default: 0
|
end
|
||||||
add_column :accounts, :following_count, :integer, null: false, default: 0
|
change_table(:accounts, bulk: true) do |t|
|
||||||
|
t.column :statuses_count, :integer, null: false, default: 0
|
||||||
|
t.column :followers_count, :integer, null: false, default: 0
|
||||||
|
t.column :following_count, :integer, null: false, default: 0
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -2,13 +2,15 @@
|
||||||
|
|
||||||
class AddOEmbedToPreviewCards < ActiveRecord::Migration[5.0]
|
class AddOEmbedToPreviewCards < ActiveRecord::Migration[5.0]
|
||||||
def change
|
def change
|
||||||
add_column :preview_cards, :type, :integer, default: 0, null: false
|
change_table(:preview_cards, bulk: true) do |t|
|
||||||
add_column :preview_cards, :html, :text, null: false, default: ''
|
t.column :type, :integer, default: 0, null: false
|
||||||
add_column :preview_cards, :author_name, :string, null: false, default: ''
|
t.column :html, :text, null: false, default: ''
|
||||||
add_column :preview_cards, :author_url, :string, null: false, default: ''
|
t.column :author_name, :string, null: false, default: ''
|
||||||
add_column :preview_cards, :provider_name, :string, null: false, default: ''
|
t.column :author_url, :string, null: false, default: ''
|
||||||
add_column :preview_cards, :provider_url, :string, null: false, default: ''
|
t.column :provider_name, :string, null: false, default: ''
|
||||||
add_column :preview_cards, :width, :integer, default: 0, null: false
|
t.column :provider_url, :string, null: false, default: ''
|
||||||
add_column :preview_cards, :height, :integer, default: 0, null: false
|
t.column :width, :integer, default: 0, null: false
|
||||||
|
t.column :height, :integer, default: 0, null: false
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,8 +2,10 @@
|
||||||
|
|
||||||
class ReAddOwnerToApplication < ActiveRecord::Migration[5.0]
|
class ReAddOwnerToApplication < ActiveRecord::Migration[5.0]
|
||||||
def change
|
def change
|
||||||
add_column :oauth_applications, :owner_id, :integer, null: true
|
change_table(:oauth_applications, bulk: true) do |t|
|
||||||
add_column :oauth_applications, :owner_type, :string, null: true
|
t.column :owner_id, :integer, null: true
|
||||||
|
t.column :owner_type, :string, null: true
|
||||||
|
end
|
||||||
add_index :oauth_applications, [:owner_id, :owner_type]
|
add_index :oauth_applications, [:owner_id, :owner_type]
|
||||||
add_foreign_key :oauth_applications, :users, column: :owner_id, on_delete: :cascade
|
add_foreign_key :oauth_applications, :users, column: :owner_id, on_delete: :cascade
|
||||||
end
|
end
|
||||||
|
|
|
@ -3,9 +3,12 @@
|
||||||
class ChangeLanguageFilterToOptOut < ActiveRecord::Migration[5.0]
|
class ChangeLanguageFilterToOptOut < ActiveRecord::Migration[5.0]
|
||||||
def change
|
def change
|
||||||
remove_index :users, :allowed_languages
|
remove_index :users, :allowed_languages
|
||||||
remove_column :users, :allowed_languages
|
|
||||||
|
|
||||||
add_column :users, :filtered_languages, :string, array: true, default: [], null: false
|
change_table(:users, bulk: true) do |t|
|
||||||
|
t.remove :allowed_languages
|
||||||
|
t.column :filtered_languages, :string, array: true, default: [], null: false
|
||||||
|
end
|
||||||
|
|
||||||
add_index :users, :filtered_languages, using: :gin
|
add_index :users, :filtered_languages, using: :gin
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,8 +2,10 @@
|
||||||
|
|
||||||
class AddDescriptionToSessionActivations < ActiveRecord::Migration[5.1]
|
class AddDescriptionToSessionActivations < ActiveRecord::Migration[5.1]
|
||||||
def change
|
def change
|
||||||
add_column :session_activations, :user_agent, :string, null: false, default: ''
|
change_table(:session_activations, bulk: true) do |t|
|
||||||
add_column :session_activations, :ip, :inet
|
t.column :user_agent, :string, null: false, default: ''
|
||||||
|
t.column :ip, :inet
|
||||||
|
end
|
||||||
add_foreign_key :session_activations, :users, on_delete: :cascade
|
add_foreign_key :session_activations, :users, on_delete: :cascade
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,10 +2,12 @@
|
||||||
|
|
||||||
class AddActivityPubToAccounts < ActiveRecord::Migration[5.1]
|
class AddActivityPubToAccounts < ActiveRecord::Migration[5.1]
|
||||||
def change
|
def change
|
||||||
add_column :accounts, :inbox_url, :string, null: false, default: ''
|
change_table(:accounts, bulk: true) do |t|
|
||||||
add_column :accounts, :outbox_url, :string, null: false, default: ''
|
t.column :inbox_url, :string, null: false, default: ''
|
||||||
add_column :accounts, :shared_inbox_url, :string, null: false, default: ''
|
t.column :outbox_url, :string, null: false, default: ''
|
||||||
add_column :accounts, :followers_url, :string, null: false, default: ''
|
t.column :shared_inbox_url, :string, null: false, default: ''
|
||||||
add_column :accounts, :protocol, :integer, null: false, default: 0
|
t.column :followers_url, :string, null: false, default: ''
|
||||||
|
t.column :protocol, :integer, null: false, default: 0
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,7 +2,11 @@
|
||||||
|
|
||||||
class AddUriToCustomEmojis < ActiveRecord::Migration[5.2]
|
class AddUriToCustomEmojis < ActiveRecord::Migration[5.2]
|
||||||
def change
|
def change
|
||||||
add_column :custom_emojis, :uri, :string
|
safety_assured do
|
||||||
add_column :custom_emojis, :image_remote_url, :string
|
change_table(:custom_emojis, bulk: true) do |t|
|
||||||
|
t.column :uri, :string
|
||||||
|
t.column :image_remote_url, :string
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -15,7 +15,9 @@ class ChangeRelaysEnabled < ActiveRecord::Migration[5.2]
|
||||||
end
|
end
|
||||||
|
|
||||||
def down
|
def down
|
||||||
remove_column :relays, :state
|
change_table(:relays, bulk: true) do |t|
|
||||||
add_column :relays, :enabled, :boolean, default: false, null: false
|
t.remove :state
|
||||||
|
t.column :enabled, :boolean, default: false, null: false
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -13,8 +13,12 @@ class AddSilencedAtSuspendedAtToAccounts < ActiveRecord::Migration[5.2]
|
||||||
end
|
end
|
||||||
|
|
||||||
def up
|
def up
|
||||||
add_column :accounts, :silenced_at, :datetime
|
safety_assured do
|
||||||
add_column :accounts, :suspended_at, :datetime
|
change_table(:accounts, bulk: true) do |t|
|
||||||
|
t.column :silenced_at, :datetime
|
||||||
|
t.column :suspended_at, :datetime
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
# Record suspend date of blocks and silences for users whose limitations match
|
# Record suspend date of blocks and silences for users whose limitations match
|
||||||
# a domain block
|
# a domain block
|
||||||
|
@ -36,7 +40,9 @@ class AddSilencedAtSuspendedAtToAccounts < ActiveRecord::Migration[5.2]
|
||||||
Account.where(suspended: false).where.not(suspended_at: nil).in_batches.update_all(suspended: true)
|
Account.where(suspended: false).where.not(suspended_at: nil).in_batches.update_all(suspended: true)
|
||||||
Account.where(silenced: false).where.not(silenced_at: nil).in_batches.update_all(silenced: true)
|
Account.where(silenced: false).where.not(silenced_at: nil).in_batches.update_all(silenced: true)
|
||||||
|
|
||||||
remove_column :accounts, :silenced_at
|
change_table(:accounts, bulk: true) do |t|
|
||||||
remove_column :accounts, :suspended_at
|
t.column :silenced_at, :datetime
|
||||||
|
t.column :suspended_at, :datetime
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,10 +2,14 @@
|
||||||
|
|
||||||
class AddCapabilitiesToTags < ActiveRecord::Migration[5.2]
|
class AddCapabilitiesToTags < ActiveRecord::Migration[5.2]
|
||||||
def change
|
def change
|
||||||
add_column :tags, :usable, :boolean
|
safety_assured do
|
||||||
add_column :tags, :trendable, :boolean
|
change_table(:tags, bulk: true) do |t|
|
||||||
add_column :tags, :listable, :boolean
|
t.column :usable, :boolean
|
||||||
add_column :tags, :reviewed_at, :datetime
|
t.column :trendable, :boolean
|
||||||
add_column :tags, :requested_review_at, :datetime
|
t.column :listable, :boolean
|
||||||
|
t.column :reviewed_at, :datetime
|
||||||
|
t.column :requested_review_at, :datetime
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,7 +2,11 @@
|
||||||
|
|
||||||
class AddCommentsToDomainBlocks < ActiveRecord::Migration[5.2]
|
class AddCommentsToDomainBlocks < ActiveRecord::Migration[5.2]
|
||||||
def change
|
def change
|
||||||
add_column :domain_blocks, :private_comment, :text
|
safety_assured do
|
||||||
add_column :domain_blocks, :public_comment, :text
|
change_table(:domain_blocks, bulk: true) do |t|
|
||||||
|
t.column :private_comment, :text
|
||||||
|
t.column :public_comment, :text
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,7 +2,11 @@
|
||||||
|
|
||||||
class AddLastStatusAtToTags < ActiveRecord::Migration[5.2]
|
class AddLastStatusAtToTags < ActiveRecord::Migration[5.2]
|
||||||
def change
|
def change
|
||||||
add_column :tags, :last_status_at, :datetime
|
safety_assured do
|
||||||
add_column :tags, :last_trend_at, :datetime
|
change_table(:tags, bulk: true) do |t|
|
||||||
|
t.column :last_status_at, :datetime
|
||||||
|
t.column :last_trend_at, :datetime
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,7 +2,11 @@
|
||||||
|
|
||||||
class AddMaxScoreToTags < ActiveRecord::Migration[5.2]
|
class AddMaxScoreToTags < ActiveRecord::Migration[5.2]
|
||||||
def change
|
def change
|
||||||
add_column :tags, :max_score, :float
|
safety_assured do
|
||||||
add_column :tags, :max_score_at, :datetime
|
change_table(:tags, bulk: true) do |t|
|
||||||
|
t.column :max_score, :float
|
||||||
|
t.column :max_score_at, :datetime
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -3,8 +3,12 @@
|
||||||
class AddStorageSchemaVersion < ActiveRecord::Migration[5.2]
|
class AddStorageSchemaVersion < ActiveRecord::Migration[5.2]
|
||||||
def change
|
def change
|
||||||
add_column :preview_cards, :image_storage_schema_version, :integer
|
add_column :preview_cards, :image_storage_schema_version, :integer
|
||||||
add_column :accounts, :avatar_storage_schema_version, :integer
|
safety_assured do
|
||||||
add_column :accounts, :header_storage_schema_version, :integer
|
change_table(:accounts, bulk: true) do |t|
|
||||||
|
t.column :avatar_storage_schema_version, :integer
|
||||||
|
t.column :header_storage_schema_version, :integer
|
||||||
|
end
|
||||||
|
end
|
||||||
add_column :media_attachments, :file_storage_schema_version, :integer
|
add_column :media_attachments, :file_storage_schema_version, :integer
|
||||||
add_column :custom_emojis, :image_storage_schema_version, :integer
|
add_column :custom_emojis, :image_storage_schema_version, :integer
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,7 +2,11 @@
|
||||||
|
|
||||||
class AddSignInTokenToUsers < ActiveRecord::Migration[5.2]
|
class AddSignInTokenToUsers < ActiveRecord::Migration[5.2]
|
||||||
def change
|
def change
|
||||||
add_column :users, :sign_in_token, :string
|
safety_assured do
|
||||||
add_column :users, :sign_in_token_sent_at, :datetime
|
change_table(:users, bulk: true) do |t|
|
||||||
|
t.column :sign_in_token, :string
|
||||||
|
t.column :sign_in_token_sent_at, :datetime
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,8 +2,12 @@
|
||||||
|
|
||||||
class AddLanguageToPreviewCards < ActiveRecord::Migration[6.1]
|
class AddLanguageToPreviewCards < ActiveRecord::Migration[6.1]
|
||||||
def change
|
def change
|
||||||
add_column :preview_cards, :language, :string
|
safety_assured do
|
||||||
add_column :preview_cards, :max_score, :float
|
change_table(:preview_cards, bulk: true) do |t|
|
||||||
add_column :preview_cards, :max_score_at, :datetime
|
t.column :language, :string
|
||||||
|
t.column :max_score, :float
|
||||||
|
t.column :max_score_at, :datetime
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -8,16 +8,24 @@ class AddCategoryToReports < ActiveRecord::Migration[6.1]
|
||||||
disable_ddl_transaction!
|
disable_ddl_transaction!
|
||||||
|
|
||||||
def up
|
def up
|
||||||
safety_assured { add_column_with_default :reports, :category, :int, default: 0, allow_null: false }
|
safety_assured do
|
||||||
add_column :reports, :action_taken_at, :datetime
|
add_column_with_default :reports, :category, :int, default: 0, allow_null: false
|
||||||
add_column :reports, :rule_ids, :bigint, array: true
|
change_table(:reports, bulk: true) do |t|
|
||||||
safety_assured { execute 'UPDATE reports SET action_taken_at = updated_at WHERE action_taken = TRUE' }
|
t.column :action_taken_at, :datetime
|
||||||
|
t.column :rule_ids, :bigint, array: true
|
||||||
|
end
|
||||||
|
execute 'UPDATE reports SET action_taken_at = updated_at WHERE action_taken = TRUE'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def down
|
def down
|
||||||
safety_assured { execute 'UPDATE reports SET action_taken = TRUE WHERE action_taken_at IS NOT NULL' }
|
safety_assured do
|
||||||
|
execute 'UPDATE reports SET action_taken = TRUE WHERE action_taken_at IS NOT NULL'
|
||||||
remove_column :reports, :category
|
remove_column :reports, :category
|
||||||
remove_column :reports, :action_taken_at
|
change_table(:reports, bulk: true) do |t|
|
||||||
remove_column :reports, :rule_ids
|
t.column :action_taken_at, :datetime
|
||||||
|
t.column :rule_ids, :bigint, array: true
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,8 +2,12 @@
|
||||||
|
|
||||||
class AddTrendableToAccounts < ActiveRecord::Migration[6.1]
|
class AddTrendableToAccounts < ActiveRecord::Migration[6.1]
|
||||||
def change
|
def change
|
||||||
add_column :accounts, :trendable, :boolean
|
safety_assured do
|
||||||
add_column :accounts, :reviewed_at, :datetime
|
change_table(:accounts, bulk: true) do |t|
|
||||||
add_column :accounts, :requested_review_at, :datetime
|
t.column :trendable, :boolean
|
||||||
|
t.column :reviewed_at, :datetime
|
||||||
|
t.column :requested_review_at, :datetime
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,7 +2,11 @@
|
||||||
|
|
||||||
class AddIpsToEmailDomainBlocks < ActiveRecord::Migration[6.1]
|
class AddIpsToEmailDomainBlocks < ActiveRecord::Migration[6.1]
|
||||||
def change
|
def change
|
||||||
add_column :email_domain_blocks, :ips, :inet, array: true
|
safety_assured do
|
||||||
add_column :email_domain_blocks, :last_refresh_at, :datetime
|
change_table(:email_domain_blocks, bulk: true) do |t|
|
||||||
|
t.column :ips, :inet, array: true
|
||||||
|
t.column :last_refresh_at, :datetime
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,7 +2,11 @@
|
||||||
|
|
||||||
class AddLastUsedAtToOauthAccessTokens < ActiveRecord::Migration[6.1]
|
class AddLastUsedAtToOauthAccessTokens < ActiveRecord::Migration[6.1]
|
||||||
def change
|
def change
|
||||||
add_column :oauth_access_tokens, :last_used_at, :datetime
|
safety_assured do
|
||||||
add_column :oauth_access_tokens, :last_used_ip, :inet
|
change_table(:oauth_access_tokens, bulk: true) do |t|
|
||||||
|
t.column :last_used_at, :datetime
|
||||||
|
t.column :last_used_ip, :inet
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,9 +2,13 @@
|
||||||
|
|
||||||
class AddOrderedMediaAttachmentIdsToStatusEdits < ActiveRecord::Migration[6.1]
|
class AddOrderedMediaAttachmentIdsToStatusEdits < ActiveRecord::Migration[6.1]
|
||||||
def change
|
def change
|
||||||
add_column :status_edits, :ordered_media_attachment_ids, :bigint, array: true
|
safety_assured do
|
||||||
add_column :status_edits, :media_descriptions, :text, array: true
|
change_table(:status_edits, bulk: true) do |t|
|
||||||
add_column :status_edits, :poll_options, :string, array: true
|
t.column :ordered_media_attachment_ids, :bigint, array: true
|
||||||
add_column :status_edits, :sensitive, :boolean
|
t.column :media_descriptions, :text, array: true
|
||||||
|
t.column :poll_options, :string, array: true
|
||||||
|
t.column :sensitive, :boolean
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,8 +2,12 @@
|
||||||
|
|
||||||
class AddHumanIdentifierToAdminActionLogs < ActiveRecord::Migration[6.1]
|
class AddHumanIdentifierToAdminActionLogs < ActiveRecord::Migration[6.1]
|
||||||
def change
|
def change
|
||||||
add_column :admin_action_logs, :human_identifier, :string
|
safety_assured do
|
||||||
add_column :admin_action_logs, :route_param, :string
|
change_table(:admin_action_logs, bulk: true) do |t|
|
||||||
add_column :admin_action_logs, :permalink, :string
|
t.column :human_identifier, :string
|
||||||
|
t.column :route_param, :string
|
||||||
|
t.column :permalink, :string
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -89,7 +89,7 @@ describe ApplicationHelper do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'show_landing_strip?', without_verify_partial_doubles: true do
|
describe 'show_landing_strip?', :without_verify_partial_doubles do
|
||||||
describe 'when signed in' do
|
describe 'when signed in' do
|
||||||
before do
|
before do
|
||||||
allow(helper).to receive(:user_signed_in?).and_return(true)
|
allow(helper).to receive(:user_signed_in?).and_return(true)
|
||||||
|
|
|
@ -141,6 +141,46 @@ RSpec.describe ActivityPub::Activity::Create do
|
||||||
subject.perform unless custom_before
|
subject.perform unless custom_before
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'when object publication date is below ISO8601 range' do
|
||||||
|
let(:object_json) do
|
||||||
|
{
|
||||||
|
id: [ActivityPub::TagManager.instance.uri_for(sender), '#bar'].join,
|
||||||
|
type: 'Note',
|
||||||
|
content: 'Lorem ipsum',
|
||||||
|
published: '-0977-11-03T08:31:22Z',
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'creates status with a valid creation date', :aggregate_failures do
|
||||||
|
status = sender.statuses.first
|
||||||
|
|
||||||
|
expect(status).to_not be_nil
|
||||||
|
expect(status.text).to eq 'Lorem ipsum'
|
||||||
|
|
||||||
|
expect(status.created_at).to be_within(30).of(Time.now.utc)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when object publication date is above ISO8601 range' do
|
||||||
|
let(:object_json) do
|
||||||
|
{
|
||||||
|
id: [ActivityPub::TagManager.instance.uri_for(sender), '#bar'].join,
|
||||||
|
type: 'Note',
|
||||||
|
content: 'Lorem ipsum',
|
||||||
|
published: '10000-11-03T08:31:22Z',
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'creates status with a valid creation date', :aggregate_failures do
|
||||||
|
status = sender.statuses.first
|
||||||
|
|
||||||
|
expect(status).to_not be_nil
|
||||||
|
expect(status.text).to eq 'Lorem ipsum'
|
||||||
|
|
||||||
|
expect(status.created_at).to be_within(30).of(Time.now.utc)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context 'when object has been edited' do
|
context 'when object has been edited' do
|
||||||
let(:object_json) do
|
let(:object_json) do
|
||||||
{
|
{
|
||||||
|
@ -152,18 +192,16 @@ RSpec.describe ActivityPub::Activity::Create do
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'creates status' do
|
it 'creates status with appropriate creation and edition dates', :aggregate_failures do
|
||||||
status = sender.statuses.first
|
status = sender.statuses.first
|
||||||
|
|
||||||
expect(status).to_not be_nil
|
expect(status).to_not be_nil
|
||||||
expect(status.text).to eq 'Lorem ipsum'
|
expect(status.text).to eq 'Lorem ipsum'
|
||||||
end
|
|
||||||
|
|
||||||
it 'marks status as edited' do
|
expect(status.created_at).to eq '2022-01-22T15:00:00Z'.to_datetime
|
||||||
status = sender.statuses.first
|
|
||||||
|
|
||||||
expect(status).to_not be_nil
|
|
||||||
expect(status.edited?).to be true
|
expect(status.edited?).to be true
|
||||||
|
expect(status.edited_at).to eq '2022-01-22T16:00:00Z'.to_datetime
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ RSpec.describe FeedManager do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'tracks at least as many statuses as reblogs', skip_stub: true do
|
it 'tracks at least as many statuses as reblogs', :skip_stub do
|
||||||
expect(FeedManager::REBLOG_FALLOFF).to be <= FeedManager::MAX_ITEMS
|
expect(FeedManager::REBLOG_FALLOFF).to be <= FeedManager::MAX_ITEMS
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ RSpec.describe Vacuum::ImportsVacuum do
|
||||||
|
|
||||||
describe '#perform' do
|
describe '#perform' do
|
||||||
it 'cleans up the expected imports' do
|
it 'cleans up the expected imports' do
|
||||||
expect { subject.perform }.to change { BulkImport.all.pluck(:id) }.from([old_unconfirmed, new_unconfirmed, recent_ongoing, recent_finished, old_finished].map(&:id)).to([new_unconfirmed, recent_ongoing, recent_finished].map(&:id))
|
expect { subject.perform }.to change { BulkImport.pluck(:id) }.from([old_unconfirmed, new_unconfirmed, recent_ongoing, recent_finished, old_finished].map(&:id)).to([new_unconfirmed, recent_ongoing, recent_finished].map(&:id))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe MediaAttachment, paperclip_processing: true do
|
RSpec.describe MediaAttachment, :paperclip_processing do
|
||||||
describe 'local?' do
|
describe 'local?' do
|
||||||
subject { media_attachment.local? }
|
subject { media_attachment.local? }
|
||||||
|
|
||||||
|
|
|
@ -127,19 +127,19 @@ RSpec.describe 'Media' do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'with image/jpeg', paperclip_processing: true do
|
context 'with image/jpeg', :paperclip_processing do
|
||||||
let(:params) { { file: fixture_file_upload('attachment.jpg', 'image/jpeg'), description: 'jpeg image' } }
|
let(:params) { { file: fixture_file_upload('attachment.jpg', 'image/jpeg'), description: 'jpeg image' } }
|
||||||
|
|
||||||
it_behaves_like 'a successful media upload', 'image'
|
it_behaves_like 'a successful media upload', 'image'
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'with image/gif', paperclip_processing: true do
|
context 'with image/gif', :paperclip_processing do
|
||||||
let(:params) { { file: fixture_file_upload('attachment.gif', 'image/gif') } }
|
let(:params) { { file: fixture_file_upload('attachment.gif', 'image/gif') } }
|
||||||
|
|
||||||
it_behaves_like 'a successful media upload', 'image'
|
it_behaves_like 'a successful media upload', 'image'
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'with video/webm', paperclip_processing: true do
|
context 'with video/webm', :paperclip_processing do
|
||||||
let(:params) { { file: fixture_file_upload('attachment.webm', 'video/webm') } }
|
let(:params) { { file: fixture_file_upload('attachment.webm', 'video/webm') } }
|
||||||
|
|
||||||
it_behaves_like 'a successful media upload', 'gifv'
|
it_behaves_like 'a successful media upload', 'gifv'
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe 'Media API', paperclip_processing: true do
|
RSpec.describe 'Media API', :paperclip_processing do
|
||||||
let(:user) { Fabricate(:user) }
|
let(:user) { Fabricate(:user) }
|
||||||
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
|
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
|
||||||
let(:scopes) { 'write' }
|
let(:scopes) { 'write' }
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
shared_examples 'AccountAvatar' do |fabricator|
|
shared_examples 'AccountAvatar' do |fabricator|
|
||||||
describe 'static avatars', paperclip_processing: true do
|
describe 'static avatars', :paperclip_processing do
|
||||||
describe 'when GIF' do
|
describe 'when GIF' do
|
||||||
it 'creates a png static style' do
|
it 'creates a png static style' do
|
||||||
account = Fabricate(fabricator, avatar: attachment_fixture('avatar.gif'))
|
account = Fabricate(fabricator, avatar: attachment_fixture('avatar.gif'))
|
||||||
|
@ -17,7 +17,7 @@ shared_examples 'AccountAvatar' do |fabricator|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'base64-encoded files', paperclip_processing: true do
|
describe 'base64-encoded files', :paperclip_processing do
|
||||||
let(:base64_attachment) { "data:image/jpeg;base64,#{Base64.encode64(attachment_fixture('attachment.jpg').read)}" }
|
let(:base64_attachment) { "data:image/jpeg;base64,#{Base64.encode64(attachment_fixture('attachment.jpg').read)}" }
|
||||||
let(:account) { Fabricate(fabricator, avatar: base64_attachment) }
|
let(:account) { Fabricate(fabricator, avatar: base64_attachment) }
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
shared_examples 'AccountHeader' do |fabricator|
|
shared_examples 'AccountHeader' do |fabricator|
|
||||||
describe 'base64-encoded files', paperclip_processing: true do
|
describe 'base64-encoded files', :paperclip_processing do
|
||||||
let(:base64_attachment) { "data:image/jpeg;base64,#{Base64.encode64(attachment_fixture('attachment.jpg').read)}" }
|
let(:base64_attachment) { "data:image/jpeg;base64,#{Base64.encode64(attachment_fixture('attachment.jpg').read)}" }
|
||||||
let(:account) { Fabricate(fabricator, header: base64_attachment) }
|
let(:account) { Fabricate(fabricator, header: base64_attachment) }
|
||||||
|
|
||||||
|
|
17
spec/system/unlogged_spec.rb
Normal file
17
spec/system/unlogged_spec.rb
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
describe 'UnloggedBrowsing' do
|
||||||
|
subject { page }
|
||||||
|
|
||||||
|
before do
|
||||||
|
visit root_path
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'loads the home page' do
|
||||||
|
expect(subject).to have_css('div.app-holder')
|
||||||
|
|
||||||
|
expect(subject).to have_css('div.columns-area__panels__main')
|
||||||
|
end
|
||||||
|
end
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
describe 'statuses/show.html.haml', without_verify_partial_doubles: true do
|
describe 'statuses/show.html.haml', :without_verify_partial_doubles do
|
||||||
before do
|
before do
|
||||||
allow(view).to receive_messages(api_oembed_url: '', show_landing_strip?: true, site_title: 'example site', site_hostname: 'example.com', full_asset_url: '//asset.host/image.svg', current_account: nil, single_user_mode?: false)
|
allow(view).to receive_messages(api_oembed_url: '', show_landing_strip?: true, site_title: 'example site', site_hostname: 'example.com', full_asset_url: '//asset.host/image.svg', current_account: nil, single_user_mode?: false)
|
||||||
allow(view).to receive(:local_time)
|
allow(view).to receive(:local_time)
|
||||||
|
|
157
yarn.lock
157
yarn.lock
|
@ -1310,14 +1310,14 @@
|
||||||
eslint-visitor-keys "^3.3.0"
|
eslint-visitor-keys "^3.3.0"
|
||||||
|
|
||||||
"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1":
|
"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1":
|
||||||
version "4.9.1"
|
version "4.10.0"
|
||||||
resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.9.1.tgz#449dfa81a57a1d755b09aa58d826c1262e4283b4"
|
resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63"
|
||||||
integrity sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==
|
integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==
|
||||||
|
|
||||||
"@eslint/eslintrc@^2.1.2":
|
"@eslint/eslintrc@^2.1.3":
|
||||||
version "2.1.2"
|
version "2.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.2.tgz#c6936b4b328c64496692f76944e755738be62396"
|
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.3.tgz#797470a75fe0fbd5a53350ee715e85e87baff22d"
|
||||||
integrity sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==
|
integrity sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==
|
||||||
dependencies:
|
dependencies:
|
||||||
ajv "^6.12.4"
|
ajv "^6.12.4"
|
||||||
debug "^4.3.2"
|
debug "^4.3.2"
|
||||||
|
@ -1329,10 +1329,10 @@
|
||||||
minimatch "^3.1.2"
|
minimatch "^3.1.2"
|
||||||
strip-json-comments "^3.1.1"
|
strip-json-comments "^3.1.1"
|
||||||
|
|
||||||
"@eslint/js@8.52.0":
|
"@eslint/js@8.53.0":
|
||||||
version "8.52.0"
|
version "8.53.0"
|
||||||
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.52.0.tgz#78fe5f117840f69dc4a353adf9b9cd926353378c"
|
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.53.0.tgz#bea56f2ed2b5baea164348ff4d5a879f6f81f20d"
|
||||||
integrity sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==
|
integrity sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==
|
||||||
|
|
||||||
"@floating-ui/core@^1.4.2":
|
"@floating-ui/core@^1.4.2":
|
||||||
version "1.5.0"
|
version "1.5.0"
|
||||||
|
@ -2283,9 +2283,9 @@
|
||||||
"@types/istanbul-lib-report" "*"
|
"@types/istanbul-lib-report" "*"
|
||||||
|
|
||||||
"@types/jest@^29.5.2":
|
"@types/jest@^29.5.2":
|
||||||
version "29.5.6"
|
version "29.5.7"
|
||||||
resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.6.tgz#f4cf7ef1b5b0bfc1aa744e41b24d9cc52533130b"
|
resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.7.tgz#2c0dafe2715dd958a455bc10e2ec3e1ec47b5036"
|
||||||
integrity sha512-/t9NnzkOpXb4Nfvg17ieHE6EeSjDS2SGSpNYfoLbUAeL/EOueU/RSdOWFpfQTXBEM7BguYW1XQ0EbM+6RlIh6w==
|
integrity sha512-HLyetab6KVPSiF+7pFcUyMeLsx25LDNDemw9mGsJBkai/oouwrjTycocSDYopMEwFhN2Y4s9oPyOCZNofgSt2g==
|
||||||
dependencies:
|
dependencies:
|
||||||
expect "^29.0.0"
|
expect "^29.0.0"
|
||||||
pretty-format "^29.0.0"
|
pretty-format "^29.0.0"
|
||||||
|
@ -2350,11 +2350,11 @@
|
||||||
integrity sha512-Kfe/D3hxHTusnPNRbycJE1N77WHDsdS4AjUYIzlDzhDrS47NrwuL3YW4VITxwR7KCVpzwgy4Rbj829KSSQmwXQ==
|
integrity sha512-Kfe/D3hxHTusnPNRbycJE1N77WHDsdS4AjUYIzlDzhDrS47NrwuL3YW4VITxwR7KCVpzwgy4Rbj829KSSQmwXQ==
|
||||||
|
|
||||||
"@types/node@*":
|
"@types/node@*":
|
||||||
version "20.8.7"
|
version "20.8.10"
|
||||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.7.tgz#ad23827850843de973096edfc5abc9e922492a25"
|
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.10.tgz#a5448b895c753ae929c26ce85cab557c6d4a365e"
|
||||||
integrity sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ==
|
integrity sha512-TlgT8JntpcbmKUFzjhsyhGfP2fsiz1Mv56im6enJ905xG1DAYesxJaeSbGqQmAw8OWPdhyJGhGSQGKRNJ45u9w==
|
||||||
dependencies:
|
dependencies:
|
||||||
undici-types "~5.25.1"
|
undici-types "~5.26.4"
|
||||||
|
|
||||||
"@types/node@14 || 16 || 17":
|
"@types/node@14 || 16 || 17":
|
||||||
version "17.0.45"
|
version "17.0.45"
|
||||||
|
@ -2525,9 +2525,9 @@
|
||||||
"@types/react" "*"
|
"@types/react" "*"
|
||||||
|
|
||||||
"@types/react@*", "@types/react@16 || 17 || 18", "@types/react@>=16.9.11", "@types/react@^18.0.26", "@types/react@^18.2.7":
|
"@types/react@*", "@types/react@16 || 17 || 18", "@types/react@>=16.9.11", "@types/react@^18.0.26", "@types/react@^18.2.7":
|
||||||
version "18.2.33"
|
version "18.2.35"
|
||||||
resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.33.tgz#055356243dc4350a9ee6c6a2c07c5cae12e38877"
|
resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.35.tgz#bacdc6d139a4d6d47e5186e1a96952c65e1f3792"
|
||||||
integrity sha512-v+I7S+hu3PIBoVkKGpSYYpiBT1ijqEzWpzQD62/jm4K74hPpSP7FF9BnKG6+fg2+62weJYkkBWDJlZt5JO/9hg==
|
integrity sha512-LG3xpFZ++rTndV+/XFyX5vUP7NI9yxyk+MQvBDq+CVs8I9DLSc3Ymwb1Vmw5YDoeNeHN4PDZa3HylMKJYT9PNQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/prop-types" "*"
|
"@types/prop-types" "*"
|
||||||
"@types/scheduler" "*"
|
"@types/scheduler" "*"
|
||||||
|
@ -2661,15 +2661,15 @@
|
||||||
"@types/yargs-parser" "*"
|
"@types/yargs-parser" "*"
|
||||||
|
|
||||||
"@typescript-eslint/eslint-plugin@^6.0.0":
|
"@typescript-eslint/eslint-plugin@^6.0.0":
|
||||||
version "6.8.0"
|
version "6.9.1"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.8.0.tgz#06abe4265e7c82f20ade2dcc0e3403c32d4f148b"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.9.1.tgz#d8ce497dc0ed42066e195c8ecc40d45c7b1254f4"
|
||||||
integrity sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw==
|
integrity sha512-w0tiiRc9I4S5XSXXrMHOWgHgxbrBn1Ro+PmiYhSg2ZVdxrAJtQgzU5o2m1BfP6UOn7Vxcc6152vFjQfmZR4xEg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@eslint-community/regexpp" "^4.5.1"
|
"@eslint-community/regexpp" "^4.5.1"
|
||||||
"@typescript-eslint/scope-manager" "6.8.0"
|
"@typescript-eslint/scope-manager" "6.9.1"
|
||||||
"@typescript-eslint/type-utils" "6.8.0"
|
"@typescript-eslint/type-utils" "6.9.1"
|
||||||
"@typescript-eslint/utils" "6.8.0"
|
"@typescript-eslint/utils" "6.9.1"
|
||||||
"@typescript-eslint/visitor-keys" "6.8.0"
|
"@typescript-eslint/visitor-keys" "6.9.1"
|
||||||
debug "^4.3.4"
|
debug "^4.3.4"
|
||||||
graphemer "^1.4.0"
|
graphemer "^1.4.0"
|
||||||
ignore "^5.2.4"
|
ignore "^5.2.4"
|
||||||
|
@ -2678,14 +2678,14 @@
|
||||||
ts-api-utils "^1.0.1"
|
ts-api-utils "^1.0.1"
|
||||||
|
|
||||||
"@typescript-eslint/parser@^6.0.0":
|
"@typescript-eslint/parser@^6.0.0":
|
||||||
version "6.8.0"
|
version "6.9.1"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.8.0.tgz#bb2a969d583db242f1ee64467542f8b05c2e28cb"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.9.1.tgz#4f685f672f8b9580beb38d5fb99d52fc3e34f7a3"
|
||||||
integrity sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg==
|
integrity sha512-C7AK2wn43GSaCUZ9do6Ksgi2g3mwFkMO3Cis96kzmgudoVaKyt62yNzJOktP0HDLb/iO2O0n2lBOzJgr6Q/cyg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@typescript-eslint/scope-manager" "6.8.0"
|
"@typescript-eslint/scope-manager" "6.9.1"
|
||||||
"@typescript-eslint/types" "6.8.0"
|
"@typescript-eslint/types" "6.9.1"
|
||||||
"@typescript-eslint/typescript-estree" "6.8.0"
|
"@typescript-eslint/typescript-estree" "6.9.1"
|
||||||
"@typescript-eslint/visitor-keys" "6.8.0"
|
"@typescript-eslint/visitor-keys" "6.9.1"
|
||||||
debug "^4.3.4"
|
debug "^4.3.4"
|
||||||
|
|
||||||
"@typescript-eslint/scope-manager@6.8.0":
|
"@typescript-eslint/scope-manager@6.8.0":
|
||||||
|
@ -2696,13 +2696,21 @@
|
||||||
"@typescript-eslint/types" "6.8.0"
|
"@typescript-eslint/types" "6.8.0"
|
||||||
"@typescript-eslint/visitor-keys" "6.8.0"
|
"@typescript-eslint/visitor-keys" "6.8.0"
|
||||||
|
|
||||||
"@typescript-eslint/type-utils@6.8.0":
|
"@typescript-eslint/scope-manager@6.9.1":
|
||||||
version "6.8.0"
|
version "6.9.1"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.8.0.tgz#50365e44918ca0fd159844b5d6ea96789731e11f"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.9.1.tgz#e96afeb9a68ad1cd816dba233351f61e13956b75"
|
||||||
integrity sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g==
|
integrity sha512-38IxvKB6NAne3g/+MyXMs2Cda/Sz+CEpmm+KLGEM8hx/CvnSRuw51i8ukfwB/B/sESdeTGet1NH1Wj7I0YXswg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@typescript-eslint/typescript-estree" "6.8.0"
|
"@typescript-eslint/types" "6.9.1"
|
||||||
"@typescript-eslint/utils" "6.8.0"
|
"@typescript-eslint/visitor-keys" "6.9.1"
|
||||||
|
|
||||||
|
"@typescript-eslint/type-utils@6.9.1":
|
||||||
|
version "6.9.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.9.1.tgz#efd5db20ed35a74d3c7d8fba51b830ecba09ce32"
|
||||||
|
integrity sha512-eh2oHaUKCK58qIeYp19F5V5TbpM52680sB4zNSz29VBQPTWIlE/hCj5P5B1AChxECe/fmZlspAWFuRniep1Skg==
|
||||||
|
dependencies:
|
||||||
|
"@typescript-eslint/typescript-estree" "6.9.1"
|
||||||
|
"@typescript-eslint/utils" "6.9.1"
|
||||||
debug "^4.3.4"
|
debug "^4.3.4"
|
||||||
ts-api-utils "^1.0.1"
|
ts-api-utils "^1.0.1"
|
||||||
|
|
||||||
|
@ -2711,6 +2719,11 @@
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.8.0.tgz#1ab5d4fe1d613e3f65f6684026ade6b94f7e3ded"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.8.0.tgz#1ab5d4fe1d613e3f65f6684026ade6b94f7e3ded"
|
||||||
integrity sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ==
|
integrity sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ==
|
||||||
|
|
||||||
|
"@typescript-eslint/types@6.9.1":
|
||||||
|
version "6.9.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.9.1.tgz#a6cfc20db0fcedcb2f397ea728ef583e0ee72459"
|
||||||
|
integrity sha512-BUGslGOb14zUHOUmDB2FfT6SI1CcZEJYfF3qFwBeUrU6srJfzANonwRYHDpLBuzbq3HaoF2XL2hcr01c8f8OaQ==
|
||||||
|
|
||||||
"@typescript-eslint/typescript-estree@6.8.0":
|
"@typescript-eslint/typescript-estree@6.8.0":
|
||||||
version "6.8.0"
|
version "6.8.0"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.8.0.tgz#9565f15e0cd12f55cf5aa0dfb130a6cb0d436ba1"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.8.0.tgz#9565f15e0cd12f55cf5aa0dfb130a6cb0d436ba1"
|
||||||
|
@ -2724,7 +2737,33 @@
|
||||||
semver "^7.5.4"
|
semver "^7.5.4"
|
||||||
ts-api-utils "^1.0.1"
|
ts-api-utils "^1.0.1"
|
||||||
|
|
||||||
"@typescript-eslint/utils@6.8.0", "@typescript-eslint/utils@^6.5.0":
|
"@typescript-eslint/typescript-estree@6.9.1":
|
||||||
|
version "6.9.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.1.tgz#8c77910a49a04f0607ba94d78772da07dab275ad"
|
||||||
|
integrity sha512-U+mUylTHfcqeO7mLWVQ5W/tMLXqVpRv61wm9ZtfE5egz7gtnmqVIw9ryh0mgIlkKk9rZLY3UHygsBSdB9/ftyw==
|
||||||
|
dependencies:
|
||||||
|
"@typescript-eslint/types" "6.9.1"
|
||||||
|
"@typescript-eslint/visitor-keys" "6.9.1"
|
||||||
|
debug "^4.3.4"
|
||||||
|
globby "^11.1.0"
|
||||||
|
is-glob "^4.0.3"
|
||||||
|
semver "^7.5.4"
|
||||||
|
ts-api-utils "^1.0.1"
|
||||||
|
|
||||||
|
"@typescript-eslint/utils@6.9.1":
|
||||||
|
version "6.9.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.9.1.tgz#763da41281ef0d16974517b5f0d02d85897a1c1e"
|
||||||
|
integrity sha512-L1T0A5nFdQrMVunpZgzqPL6y2wVreSyHhKGZryS6jrEN7bD9NplVAyMryUhXsQ4TWLnZmxc2ekar/lSGIlprCA==
|
||||||
|
dependencies:
|
||||||
|
"@eslint-community/eslint-utils" "^4.4.0"
|
||||||
|
"@types/json-schema" "^7.0.12"
|
||||||
|
"@types/semver" "^7.5.0"
|
||||||
|
"@typescript-eslint/scope-manager" "6.9.1"
|
||||||
|
"@typescript-eslint/types" "6.9.1"
|
||||||
|
"@typescript-eslint/typescript-estree" "6.9.1"
|
||||||
|
semver "^7.5.4"
|
||||||
|
|
||||||
|
"@typescript-eslint/utils@^6.5.0":
|
||||||
version "6.8.0"
|
version "6.8.0"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.8.0.tgz#d42939c2074c6b59844d0982ce26a51d136c4029"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.8.0.tgz#d42939c2074c6b59844d0982ce26a51d136c4029"
|
||||||
integrity sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q==
|
integrity sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q==
|
||||||
|
@ -2745,6 +2784,14 @@
|
||||||
"@typescript-eslint/types" "6.8.0"
|
"@typescript-eslint/types" "6.8.0"
|
||||||
eslint-visitor-keys "^3.4.1"
|
eslint-visitor-keys "^3.4.1"
|
||||||
|
|
||||||
|
"@typescript-eslint/visitor-keys@6.9.1":
|
||||||
|
version "6.9.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.1.tgz#6753a9225a0ba00459b15d6456b9c2780b66707d"
|
||||||
|
integrity sha512-MUaPUe/QRLEffARsmNfmpghuQkW436DvESW+h+M52w0coICHRfD6Np9/K6PdACwnrq1HmuLl+cSPZaJmeVPkSw==
|
||||||
|
dependencies:
|
||||||
|
"@typescript-eslint/types" "6.9.1"
|
||||||
|
eslint-visitor-keys "^3.4.1"
|
||||||
|
|
||||||
"@ungap/structured-clone@^1.2.0":
|
"@ungap/structured-clone@^1.2.0":
|
||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406"
|
resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406"
|
||||||
|
@ -2948,11 +2995,16 @@ acorn@^6.4.1:
|
||||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6"
|
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6"
|
||||||
integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==
|
integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==
|
||||||
|
|
||||||
acorn@^8.0.4, acorn@^8.1.0, acorn@^8.8.1, acorn@^8.8.2, acorn@^8.9.0:
|
acorn@^8.0.4, acorn@^8.1.0, acorn@^8.8.1, acorn@^8.8.2:
|
||||||
version "8.10.0"
|
version "8.10.0"
|
||||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5"
|
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5"
|
||||||
integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==
|
integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==
|
||||||
|
|
||||||
|
acorn@^8.9.0:
|
||||||
|
version "8.11.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b"
|
||||||
|
integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==
|
||||||
|
|
||||||
agent-base@6:
|
agent-base@6:
|
||||||
version "6.0.2"
|
version "6.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
|
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
|
||||||
|
@ -5658,14 +5710,14 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4
|
||||||
integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
|
integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
|
||||||
|
|
||||||
eslint@^8.41.0:
|
eslint@^8.41.0:
|
||||||
version "8.52.0"
|
version "8.53.0"
|
||||||
resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.52.0.tgz#d0cd4a1fac06427a61ef9242b9353f36ea7062fc"
|
resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.53.0.tgz#14f2c8244298fcae1f46945459577413ba2697ce"
|
||||||
integrity sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==
|
integrity sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@eslint-community/eslint-utils" "^4.2.0"
|
"@eslint-community/eslint-utils" "^4.2.0"
|
||||||
"@eslint-community/regexpp" "^4.6.1"
|
"@eslint-community/regexpp" "^4.6.1"
|
||||||
"@eslint/eslintrc" "^2.1.2"
|
"@eslint/eslintrc" "^2.1.3"
|
||||||
"@eslint/js" "8.52.0"
|
"@eslint/js" "8.53.0"
|
||||||
"@humanwhocodes/config-array" "^0.11.13"
|
"@humanwhocodes/config-array" "^0.11.13"
|
||||||
"@humanwhocodes/module-importer" "^1.0.1"
|
"@humanwhocodes/module-importer" "^1.0.1"
|
||||||
"@nodelib/fs.walk" "^1.2.8"
|
"@nodelib/fs.walk" "^1.2.8"
|
||||||
|
@ -11703,7 +11755,6 @@ stringz@^2.1.0:
|
||||||
char-regex "^1.0.2"
|
char-regex "^1.0.2"
|
||||||
|
|
||||||
"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
|
"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
|
||||||
name strip-ansi-cjs
|
|
||||||
version "6.0.1"
|
version "6.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
|
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
|
||||||
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
|
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
|
||||||
|
@ -12395,10 +12446,10 @@ uncontrollable@^7.2.1:
|
||||||
invariant "^2.2.4"
|
invariant "^2.2.4"
|
||||||
react-lifecycles-compat "^3.0.4"
|
react-lifecycles-compat "^3.0.4"
|
||||||
|
|
||||||
undici-types@~5.25.1:
|
undici-types@~5.26.4:
|
||||||
version "5.25.3"
|
version "5.26.5"
|
||||||
resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.25.3.tgz#e044115914c85f0bcbb229f346ab739f064998c3"
|
resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"
|
||||||
integrity sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==
|
integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
|
||||||
|
|
||||||
unicode-canonical-property-names-ecmascript@^2.0.0:
|
unicode-canonical-property-names-ecmascript@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue