Merge branch 'main' into glitch-soc/merge-upstream
This commit is contained in:
		
						commit
						2b4c7beb73
					
				
					 28 changed files with 337 additions and 333 deletions
				
			
		|  | @ -23,7 +23,7 @@ executors: | ||||||
|         environment: |         environment: | ||||||
|           POSTGRES_USER: root |           POSTGRES_USER: root | ||||||
|           POSTGRES_HOST_AUTH_METHOD: trust |           POSTGRES_HOST_AUTH_METHOD: trust | ||||||
|       - image: circleci/redis:5-alpine |       - image: circleci/redis:6-alpine | ||||||
| 
 | 
 | ||||||
| commands: | commands: | ||||||
|   install-system-dependencies: |   install-system-dependencies: | ||||||
|  | @ -45,7 +45,7 @@ commands: | ||||||
|             bundle config without 'development production' |             bundle config without 'development production' | ||||||
|           name: Set bundler settings |           name: Set bundler settings | ||||||
|       - ruby/install-deps: |       - ruby/install-deps: | ||||||
|           bundler-version: '2.2.29' |           bundler-version: '2.2.31' | ||||||
|           key: ruby<< parameters.ruby-version >>-gems-v1 |           key: ruby<< parameters.ruby-version >>-gems-v1 | ||||||
|   wait-db: |   wait-db: | ||||||
|     steps: |     steps: | ||||||
|  | @ -56,14 +56,14 @@ commands: | ||||||
| jobs: | jobs: | ||||||
|   build: |   build: | ||||||
|     docker: |     docker: | ||||||
|       - image: cimg/ruby:2.7-node |       - image: cimg/ruby:3.0-node | ||||||
|         environment: |         environment: | ||||||
|           RAILS_ENV: test |           RAILS_ENV: test | ||||||
|     steps: |     steps: | ||||||
|       - checkout |       - checkout | ||||||
|       - install-system-dependencies |       - install-system-dependencies | ||||||
|       - install-ruby-dependencies: |       - install-ruby-dependencies: | ||||||
|           ruby-version: '2.7' |           ruby-version: '3.0' | ||||||
|       - node/install-packages: |       - node/install-packages: | ||||||
|           cache-version: v1 |           cache-version: v1 | ||||||
|           pkg-manager: yarn |           pkg-manager: yarn | ||||||
|  | @ -111,12 +111,12 @@ jobs: | ||||||
|   test-migrations: |   test-migrations: | ||||||
|     executor: |     executor: | ||||||
|       name: default |       name: default | ||||||
|       ruby-version: '2.7' |       ruby-version: '3.0' | ||||||
|     steps: |     steps: | ||||||
|       - checkout |       - checkout | ||||||
|       - install-system-dependencies |       - install-system-dependencies | ||||||
|       - install-ruby-dependencies: |       - install-ruby-dependencies: | ||||||
|           ruby-version: '2.7' |           ruby-version: '3.0' | ||||||
|       - wait-db |       - wait-db | ||||||
|       - run: |       - run: | ||||||
|           command: ./bin/rails db:create |           command: ./bin/rails db:create | ||||||
|  |  | ||||||
							
								
								
									
										12
									
								
								.github/workflows/build-image.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								.github/workflows/build-image.yml
									
									
									
									
										vendored
									
									
								
							|  | @ -1,5 +1,6 @@ | ||||||
| name: Build container image | name: Build container image | ||||||
| on: | on: | ||||||
|  |   workflow_dispatch: | ||||||
|   push: |   push: | ||||||
|     branches: |     branches: | ||||||
|       - "main" |       - "main" | ||||||
|  | @ -13,15 +14,14 @@ jobs: | ||||||
|       - uses: docker/setup-buildx-action@v1 |       - uses: docker/setup-buildx-action@v1 | ||||||
|       - uses: docker/login-action@v1 |       - uses: docker/login-action@v1 | ||||||
|         with: |         with: | ||||||
|           registry: ghcr.io |           username: ${{ secrets.DOCKERHUB_USERNAME }} | ||||||
|           username: ${{ github.repository_owner }} |           password: ${{ secrets.DOCKERHUB_TOKEN }} | ||||||
|           password: ${{ secrets.GITHUB_TOKEN }} |  | ||||||
|       - uses: docker/metadata-action@v3 |       - uses: docker/metadata-action@v3 | ||||||
|         id: meta |         id: meta | ||||||
|         with: |         with: | ||||||
|           images: ghcr.io/${{ github.repository_owner }}/mastodon |           images: tootsuite/mastodon | ||||||
|           flavor: | |           flavor: | | ||||||
|             latest=true |             latest=auto | ||||||
|           tags: | |           tags: | | ||||||
|             type=edge,branch=main |             type=edge,branch=main | ||||||
|             type=semver,pattern={{ raw }} |             type=semver,pattern={{ raw }} | ||||||
|  | @ -30,5 +30,5 @@ jobs: | ||||||
|           context: . |           context: . | ||||||
|           push: true |           push: true | ||||||
|           tags: ${{ steps.meta.outputs.tags }} |           tags: ${{ steps.meta.outputs.tags }} | ||||||
|           cache-from: type=registry,ref=ghcr.io/${{ github.repository_owner }}/mastodon:latest |           cache-from: type=registry,ref=tootsuite/mastodon:latest | ||||||
|           cache-to: type=inline |           cache-to: type=inline | ||||||
|  |  | ||||||
							
								
								
									
										2
									
								
								.github/workflows/check-i18n.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/check-i18n.yml
									
									
									
									
										vendored
									
									
								
							|  | @ -22,7 +22,7 @@ jobs: | ||||||
|     - name: Set up Ruby |     - name: Set up Ruby | ||||||
|       uses: ruby/setup-ruby@v1 |       uses: ruby/setup-ruby@v1 | ||||||
|       with: |       with: | ||||||
|         ruby-version: '2.7' |         ruby-version: '3.0' | ||||||
|         bundler-cache: true |         bundler-cache: true | ||||||
|     - name: Check locale file normalization |     - name: Check locale file normalization | ||||||
|       run: bundle exec i18n-tasks check-normalized |       run: bundle exec i18n-tasks check-normalized | ||||||
|  |  | ||||||
|  | @ -1 +1 @@ | ||||||
| 2.7.4 | 3.0.2 | ||||||
|  |  | ||||||
							
								
								
									
										17
									
								
								Dockerfile
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								Dockerfile
									
									
									
									
									
								
							|  | @ -2,9 +2,10 @@ FROM ubuntu:20.04 as build-dep | ||||||
| 
 | 
 | ||||||
| # Use bash for the shell | # Use bash for the shell | ||||||
| SHELL ["/bin/bash", "-c"] | SHELL ["/bin/bash", "-c"] | ||||||
|  | RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections | ||||||
| 
 | 
 | ||||||
| # Install Node v14 (LTS) | # Install Node v16 (LTS) | ||||||
| ENV NODE_VER="14.17.6" | ENV NODE_VER="16.13.0" | ||||||
| RUN ARCH= && \ | RUN ARCH= && \ | ||||||
|     dpkgArch="$(dpkg --print-architecture)" && \ |     dpkgArch="$(dpkg --print-architecture)" && \ | ||||||
|   case "${dpkgArch##*-}" in \ |   case "${dpkgArch##*-}" in \ | ||||||
|  | @ -18,15 +19,15 @@ RUN ARCH= && \ | ||||||
|   esac && \ |   esac && \ | ||||||
|     echo "Etc/UTC" > /etc/localtime && \ |     echo "Etc/UTC" > /etc/localtime && \ | ||||||
| 	apt-get update && \ | 	apt-get update && \ | ||||||
| 	apt-get install -y --no-install-recommends ca-certificates wget python && \ | 	apt-get install -y --no-install-recommends ca-certificates wget python apt-utils && \ | ||||||
| 	cd ~ && \ | 	cd ~ && \ | ||||||
| 	wget -q https://nodejs.org/download/release/v$NODE_VER/node-v$NODE_VER-linux-$ARCH.tar.gz && \ | 	wget -q https://nodejs.org/download/release/v$NODE_VER/node-v$NODE_VER-linux-$ARCH.tar.gz && \ | ||||||
| 	tar xf node-v$NODE_VER-linux-$ARCH.tar.gz && \ | 	tar xf node-v$NODE_VER-linux-$ARCH.tar.gz && \ | ||||||
| 	rm node-v$NODE_VER-linux-$ARCH.tar.gz && \ | 	rm node-v$NODE_VER-linux-$ARCH.tar.gz && \ | ||||||
| 	mv node-v$NODE_VER-linux-$ARCH /opt/node | 	mv node-v$NODE_VER-linux-$ARCH /opt/node | ||||||
| 
 | 
 | ||||||
| # Install Ruby | # Install Ruby 3.0 | ||||||
| ENV RUBY_VER="2.7.4" | ENV RUBY_VER="3.0.2" | ||||||
| RUN apt-get update && \ | RUN apt-get update && \ | ||||||
|   apt-get install -y --no-install-recommends build-essential \ |   apt-get install -y --no-install-recommends build-essential \ | ||||||
|     bison libyaml-dev libgdbm-dev libreadline-dev libjemalloc-dev \ |     bison libyaml-dev libgdbm-dev libreadline-dev libjemalloc-dev \ | ||||||
|  | @ -45,7 +46,8 @@ RUN apt-get update && \ | ||||||
| 
 | 
 | ||||||
| ENV PATH="${PATH}:/opt/ruby/bin:/opt/node/bin" | ENV PATH="${PATH}:/opt/ruby/bin:/opt/node/bin" | ||||||
| 
 | 
 | ||||||
| RUN npm install -g yarn && \ | RUN npm install -g npm@latest && \ | ||||||
|  | 	npm install -g yarn && \ | ||||||
| 	gem install bundler && \ | 	gem install bundler && \ | ||||||
| 	apt-get update && \ | 	apt-get update && \ | ||||||
| 	apt-get install -y --no-install-recommends git libicu-dev libidn11-dev \ | 	apt-get install -y --no-install-recommends git libicu-dev libidn11-dev \ | ||||||
|  | @ -82,11 +84,12 @@ RUN apt-get update && \ | ||||||
| 	rm -rf /var/lib/apt/lists/* | 	rm -rf /var/lib/apt/lists/* | ||||||
| 
 | 
 | ||||||
| # Install mastodon runtime deps | # Install mastodon runtime deps | ||||||
|  | RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections | ||||||
| RUN apt-get update && \ | RUN apt-get update && \ | ||||||
|   apt-get -y --no-install-recommends install \ |   apt-get -y --no-install-recommends install \ | ||||||
| 	  libssl1.1 libpq5 imagemagick ffmpeg libjemalloc2 \ | 	  libssl1.1 libpq5 imagemagick ffmpeg libjemalloc2 \ | ||||||
| 	  libicu66 libprotobuf17 libidn11 libyaml-0-2 \ | 	  libicu66 libprotobuf17 libidn11 libyaml-0-2 \ | ||||||
| 	  file ca-certificates tzdata libreadline8 gcc tini && \ | 	  file ca-certificates tzdata libreadline8 gcc tini apt-utils && \ | ||||||
| 	ln -s /opt/mastodon /mastodon && \ | 	ln -s /opt/mastodon /mastodon && \ | ||||||
| 	gem install bundler && \ | 	gem install bundler && \ | ||||||
| 	rm -rf /var/cache && \ | 	rm -rf /var/cache && \ | ||||||
|  |  | ||||||
							
								
								
									
										15
									
								
								Gemfile
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								Gemfile
									
									
									
									
									
								
							|  | @ -4,6 +4,7 @@ source 'https://rubygems.org' | ||||||
| ruby '>= 2.5.0', '< 3.1.0' | ruby '>= 2.5.0', '< 3.1.0' | ||||||
| 
 | 
 | ||||||
| gem 'pkg-config', '~> 1.4' | gem 'pkg-config', '~> 1.4' | ||||||
|  | gem 'rexml', '~> 3.2' | ||||||
| 
 | 
 | ||||||
| gem 'puma', '~> 5.5' | gem 'puma', '~> 5.5' | ||||||
| gem 'rails', '~> 6.1.4' | gem 'rails', '~> 6.1.4' | ||||||
|  | @ -17,7 +18,7 @@ gem 'makara', '~> 0.5' | ||||||
| gem 'pghero', '~> 2.8' | gem 'pghero', '~> 2.8' | ||||||
| gem 'dotenv-rails', '~> 2.7' | gem 'dotenv-rails', '~> 2.7' | ||||||
| 
 | 
 | ||||||
| gem 'aws-sdk-s3', '~> 1.104', require: false | gem 'aws-sdk-s3', '~> 1.106', require: false | ||||||
| gem 'fog-core', '<= 2.1.0' | gem 'fog-core', '<= 2.1.0' | ||||||
| gem 'fog-openstack', '~> 0.3', require: false | gem 'fog-openstack', '~> 0.3', require: false | ||||||
| gem 'kt-paperclip', '~> 7.0' | gem 'kt-paperclip', '~> 7.0' | ||||||
|  | @ -29,7 +30,7 @@ gem 'bootsnap', '~> 1.9.1', require: false | ||||||
| gem 'browser' | gem 'browser' | ||||||
| gem 'charlock_holmes', '~> 0.7.7' | gem 'charlock_holmes', '~> 0.7.7' | ||||||
| gem 'iso-639' | gem 'iso-639' | ||||||
| gem 'chewy', '~> 5.2' | gem 'chewy', '~> 7.2' | ||||||
| gem 'cld3', '~> 3.4.2' | gem 'cld3', '~> 3.4.2' | ||||||
| gem 'devise', '~> 4.8' | gem 'devise', '~> 4.8' | ||||||
| gem 'devise-two-factor', '~> 4.0' | gem 'devise-two-factor', '~> 4.0' | ||||||
|  | @ -59,7 +60,7 @@ gem 'httplog', '~> 1.5.0' | ||||||
| gem 'idn-ruby', require: 'idn' | gem 'idn-ruby', require: 'idn' | ||||||
| gem 'kaminari', '~> 1.2' | gem 'kaminari', '~> 1.2' | ||||||
| gem 'link_header', '~> 0.0' | gem 'link_header', '~> 0.0' | ||||||
| gem 'mime-types', '~> 3.3.1', require: 'mime/types/columnar' | gem 'mime-types', '~> 3.4.1', require: 'mime/types/columnar' | ||||||
| gem 'nokogiri', '~> 1.12' | gem 'nokogiri', '~> 1.12' | ||||||
| gem 'nsa', '~> 0.2' | gem 'nsa', '~> 0.2' | ||||||
| gem 'oj', '~> 3.13' | gem 'oj', '~> 3.13' | ||||||
|  | @ -78,13 +79,13 @@ gem 'rqrcode', '~> 2.1' | ||||||
| gem 'ruby-progressbar', '~> 1.11' | gem 'ruby-progressbar', '~> 1.11' | ||||||
| gem 'sanitize', '~> 6.0' | gem 'sanitize', '~> 6.0' | ||||||
| gem 'scenic', '~> 1.5' | gem 'scenic', '~> 1.5' | ||||||
| gem 'sidekiq', '~> 6.2' | gem 'sidekiq', '~> 6.3' | ||||||
| gem 'sidekiq-scheduler', '~> 3.1' | gem 'sidekiq-scheduler', '~> 3.1' | ||||||
| gem 'sidekiq-unique-jobs', '~> 7.1' | gem 'sidekiq-unique-jobs', '~> 7.1' | ||||||
| gem 'sidekiq-bulk', '~>0.2.0' | gem 'sidekiq-bulk', '~>0.2.0' | ||||||
| gem 'simple-navigation', '~> 4.3' | gem 'simple-navigation', '~> 4.3' | ||||||
| gem 'simple_form', '~> 5.1' | gem 'simple_form', '~> 5.1' | ||||||
| gem 'sprockets-rails', '~> 3.2', require: 'sprockets/railtie' | gem 'sprockets-rails', '~> 3.4', require: 'sprockets/railtie' | ||||||
| gem 'stoplight', '~> 2.2.1' | gem 'stoplight', '~> 2.2.1' | ||||||
| gem 'strong_migrations', '~> 0.7' | gem 'strong_migrations', '~> 0.7' | ||||||
| gem 'tty-prompt', '~> 0.23', require: false | gem 'tty-prompt', '~> 0.23', require: false | ||||||
|  | @ -132,9 +133,9 @@ group :development do | ||||||
|   gem 'binding_of_caller', '~> 1.0' |   gem 'binding_of_caller', '~> 1.0' | ||||||
|   gem 'bullet', '~> 6.1' |   gem 'bullet', '~> 6.1' | ||||||
|   gem 'letter_opener', '~> 1.7' |   gem 'letter_opener', '~> 1.7' | ||||||
|   gem 'letter_opener_web', '~> 1.4' |   gem 'letter_opener_web', '~> 2.0' | ||||||
|   gem 'memory_profiler' |   gem 'memory_profiler' | ||||||
|   gem 'rubocop', '~> 1.22', require: false |   gem 'rubocop', '~> 1.23', require: false | ||||||
|   gem 'rubocop-rails', '~> 2.12', require: false |   gem 'rubocop-rails', '~> 2.12', require: false | ||||||
|   gem 'brakeman', '~> 5.1', require: false |   gem 'brakeman', '~> 5.1', require: false | ||||||
|   gem 'bundler-audit', '~> 0.9', require: false |   gem 'bundler-audit', '~> 0.9', require: false | ||||||
|  |  | ||||||
							
								
								
									
										106
									
								
								Gemfile.lock
									
									
									
									
									
								
							
							
						
						
									
										106
									
								
								Gemfile.lock
									
									
									
									
									
								
							|  | @ -79,17 +79,17 @@ GEM | ||||||
|       encryptor (~> 3.0.0) |       encryptor (~> 3.0.0) | ||||||
|     awrence (1.1.1) |     awrence (1.1.1) | ||||||
|     aws-eventstream (1.2.0) |     aws-eventstream (1.2.0) | ||||||
|     aws-partitions (1.519.0) |     aws-partitions (1.532.0) | ||||||
|     aws-sdk-core (3.121.3) |     aws-sdk-core (3.122.1) | ||||||
|       aws-eventstream (~> 1, >= 1.0.2) |       aws-eventstream (~> 1, >= 1.0.2) | ||||||
|       aws-partitions (~> 1, >= 1.239.0) |       aws-partitions (~> 1, >= 1.525.0) | ||||||
|       aws-sigv4 (~> 1.1) |       aws-sigv4 (~> 1.1) | ||||||
|       jmespath (~> 1.0) |       jmespath (~> 1.0) | ||||||
|     aws-sdk-kms (1.50.0) |     aws-sdk-kms (1.51.0) | ||||||
|       aws-sdk-core (~> 3, >= 3.121.2) |       aws-sdk-core (~> 3, >= 3.122.0) | ||||||
|       aws-sigv4 (~> 1.1) |       aws-sigv4 (~> 1.1) | ||||||
|     aws-sdk-s3 (1.104.0) |     aws-sdk-s3 (1.106.0) | ||||||
|       aws-sdk-core (~> 3, >= 3.121.2) |       aws-sdk-core (~> 3, >= 3.122.0) | ||||||
|       aws-sdk-kms (~> 1) |       aws-sdk-kms (~> 1) | ||||||
|       aws-sigv4 (~> 1.4) |       aws-sigv4 (~> 1.4) | ||||||
|     aws-sigv4 (1.4.0) |     aws-sigv4 (1.4.0) | ||||||
|  | @ -147,9 +147,9 @@ GEM | ||||||
|       activesupport |       activesupport | ||||||
|     cbor (0.5.9.6) |     cbor (0.5.9.6) | ||||||
|     charlock_holmes (0.7.7) |     charlock_holmes (0.7.7) | ||||||
|     chewy (5.2.0) |     chewy (7.2.3) | ||||||
|       activesupport (>= 5.2) |       activesupport (>= 5.2) | ||||||
|       elasticsearch (>= 2.0.0) |       elasticsearch (>= 7.12.0, < 7.14.0) | ||||||
|       elasticsearch-dsl |       elasticsearch-dsl | ||||||
|     chunky_png (1.4.0) |     chunky_png (1.4.0) | ||||||
|     cld3 (3.4.2) |     cld3 (3.4.2) | ||||||
|  | @ -197,13 +197,13 @@ GEM | ||||||
|       railties (>= 3.2) |       railties (>= 3.2) | ||||||
|     e2mmap (0.1.0) |     e2mmap (0.1.0) | ||||||
|     ed25519 (1.2.4) |     ed25519 (1.2.4) | ||||||
|     elasticsearch (7.10.1) |     elasticsearch (7.13.3) | ||||||
|       elasticsearch-api (= 7.10.1) |       elasticsearch-api (= 7.13.3) | ||||||
|       elasticsearch-transport (= 7.10.1) |       elasticsearch-transport (= 7.13.3) | ||||||
|     elasticsearch-api (7.10.1) |     elasticsearch-api (7.13.3) | ||||||
|       multi_json |       multi_json | ||||||
|     elasticsearch-dsl (0.1.9) |     elasticsearch-dsl (0.1.10) | ||||||
|     elasticsearch-transport (7.10.1) |     elasticsearch-transport (7.13.3) | ||||||
|       faraday (~> 1) |       faraday (~> 1) | ||||||
|       multi_json |       multi_json | ||||||
|     encryptor (3.0.0) |     encryptor (3.0.0) | ||||||
|  | @ -214,11 +214,25 @@ GEM | ||||||
|     fabrication (2.22.0) |     fabrication (2.22.0) | ||||||
|     faker (2.19.0) |     faker (2.19.0) | ||||||
|       i18n (>= 1.6, < 2) |       i18n (>= 1.6, < 2) | ||||||
|     faraday (1.3.0) |     faraday (1.8.0) | ||||||
|  |       faraday-em_http (~> 1.0) | ||||||
|  |       faraday-em_synchrony (~> 1.0) | ||||||
|  |       faraday-excon (~> 1.1) | ||||||
|  |       faraday-httpclient (~> 1.0.1) | ||||||
|       faraday-net_http (~> 1.0) |       faraday-net_http (~> 1.0) | ||||||
|  |       faraday-net_http_persistent (~> 1.1) | ||||||
|  |       faraday-patron (~> 1.0) | ||||||
|  |       faraday-rack (~> 1.0) | ||||||
|       multipart-post (>= 1.2, < 3) |       multipart-post (>= 1.2, < 3) | ||||||
|       ruby2_keywords |       ruby2_keywords (>= 0.0.4) | ||||||
|  |     faraday-em_http (1.0.0) | ||||||
|  |     faraday-em_synchrony (1.0.0) | ||||||
|  |     faraday-excon (1.1.0) | ||||||
|  |     faraday-httpclient (1.0.1) | ||||||
|     faraday-net_http (1.0.1) |     faraday-net_http (1.0.1) | ||||||
|  |     faraday-net_http_persistent (1.2.0) | ||||||
|  |     faraday-patron (1.0.0) | ||||||
|  |     faraday-rack (1.0.0) | ||||||
|     fast_blank (1.0.1) |     fast_blank (1.0.1) | ||||||
|     fastimage (2.2.5) |     fastimage (2.2.5) | ||||||
|     ffi (1.15.4) |     ffi (1.15.4) | ||||||
|  | @ -275,9 +289,9 @@ GEM | ||||||
|     httplog (1.5.0) |     httplog (1.5.0) | ||||||
|       rack (>= 1.0) |       rack (>= 1.0) | ||||||
|       rainbow (>= 2.0.0) |       rainbow (>= 2.0.0) | ||||||
|     i18n (1.8.10) |     i18n (1.8.11) | ||||||
|       concurrent-ruby (~> 1.0) |       concurrent-ruby (~> 1.0) | ||||||
|     i18n-tasks (0.9.34) |     i18n-tasks (0.9.35) | ||||||
|       activesupport (>= 4.0.2) |       activesupport (>= 4.0.2) | ||||||
|       ast (>= 2.1.0) |       ast (>= 2.1.0) | ||||||
|       erubi |       erubi | ||||||
|  | @ -287,7 +301,7 @@ GEM | ||||||
|       rails-i18n |       rails-i18n | ||||||
|       rainbow (>= 2.2.2, < 4.0) |       rainbow (>= 2.2.2, < 4.0) | ||||||
|       terminal-table (>= 1.5.1) |       terminal-table (>= 1.5.1) | ||||||
|     idn-ruby (0.1.2) |     idn-ruby (0.1.4) | ||||||
|     ipaddress (0.8.3) |     ipaddress (0.8.3) | ||||||
|     iso-639 (0.3.5) |     iso-639 (0.3.5) | ||||||
|     jmespath (1.4.0) |     jmespath (1.4.0) | ||||||
|  | @ -327,10 +341,11 @@ GEM | ||||||
|       addressable (~> 2.7) |       addressable (~> 2.7) | ||||||
|     letter_opener (1.7.0) |     letter_opener (1.7.0) | ||||||
|       launchy (~> 2.2) |       launchy (~> 2.2) | ||||||
|     letter_opener_web (1.4.1) |     letter_opener_web (2.0.0) | ||||||
|       actionmailer (>= 3.2) |       actionmailer (>= 5.2) | ||||||
|       letter_opener (~> 1.0) |       letter_opener (~> 1.7) | ||||||
|       railties (>= 3.2) |       railties (>= 5.2) | ||||||
|  |       rexml | ||||||
|     link_header (0.0.8) |     link_header (0.0.8) | ||||||
|     llhttp-ffi (0.4.0) |     llhttp-ffi (0.4.0) | ||||||
|       ffi-compiler (~> 1.0) |       ffi-compiler (~> 1.0) | ||||||
|  | @ -356,9 +371,9 @@ GEM | ||||||
|     microformats (4.3.1) |     microformats (4.3.1) | ||||||
|       json (~> 2.2) |       json (~> 2.2) | ||||||
|       nokogiri (~> 1.10) |       nokogiri (~> 1.10) | ||||||
|     mime-types (3.3.1) |     mime-types (3.4.1) | ||||||
|       mime-types-data (~> 3.2015) |       mime-types-data (~> 3.2015) | ||||||
|     mime-types-data (3.2021.0901) |     mime-types-data (3.2021.1115) | ||||||
|     mini_mime (1.1.2) |     mini_mime (1.1.2) | ||||||
|     mini_portile2 (2.6.1) |     mini_portile2 (2.6.1) | ||||||
|     minitest (5.14.4) |     minitest (5.14.4) | ||||||
|  | @ -395,7 +410,7 @@ GEM | ||||||
|     openssl (2.2.0) |     openssl (2.2.0) | ||||||
|     openssl-signature_algorithm (0.4.0) |     openssl-signature_algorithm (0.4.0) | ||||||
|     orm_adapter (0.5.0) |     orm_adapter (0.5.0) | ||||||
|     ox (2.14.5) |     ox (2.14.6) | ||||||
|     parallel (1.21.0) |     parallel (1.21.0) | ||||||
|     parser (3.0.2.0) |     parser (3.0.2.0) | ||||||
|       ast (~> 2.4.1) |       ast (~> 2.4.1) | ||||||
|  | @ -520,7 +535,7 @@ GEM | ||||||
|     rspec-support (3.10.2) |     rspec-support (3.10.2) | ||||||
|     rspec_junit_formatter (0.4.1) |     rspec_junit_formatter (0.4.1) | ||||||
|       rspec-core (>= 2, < 4, != 2.12.0) |       rspec-core (>= 2, < 4, != 2.12.0) | ||||||
|     rubocop (1.22.3) |     rubocop (1.23.0) | ||||||
|       parallel (~> 1.10) |       parallel (~> 1.10) | ||||||
|       parser (>= 3.0.0.0) |       parser (>= 3.0.0.0) | ||||||
|       rainbow (>= 2.2.2, < 4.0) |       rainbow (>= 2.2.2, < 4.0) | ||||||
|  | @ -529,7 +544,7 @@ GEM | ||||||
|       rubocop-ast (>= 1.12.0, < 2.0) |       rubocop-ast (>= 1.12.0, < 2.0) | ||||||
|       ruby-progressbar (~> 1.7) |       ruby-progressbar (~> 1.7) | ||||||
|       unicode-display_width (>= 1.4.0, < 3.0) |       unicode-display_width (>= 1.4.0, < 3.0) | ||||||
|     rubocop-ast (1.12.0) |     rubocop-ast (1.13.0) | ||||||
|       parser (>= 3.0.1.1) |       parser (>= 3.0.1.1) | ||||||
|     rubocop-rails (2.12.4) |     rubocop-rails (2.12.4) | ||||||
|       activesupport (>= 4.2.0) |       activesupport (>= 4.2.0) | ||||||
|  | @ -539,7 +554,7 @@ GEM | ||||||
|     ruby-saml (1.13.0) |     ruby-saml (1.13.0) | ||||||
|       nokogiri (>= 1.10.5) |       nokogiri (>= 1.10.5) | ||||||
|       rexml |       rexml | ||||||
|     ruby2_keywords (0.0.4) |     ruby2_keywords (0.0.5) | ||||||
|     rufus-scheduler (3.7.0) |     rufus-scheduler (3.7.0) | ||||||
|       fugit (~> 1.1, >= 1.1.6) |       fugit (~> 1.1, >= 1.1.6) | ||||||
|     safety_net_attestation (0.4.0) |     safety_net_attestation (0.4.0) | ||||||
|  | @ -552,7 +567,7 @@ GEM | ||||||
|       railties (>= 4.0.0) |       railties (>= 4.0.0) | ||||||
|     securecompare (1.0.0) |     securecompare (1.0.0) | ||||||
|     semantic_range (3.0.0) |     semantic_range (3.0.0) | ||||||
|     sidekiq (6.2.2) |     sidekiq (6.3.1) | ||||||
|       connection_pool (>= 2.2.2) |       connection_pool (>= 2.2.2) | ||||||
|       rack (~> 2.0) |       rack (~> 2.0) | ||||||
|       redis (>= 4.2.0) |       redis (>= 4.2.0) | ||||||
|  | @ -584,9 +599,9 @@ GEM | ||||||
|     sprockets (3.7.2) |     sprockets (3.7.2) | ||||||
|       concurrent-ruby (~> 1.0) |       concurrent-ruby (~> 1.0) | ||||||
|       rack (> 1, < 3) |       rack (> 1, < 3) | ||||||
|     sprockets-rails (3.2.2) |     sprockets-rails (3.4.0) | ||||||
|       actionpack (>= 4.0) |       actionpack (>= 5.2) | ||||||
|       activesupport (>= 4.0) |       activesupport (>= 5.2) | ||||||
|       sprockets (>= 3.0.0) |       sprockets (>= 3.0.0) | ||||||
|     sshkit (1.21.2) |     sshkit (1.21.2) | ||||||
|       net-scp (>= 1.1.2) |       net-scp (>= 1.1.2) | ||||||
|  | @ -597,8 +612,8 @@ GEM | ||||||
|     strong_migrations (0.7.8) |     strong_migrations (0.7.8) | ||||||
|       activerecord (>= 5) |       activerecord (>= 5) | ||||||
|     temple (0.8.2) |     temple (0.8.2) | ||||||
|     terminal-table (3.0.0) |     terminal-table (3.0.2) | ||||||
|       unicode-display_width (~> 1.1, >= 1.1.1) |       unicode-display_width (>= 1.1.1, < 3) | ||||||
|     terrapin (0.6.0) |     terrapin (0.6.0) | ||||||
|       climate_control (>= 0.0.3, < 1.0) |       climate_control (>= 0.0.3, < 1.0) | ||||||
|     thor (1.1.0) |     thor (1.1.0) | ||||||
|  | @ -628,7 +643,7 @@ GEM | ||||||
|     unf (0.1.4) |     unf (0.1.4) | ||||||
|       unf_ext |       unf_ext | ||||||
|     unf_ext (0.0.8) |     unf_ext (0.0.8) | ||||||
|     unicode-display_width (1.8.0) |     unicode-display_width (2.1.0) | ||||||
|     uniform_notifier (1.14.2) |     uniform_notifier (1.14.2) | ||||||
|     warden (1.2.9) |     warden (1.2.9) | ||||||
|       rack (>= 2.0.9) |       rack (>= 2.0.9) | ||||||
|  | @ -661,7 +676,7 @@ GEM | ||||||
|     xorcist (1.1.2) |     xorcist (1.1.2) | ||||||
|     xpath (3.2.0) |     xpath (3.2.0) | ||||||
|       nokogiri (~> 1.8) |       nokogiri (~> 1.8) | ||||||
|     zeitwerk (2.4.2) |     zeitwerk (2.5.1) | ||||||
| 
 | 
 | ||||||
| PLATFORMS | PLATFORMS | ||||||
|   ruby |   ruby | ||||||
|  | @ -671,7 +686,7 @@ DEPENDENCIES | ||||||
|   active_record_query_trace (~> 1.8) |   active_record_query_trace (~> 1.8) | ||||||
|   addressable (~> 2.8) |   addressable (~> 2.8) | ||||||
|   annotate (~> 3.1) |   annotate (~> 3.1) | ||||||
|   aws-sdk-s3 (~> 1.104) |   aws-sdk-s3 (~> 1.106) | ||||||
|   better_errors (~> 2.9) |   better_errors (~> 2.9) | ||||||
|   binding_of_caller (~> 1.0) |   binding_of_caller (~> 1.0) | ||||||
|   blurhash (~> 0.1) |   blurhash (~> 0.1) | ||||||
|  | @ -686,7 +701,7 @@ DEPENDENCIES | ||||||
|   capistrano-yarn (~> 2.0) |   capistrano-yarn (~> 2.0) | ||||||
|   capybara (~> 3.36) |   capybara (~> 3.36) | ||||||
|   charlock_holmes (~> 0.7.7) |   charlock_holmes (~> 0.7.7) | ||||||
|   chewy (~> 5.2) |   chewy (~> 7.2) | ||||||
|   cld3 (~> 3.4.2) |   cld3 (~> 3.4.2) | ||||||
|   climate_control (~> 0.2) |   climate_control (~> 0.2) | ||||||
|   color_diff (~> 0.1) |   color_diff (~> 0.1) | ||||||
|  | @ -720,14 +735,14 @@ DEPENDENCIES | ||||||
|   kaminari (~> 1.2) |   kaminari (~> 1.2) | ||||||
|   kt-paperclip (~> 7.0) |   kt-paperclip (~> 7.0) | ||||||
|   letter_opener (~> 1.7) |   letter_opener (~> 1.7) | ||||||
|   letter_opener_web (~> 1.4) |   letter_opener_web (~> 2.0) | ||||||
|   link_header (~> 0.0) |   link_header (~> 0.0) | ||||||
|   lograge (~> 0.11) |   lograge (~> 0.11) | ||||||
|   makara (~> 0.5) |   makara (~> 0.5) | ||||||
|   mario-redis-lock (~> 1.2) |   mario-redis-lock (~> 1.2) | ||||||
|   memory_profiler |   memory_profiler | ||||||
|   microformats (~> 4.2) |   microformats (~> 4.2) | ||||||
|   mime-types (~> 3.3.1) |   mime-types (~> 3.4.1) | ||||||
|   net-ldap (~> 0.17) |   net-ldap (~> 0.17) | ||||||
|   nokogiri (~> 1.12) |   nokogiri (~> 1.12) | ||||||
|   nsa (~> 0.2) |   nsa (~> 0.2) | ||||||
|  | @ -759,16 +774,17 @@ DEPENDENCIES | ||||||
|   redcarpet (~> 3.5) |   redcarpet (~> 3.5) | ||||||
|   redis (~> 4.5) |   redis (~> 4.5) | ||||||
|   redis-namespace (~> 1.8) |   redis-namespace (~> 1.8) | ||||||
|  |   rexml (~> 3.2) | ||||||
|   rqrcode (~> 2.1) |   rqrcode (~> 2.1) | ||||||
|   rspec-rails (~> 5.0) |   rspec-rails (~> 5.0) | ||||||
|   rspec-sidekiq (~> 3.1) |   rspec-sidekiq (~> 3.1) | ||||||
|   rspec_junit_formatter (~> 0.4) |   rspec_junit_formatter (~> 0.4) | ||||||
|   rubocop (~> 1.22) |   rubocop (~> 1.23) | ||||||
|   rubocop-rails (~> 2.12) |   rubocop-rails (~> 2.12) | ||||||
|   ruby-progressbar (~> 1.11) |   ruby-progressbar (~> 1.11) | ||||||
|   sanitize (~> 6.0) |   sanitize (~> 6.0) | ||||||
|   scenic (~> 1.5) |   scenic (~> 1.5) | ||||||
|   sidekiq (~> 6.2) |   sidekiq (~> 6.3) | ||||||
|   sidekiq-bulk (~> 0.2.0) |   sidekiq-bulk (~> 0.2.0) | ||||||
|   sidekiq-scheduler (~> 3.1) |   sidekiq-scheduler (~> 3.1) | ||||||
|   sidekiq-unique-jobs (~> 7.1) |   sidekiq-unique-jobs (~> 7.1) | ||||||
|  | @ -776,7 +792,7 @@ DEPENDENCIES | ||||||
|   simple_form (~> 5.1) |   simple_form (~> 5.1) | ||||||
|   simplecov (~> 0.21) |   simplecov (~> 0.21) | ||||||
|   sprockets (~> 3.7.2) |   sprockets (~> 3.7.2) | ||||||
|   sprockets-rails (~> 3.2) |   sprockets-rails (~> 3.4) | ||||||
|   stackprof |   stackprof | ||||||
|   stoplight (~> 2.2.1) |   stoplight (~> 2.2.1) | ||||||
|   strong_migrations (~> 0.7) |   strong_migrations (~> 0.7) | ||||||
|  |  | ||||||
|  | @ -23,21 +23,21 @@ class AccountsIndex < Chewy::Index | ||||||
|     }, |     }, | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   define_type ::Account.searchable.includes(:account_stat), delete_if: ->(account) { account.destroyed? || !account.searchable? } do |   index_scope ::Account.searchable.includes(:account_stat), delete_if: ->(account) { account.destroyed? || !account.searchable? } | ||||||
|     root date_detection: false do |  | ||||||
|       field :id, type: 'long' |  | ||||||
| 
 | 
 | ||||||
|       field :display_name, type: 'text', analyzer: 'content' do |   root date_detection: false do | ||||||
|         field :edge_ngram, type: 'text', analyzer: 'edge_ngram', search_analyzer: 'content' |     field :id, type: 'long' | ||||||
|       end |  | ||||||
| 
 | 
 | ||||||
|       field :acct, type: 'text', analyzer: 'content', value: ->(account) { [account.username, account.domain].compact.join('@') } do |     field :display_name, type: 'text', analyzer: 'content' do | ||||||
|         field :edge_ngram, type: 'text', analyzer: 'edge_ngram', search_analyzer: 'content' |       field :edge_ngram, type: 'text', analyzer: 'edge_ngram', search_analyzer: 'content' | ||||||
|       end |  | ||||||
| 
 |  | ||||||
|       field :following_count, type: 'long', value: ->(account) { account.following.local.count } |  | ||||||
|       field :followers_count, type: 'long', value: ->(account) { account.followers.local.count } |  | ||||||
|       field :last_status_at, type: 'date', value: ->(account) { account.last_status_at || account.created_at } |  | ||||||
|     end |     end | ||||||
|  | 
 | ||||||
|  |     field :acct, type: 'text', analyzer: 'content', value: ->(account) { [account.username, account.domain].compact.join('@') } do | ||||||
|  |       field :edge_ngram, type: 'text', analyzer: 'edge_ngram', search_analyzer: 'content' | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     field :following_count, type: 'long', value: ->(account) { account.following.local.count } | ||||||
|  |     field :followers_count, type: 'long', value: ->(account) { account.followers.local.count } | ||||||
|  |     field :last_status_at, type: 'date', value: ->(account) { account.last_status_at || account.created_at } | ||||||
|   end |   end | ||||||
| end | end | ||||||
|  |  | ||||||
|  | @ -31,36 +31,36 @@ class StatusesIndex < Chewy::Index | ||||||
|     }, |     }, | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   define_type ::Status.unscoped.kept.without_reblogs.includes(:media_attachments, :preloadable_poll) do |   index_scope ::Status.unscoped.kept.without_reblogs.includes(:media_attachments, :preloadable_poll) | ||||||
|     crutch :mentions do |collection| | 
 | ||||||
|       data = ::Mention.where(status_id: collection.map(&:id)).where(account: Account.local, silent: false).pluck(:status_id, :account_id) |   crutch :mentions do |collection| | ||||||
|       data.each.with_object({}) { |(id, name), result| (result[id] ||= []).push(name) } |     data = ::Mention.where(status_id: collection.map(&:id)).where(account: Account.local, silent: false).pluck(:status_id, :account_id) | ||||||
|  |     data.each.with_object({}) { |(id, name), result| (result[id] ||= []).push(name) } | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   crutch :favourites do |collection| | ||||||
|  |     data = ::Favourite.where(status_id: collection.map(&:id)).where(account: Account.local).pluck(:status_id, :account_id) | ||||||
|  |     data.each.with_object({}) { |(id, name), result| (result[id] ||= []).push(name) } | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   crutch :reblogs do |collection| | ||||||
|  |     data = ::Status.where(reblog_of_id: collection.map(&:id)).where(account: Account.local).pluck(:reblog_of_id, :account_id) | ||||||
|  |     data.each.with_object({}) { |(id, name), result| (result[id] ||= []).push(name) } | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   crutch :bookmarks do |collection| | ||||||
|  |     data = ::Bookmark.where(status_id: collection.map(&:id)).where(account: Account.local).pluck(:status_id, :account_id) | ||||||
|  |     data.each.with_object({}) { |(id, name), result| (result[id] ||= []).push(name) } | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   root date_detection: false do | ||||||
|  |     field :id, type: 'long' | ||||||
|  |     field :account_id, type: 'long' | ||||||
|  | 
 | ||||||
|  |     field :text, type: 'text', value: ->(status) { [status.spoiler_text, Formatter.instance.plaintext(status)].concat(status.media_attachments.map(&:description)).concat(status.preloadable_poll ? status.preloadable_poll.options : []).join("\n\n") } do | ||||||
|  |       field :stemmed, type: 'text', analyzer: 'content' | ||||||
|     end |     end | ||||||
| 
 | 
 | ||||||
|     crutch :favourites do |collection| |     field :searchable_by, type: 'long', value: ->(status, crutches) { status.searchable_by(crutches) } | ||||||
|       data = ::Favourite.where(status_id: collection.map(&:id)).where(account: Account.local).pluck(:status_id, :account_id) |  | ||||||
|       data.each.with_object({}) { |(id, name), result| (result[id] ||= []).push(name) } |  | ||||||
|     end |  | ||||||
| 
 |  | ||||||
|     crutch :reblogs do |collection| |  | ||||||
|       data = ::Status.where(reblog_of_id: collection.map(&:id)).where(account: Account.local).pluck(:reblog_of_id, :account_id) |  | ||||||
|       data.each.with_object({}) { |(id, name), result| (result[id] ||= []).push(name) } |  | ||||||
|     end |  | ||||||
| 
 |  | ||||||
|     crutch :bookmarks do |collection| |  | ||||||
|       data = ::Bookmark.where(status_id: collection.map(&:id)).where(account: Account.local).pluck(:status_id, :account_id) |  | ||||||
|       data.each.with_object({}) { |(id, name), result| (result[id] ||= []).push(name) } |  | ||||||
|     end |  | ||||||
| 
 |  | ||||||
|     root date_detection: false do |  | ||||||
|       field :id, type: 'long' |  | ||||||
|       field :account_id, type: 'long' |  | ||||||
| 
 |  | ||||||
|       field :text, type: 'text', value: ->(status) { [status.spoiler_text, Formatter.instance.plaintext(status)].concat(status.media_attachments.map(&:description)).concat(status.preloadable_poll ? status.preloadable_poll.options : []).join("\n\n") } do |  | ||||||
|         field :stemmed, type: 'text', analyzer: 'content' |  | ||||||
|       end |  | ||||||
| 
 |  | ||||||
|       field :searchable_by, type: 'long', value: ->(status, crutches) { status.searchable_by(crutches) } |  | ||||||
|     end |  | ||||||
|   end |   end | ||||||
| end | end | ||||||
|  |  | ||||||
|  | @ -23,15 +23,15 @@ class TagsIndex < Chewy::Index | ||||||
|     }, |     }, | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   define_type ::Tag.listable, delete_if: ->(tag) { tag.destroyed? || !tag.listable? } do |   index_scope ::Tag.listable, delete_if: ->(tag) { tag.destroyed? || !tag.listable? } | ||||||
|     root date_detection: false do |  | ||||||
|       field :name, type: 'text', analyzer: 'content' do |  | ||||||
|         field :edge_ngram, type: 'text', analyzer: 'edge_ngram', search_analyzer: 'content' |  | ||||||
|       end |  | ||||||
| 
 | 
 | ||||||
|       field :reviewed, type: 'boolean', value: ->(tag) { tag.reviewed? } |   root date_detection: false do | ||||||
|       field :usage, type: 'long', value: ->(tag) { tag.history.reduce(0) { |total, day| total + day[:accounts].to_i } } |     field :name, type: 'text', analyzer: 'content' do | ||||||
|       field :last_status_at, type: 'date', value: ->(tag) { tag.last_status_at || tag.created_at } |       field :edge_ngram, type: 'text', analyzer: 'edge_ngram', search_analyzer: 'content' | ||||||
|     end |     end | ||||||
|  | 
 | ||||||
|  |     field :reviewed, type: 'boolean', value: ->(tag) { tag.reviewed? } | ||||||
|  |     field :usage, type: 'long', value: ->(tag) { tag.history.reduce(0) { |total, day| total + day[:accounts].to_i } } | ||||||
|  |     field :last_status_at, type: 'date', value: ->(tag) { tag.last_status_at || tag.created_at } | ||||||
|   end |   end | ||||||
| end | end | ||||||
|  |  | ||||||
|  | @ -847,6 +847,7 @@ a.name-tag, | ||||||
|     padding: 0 5px; |     padding: 0 5px; | ||||||
|     margin-bottom: 10px; |     margin-bottom: 10px; | ||||||
|     flex: 1 0 50%; |     flex: 1 0 50%; | ||||||
|  |     max-width: 100%; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   .account__header__fields, |   .account__header__fields, | ||||||
|  |  | ||||||
|  | @ -169,7 +169,7 @@ | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   &:hover::before { |   &:hover::before { | ||||||
|     z-index: 0; |     z-index: -1; | ||||||
|     content: ""; |     content: ""; | ||||||
|     position: absolute; |     position: absolute; | ||||||
|     top: 0; |     top: 0; | ||||||
|  |  | ||||||
|  | @ -59,7 +59,7 @@ class LinkDetailsExtractor | ||||||
|     end |     end | ||||||
| 
 | 
 | ||||||
|     def json |     def json | ||||||
|       @json ||= Oj.load(@data) |       @json ||= first_of_value(Oj.load(@data)) | ||||||
|     end |     end | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|  | @ -178,6 +178,8 @@ class LinkDetailsExtractor | ||||||
|     @structured_data ||= begin |     @structured_data ||= begin | ||||||
|       json_ld = document.xpath('//script[@type="application/ld+json"]').map(&:content).first |       json_ld = document.xpath('//script[@type="application/ld+json"]').map(&:content).first | ||||||
|       json_ld.present? ? StructuredData.new(json_ld) : nil |       json_ld.present? ? StructuredData.new(json_ld) : nil | ||||||
|  |     rescue Oj::ParseError | ||||||
|  |       nil | ||||||
|     end |     end | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -46,7 +46,9 @@ class Webfinger | ||||||
|   def body_from_webfinger(url = standard_url, use_fallback = true) |   def body_from_webfinger(url = standard_url, use_fallback = true) | ||||||
|     webfinger_request(url).perform do |res| |     webfinger_request(url).perform do |res| | ||||||
|       if res.code == 200 |       if res.code == 200 | ||||||
|         res.body_with_limit |         body = res.body_with_limit | ||||||
|  |         raise Webfinger::Error, "Request for #{@uri} returned empty response" if body.empty? | ||||||
|  |         body | ||||||
|       elsif res.code == 404 && use_fallback |       elsif res.code == 404 && use_fallback | ||||||
|         body_from_host_meta |         body_from_host_meta | ||||||
|       elsif res.code == 410 |       elsif res.code == 410 | ||||||
|  |  | ||||||
|  | @ -147,7 +147,7 @@ class Account < ApplicationRecord | ||||||
| 
 | 
 | ||||||
|   delegate :chosen_languages, to: :user, prefix: false, allow_nil: true |   delegate :chosen_languages, to: :user, prefix: false, allow_nil: true | ||||||
| 
 | 
 | ||||||
|   update_index('accounts#account', :self) |   update_index('accounts', :self) | ||||||
| 
 | 
 | ||||||
|   def local? |   def local? | ||||||
|     domain.nil? |     domain.nil? | ||||||
|  |  | ||||||
|  | @ -19,5 +19,5 @@ class AccountStat < ApplicationRecord | ||||||
| 
 | 
 | ||||||
|   belongs_to :account, inverse_of: :account_stat |   belongs_to :account, inverse_of: :account_stat | ||||||
| 
 | 
 | ||||||
|   update_index('accounts#account', :account) |   update_index('accounts', :account) | ||||||
| end | end | ||||||
|  |  | ||||||
|  | @ -13,7 +13,7 @@ | ||||||
| class Bookmark < ApplicationRecord | class Bookmark < ApplicationRecord | ||||||
|   include Paginable |   include Paginable | ||||||
| 
 | 
 | ||||||
|   update_index('statuses#status', :status) if Chewy.enabled? |   update_index('statuses', :status) if Chewy.enabled? | ||||||
| 
 | 
 | ||||||
|   belongs_to :account, inverse_of: :bookmarks |   belongs_to :account, inverse_of: :bookmarks | ||||||
|   belongs_to :status,  inverse_of: :bookmarks |   belongs_to :status,  inverse_of: :bookmarks | ||||||
|  |  | ||||||
|  | @ -13,7 +13,7 @@ | ||||||
| class Favourite < ApplicationRecord | class Favourite < ApplicationRecord | ||||||
|   include Paginable |   include Paginable | ||||||
| 
 | 
 | ||||||
|   update_index('statuses#status', :status) |   update_index('statuses', :status) | ||||||
| 
 | 
 | ||||||
|   belongs_to :account, inverse_of: :favourites |   belongs_to :account, inverse_of: :favourites | ||||||
|   belongs_to :status,  inverse_of: :favourites |   belongs_to :status,  inverse_of: :favourites | ||||||
|  |  | ||||||
|  | @ -45,7 +45,7 @@ class Status < ApplicationRecord | ||||||
|   # will be based on current time instead of `created_at` |   # will be based on current time instead of `created_at` | ||||||
|   attr_accessor :override_timestamps |   attr_accessor :override_timestamps | ||||||
| 
 | 
 | ||||||
|   update_index('statuses#status', :proper) |   update_index('statuses', :proper) | ||||||
| 
 | 
 | ||||||
|   enum visibility: [:public, :unlisted, :private, :direct, :limited], _suffix: :visibility |   enum visibility: [:public, :unlisted, :private, :direct, :limited], _suffix: :visibility | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -39,7 +39,7 @@ class Tag < ApplicationRecord | ||||||
|   scope :recently_used, ->(account) { joins(:statuses).where(statuses: { id: account.statuses.select(:id).limit(1000) }).group(:id).order(Arel.sql('count(*) desc')) } |   scope :recently_used, ->(account) { joins(:statuses).where(statuses: { id: account.statuses.select(:id).limit(1000) }).group(:id).order(Arel.sql('count(*) desc')) } | ||||||
|   scope :matches_name, ->(term) { where(arel_table[:name].lower.matches(arel_table.lower("#{sanitize_sql_like(Tag.normalize(term))}%"), nil, true)) } # Search with case-sensitive to use B-tree index |   scope :matches_name, ->(term) { where(arel_table[:name].lower.matches(arel_table.lower("#{sanitize_sql_like(Tag.normalize(term))}%"), nil, true)) } # Search with case-sensitive to use B-tree index | ||||||
| 
 | 
 | ||||||
|   update_index('tags#tag', :self) |   update_index('tags', :self) | ||||||
| 
 | 
 | ||||||
|   def to_param |   def to_param | ||||||
|     name |     name | ||||||
|  |  | ||||||
|  | @ -32,7 +32,7 @@ class BatchedRemoveStatusService < BaseService | ||||||
| 
 | 
 | ||||||
|     # Since we skipped all callbacks, we also need to manually |     # Since we skipped all callbacks, we also need to manually | ||||||
|     # deindex the statuses |     # deindex the statuses | ||||||
|     Chewy.strategy.current.update(StatusesIndex::Status, statuses_and_reblogs) if Chewy.enabled? |     Chewy.strategy.current.update(StatusesIndex, statuses_and_reblogs) if Chewy.enabled? | ||||||
| 
 | 
 | ||||||
|     return if options[:skip_side_effects] |     return if options[:skip_side_effects] | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -189,7 +189,7 @@ class DeleteAccountService < BaseService | ||||||
|     @account.favourites.in_batches do |favourites| |     @account.favourites.in_batches do |favourites| | ||||||
|       ids = favourites.pluck(:status_id) |       ids = favourites.pluck(:status_id) | ||||||
|       StatusStat.where(status_id: ids).update_all('favourites_count = GREATEST(0, favourites_count - 1)') |       StatusStat.where(status_id: ids).update_all('favourites_count = GREATEST(0, favourites_count - 1)') | ||||||
|       Chewy.strategy.current.update(StatusesIndex::Status, ids) if Chewy.enabled? |       Chewy.strategy.current.update(StatusesIndex, ids) if Chewy.enabled? | ||||||
|       Rails.cache.delete_multi(ids.map { |id| "statuses/#{id}" }) |       Rails.cache.delete_multi(ids.map { |id| "statuses/#{id}" }) | ||||||
|       favourites.delete_all |       favourites.delete_all | ||||||
|     end |     end | ||||||
|  | @ -197,7 +197,7 @@ class DeleteAccountService < BaseService | ||||||
| 
 | 
 | ||||||
|   def purge_bookmarks! |   def purge_bookmarks! | ||||||
|     @account.bookmarks.in_batches do |bookmarks| |     @account.bookmarks.in_batches do |bookmarks| | ||||||
|       Chewy.strategy.current.update(StatusesIndex::Status, bookmarks.pluck(:status_id)) if Chewy.enabled? |       Chewy.strategy.current.update(StatusesIndex, bookmarks.pluck(:status_id)) if Chewy.enabled? | ||||||
|       bookmarks.delete_all |       bookmarks.delete_all | ||||||
|     end |     end | ||||||
|   end |   end | ||||||
|  |  | ||||||
|  | @ -37,23 +37,3 @@ end | ||||||
| # Mastodon is run with hidden services enabled, because | # Mastodon is run with hidden services enabled, because | ||||||
| # ElasticSearch is *not* supposed to be accessed through a proxy | # ElasticSearch is *not* supposed to be accessed through a proxy | ||||||
| Faraday.ignore_env_proxy = true | Faraday.ignore_env_proxy = true | ||||||
| 
 |  | ||||||
| # Elasticsearch 7.x workaround |  | ||||||
| Elasticsearch::Transport::Client.prepend Module.new { |  | ||||||
|   def search(arguments = {}) |  | ||||||
|     arguments[:rest_total_hits_as_int] = true |  | ||||||
|     super arguments |  | ||||||
|   end |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| Elasticsearch::API::Indices::IndicesClient.prepend Module.new { |  | ||||||
|   def create(arguments = {}) |  | ||||||
|     arguments[:include_type_name] = true |  | ||||||
|     super arguments |  | ||||||
|   end |  | ||||||
| 
 |  | ||||||
|   def put_mapping(arguments = {}) |  | ||||||
|     arguments[:include_type_name] = true |  | ||||||
|     super arguments |  | ||||||
|   end |  | ||||||
| } |  | ||||||
|  |  | ||||||
|  | @ -3,14 +3,16 @@ services: | ||||||
| 
 | 
 | ||||||
|   db: |   db: | ||||||
|     restart: always |     restart: always | ||||||
|     image: postgres:9.6-alpine |     image: postgres:14-alpine | ||||||
|     shm_size: 256mb |     shm_size: 256mb | ||||||
|     networks: |     networks: | ||||||
|       - internal_network |       - internal_network | ||||||
|     healthcheck: |     healthcheck: | ||||||
|       test: ["CMD", "pg_isready", "-U", "postgres"] |       test: ["CMD", "pg_isready", "-U", "postgres"] | ||||||
|     volumes: |     volumes: | ||||||
|       - ./postgres:/var/lib/postgresql/data |       - ./postgres14:/var/lib/postgresql/data | ||||||
|  |     environment: | ||||||
|  |       - "POSTGRES_HOST_AUTH_METHOD=trust" | ||||||
| 
 | 
 | ||||||
|   redis: |   redis: | ||||||
|     restart: always |     restart: always | ||||||
|  | @ -24,7 +26,7 @@ services: | ||||||
| 
 | 
 | ||||||
| #  es: | #  es: | ||||||
| #    restart: always | #    restart: always | ||||||
| #    image: docker.elastic.co/elasticsearch/elasticsearch-oss:6.8.10 | #    image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.2 | ||||||
| #    environment: | #    environment: | ||||||
| #      - "ES_JAVA_OPTS=-Xms512m -Xmx512m" | #      - "ES_JAVA_OPTS=-Xms512m -Xmx512m" | ||||||
| #      - "cluster.name=es-mastodon" | #      - "cluster.name=es-mastodon" | ||||||
|  |  | ||||||
|  | @ -64,11 +64,7 @@ module Mastodon | ||||||
|       progress.title = 'Estimating workload ' |       progress.title = 'Estimating workload ' | ||||||
| 
 | 
 | ||||||
|       # Estimate the amount of data that has to be imported first |       # Estimate the amount of data that has to be imported first | ||||||
|       indices.each do |index| |       progress.total = indices.sum { |index| index.adapter.default_scope.count } | ||||||
|         index.types.each do |type| |  | ||||||
|           progress.total = (progress.total || 0) + type.adapter.default_scope.count |  | ||||||
|         end |  | ||||||
|       end |  | ||||||
| 
 | 
 | ||||||
|       # Now import all the actual data. Mind that unlike chewy:sync, we don't |       # Now import all the actual data. Mind that unlike chewy:sync, we don't | ||||||
|       # fetch and compare all record IDs from the database and the index to |       # fetch and compare all record IDs from the database and the index to | ||||||
|  | @ -80,67 +76,68 @@ module Mastodon | ||||||
|         batch_size     = 1_000 |         batch_size     = 1_000 | ||||||
|         slice_size     = (batch_size / options[:concurrency]).ceil |         slice_size     = (batch_size / options[:concurrency]).ceil | ||||||
| 
 | 
 | ||||||
|         index.types.each do |type| |         index.adapter.default_scope.reorder(nil).find_in_batches(batch_size: batch_size) do |batch| | ||||||
|           type.adapter.default_scope.reorder(nil).find_in_batches(batch_size: batch_size) do |batch| |           futures = [] | ||||||
|             futures = [] |  | ||||||
| 
 | 
 | ||||||
|             batch.each_slice(slice_size) do |records| |           batch.each_slice(slice_size) do |records| | ||||||
|               futures << Concurrent::Future.execute(executor: pool) do |             futures << Concurrent::Future.execute(executor: pool) do | ||||||
|                 begin |               begin | ||||||
|                   if !progress.total.nil? && progress.progress + records.size > progress.total |                 if !progress.total.nil? && progress.progress + records.size > progress.total | ||||||
|                     # The number of items has changed between start and now, |                   # The number of items has changed between start and now, | ||||||
|                     # since there is no good way to predict the final count from |                   # since there is no good way to predict the final count from | ||||||
|                     # here, just change the progress bar to an indeterminate one |                   # here, just change the progress bar to an indeterminate one | ||||||
| 
 | 
 | ||||||
|                     progress.total = nil |                   progress.total = nil | ||||||
|  |                 end | ||||||
|  | 
 | ||||||
|  |                 grouped_records = nil | ||||||
|  |                 bulk_body       = nil | ||||||
|  |                 index_count     = 0 | ||||||
|  |                 delete_count    = 0 | ||||||
|  | 
 | ||||||
|  |                 ActiveRecord::Base.connection_pool.with_connection do | ||||||
|  |                   grouped_records = records.to_a.group_by do |record| | ||||||
|  |                     index.adapter.send(:delete_from_index?, record) ? :delete : :to_index | ||||||
|                   end |                   end | ||||||
| 
 | 
 | ||||||
|                   grouped_records = nil |                   bulk_body = Chewy::Index::Import::BulkBuilder.new(index, **grouped_records).bulk_body | ||||||
|                   bulk_body       = nil |                 end | ||||||
|                   index_count     = 0 |  | ||||||
|                   delete_count    = 0 |  | ||||||
| 
 | 
 | ||||||
|                   ActiveRecord::Base.connection_pool.with_connection do |                 index_count  = grouped_records[:to_index].size  if grouped_records.key?(:to_index) | ||||||
|                     grouped_records = type.adapter.send(:grouped_objects, records) |                 delete_count = grouped_records[:delete].size    if grouped_records.key?(:delete) | ||||||
|                     bulk_body       = Chewy::Type::Import::BulkBuilder.new(type, **grouped_records).bulk_body |  | ||||||
|                   end |  | ||||||
| 
 | 
 | ||||||
|                   index_count  = grouped_records[:index].size  if grouped_records.key?(:index) |                 # The following is an optimization for statuses specifically, since | ||||||
|                   delete_count = grouped_records[:delete].size if grouped_records.key?(:delete) |                 # we want to de-index statuses that cannot be searched by anybody, | ||||||
|  |                 # but can't use Chewy's delete_if logic because it doesn't use | ||||||
|  |                 # crutches and our searchable_by logic depends on them | ||||||
|  |                 if index == StatusesIndex | ||||||
|  |                   bulk_body.map! do |entry| | ||||||
|  |                     if entry[:to_index] && entry.dig(:to_index, :data, 'searchable_by').blank? | ||||||
|  |                       index_count  -= 1 | ||||||
|  |                       delete_count += 1 | ||||||
| 
 | 
 | ||||||
|                   # The following is an optimization for statuses specifically, since |                       { delete: entry[:to_index].except(:data) } | ||||||
|                   # we want to de-index statuses that cannot be searched by anybody, |                     else | ||||||
|                   # but can't use Chewy's delete_if logic because it doesn't use |                       entry | ||||||
|                   # crutches and our searchable_by logic depends on them |  | ||||||
|                   if type == StatusesIndex::Status |  | ||||||
|                     bulk_body.map! do |entry| |  | ||||||
|                       if entry[:index] && entry.dig(:index, :data, 'searchable_by').blank? |  | ||||||
|                         index_count  -= 1 |  | ||||||
|                         delete_count += 1 |  | ||||||
| 
 |  | ||||||
|                         { delete: entry[:index].except(:data) } |  | ||||||
|                       else |  | ||||||
|                         entry |  | ||||||
|                       end |  | ||||||
|                     end |                     end | ||||||
|                   end |                   end | ||||||
| 
 |  | ||||||
|                   Chewy::Type::Import::BulkRequest.new(type).perform(bulk_body) |  | ||||||
| 
 |  | ||||||
|                   progress.progress += records.size |  | ||||||
| 
 |  | ||||||
|                   added.increment(index_count) |  | ||||||
|                   removed.increment(delete_count) |  | ||||||
| 
 |  | ||||||
|                   sleep 1 |  | ||||||
|                 rescue => e |  | ||||||
|                   progress.log pastel.red("Error importing #{index}: #{e}") |  | ||||||
|                 end |                 end | ||||||
|  | 
 | ||||||
|  |                 Chewy::Index::Import::BulkRequest.new(index).perform(bulk_body) | ||||||
|  | 
 | ||||||
|  |                 progress.progress += records.size | ||||||
|  | 
 | ||||||
|  |                 added.increment(index_count) | ||||||
|  |                 removed.increment(delete_count) | ||||||
|  | 
 | ||||||
|  |                 sleep 1 | ||||||
|  |               rescue => e | ||||||
|  |                 progress.log pastel.red("Error importing #{index}: #{e}") | ||||||
|               end |               end | ||||||
|             end |             end | ||||||
| 
 |  | ||||||
|             futures.map(&:value) |  | ||||||
|           end |           end | ||||||
|  | 
 | ||||||
|  |           futures.map(&:value) | ||||||
|         end |         end | ||||||
|       end |       end | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -17,9 +17,9 @@ module Paperclip | ||||||
| 
 | 
 | ||||||
|     def cache_current_values |     def cache_current_values | ||||||
|       @original_filename = filename_from_content_disposition.presence || filename_from_path.presence || 'data' |       @original_filename = filename_from_content_disposition.presence || filename_from_path.presence || 'data' | ||||||
|       @size = @target.response.content_length |  | ||||||
|       @tempfile = copy_to_tempfile(@target) |       @tempfile = copy_to_tempfile(@target) | ||||||
|       @content_type = ContentTypeDetector.new(@tempfile.path).detect |       @content_type = ContentTypeDetector.new(@tempfile.path).detect | ||||||
|  |       @size = File.size(@tempfile) | ||||||
|     end |     end | ||||||
| 
 | 
 | ||||||
|     def copy_to_tempfile(source) |     def copy_to_tempfile(source) | ||||||
|  |  | ||||||
							
								
								
									
										18
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								package.json
									
									
									
									
									
								
							|  | @ -67,7 +67,7 @@ | ||||||
|     "@babel/plugin-transform-runtime": "^7.16.0", |     "@babel/plugin-transform-runtime": "^7.16.0", | ||||||
|     "@babel/preset-env": "^7.16.0", |     "@babel/preset-env": "^7.16.0", | ||||||
|     "@babel/preset-react": "^7.16.0", |     "@babel/preset-react": "^7.16.0", | ||||||
|     "@babel/runtime": "^7.16.0", |     "@babel/runtime": "^7.16.3", | ||||||
|     "@gamestdio/websocket": "^0.3.2", |     "@gamestdio/websocket": "^0.3.2", | ||||||
|     "@github/webauthn-json": "^0.5.7", |     "@github/webauthn-json": "^0.5.7", | ||||||
|     "@rails/ujs": "^6.1.4", |     "@rails/ujs": "^6.1.4", | ||||||
|  | @ -91,7 +91,7 @@ | ||||||
|     "cssnano": "^4.1.11", |     "cssnano": "^4.1.11", | ||||||
|     "detect-passive-events": "^2.0.3", |     "detect-passive-events": "^2.0.3", | ||||||
|     "dotenv": "^10.0.0", |     "dotenv": "^10.0.0", | ||||||
|     "emoji-mart": "^3.0.1", |     "emoji-mart": "npm:emoji-mart-lazyload", | ||||||
|     "es6-symbol": "^3.1.3", |     "es6-symbol": "^3.1.3", | ||||||
|     "escape-html": "^1.0.3", |     "escape-html": "^1.0.3", | ||||||
|     "exif-js": "^2.3.0", |     "exif-js": "^2.3.0", | ||||||
|  | @ -141,7 +141,7 @@ | ||||||
|     "react-redux-loading-bar": "^4.0.8", |     "react-redux-loading-bar": "^4.0.8", | ||||||
|     "react-router-dom": "^4.1.1", |     "react-router-dom": "^4.1.1", | ||||||
|     "react-router-scroll-4": "^1.0.0-beta.1", |     "react-router-scroll-4": "^1.0.0-beta.1", | ||||||
|     "react-select": "^5.1.0", |     "react-select": "^5.2.1", | ||||||
|     "react-sparklines": "^1.7.0", |     "react-sparklines": "^1.7.0", | ||||||
|     "react-swipeable-views": "^0.14.0", |     "react-swipeable-views": "^0.14.0", | ||||||
|     "react-textarea-autosize": "^8.3.3", |     "react-textarea-autosize": "^8.3.3", | ||||||
|  | @ -153,7 +153,7 @@ | ||||||
|     "regenerator-runtime": "^0.13.9", |     "regenerator-runtime": "^0.13.9", | ||||||
|     "rellax": "^1.12.1", |     "rellax": "^1.12.1", | ||||||
|     "requestidlecallback": "^0.3.0", |     "requestidlecallback": "^0.3.0", | ||||||
|     "reselect": "^4.1.1", |     "reselect": "^4.1.2", | ||||||
|     "rimraf": "^3.0.2", |     "rimraf": "^3.0.2", | ||||||
|     "sass": "^1.43.4", |     "sass": "^1.43.4", | ||||||
|     "sass-loader": "^10.2.0", |     "sass-loader": "^10.2.0", | ||||||
|  | @ -175,21 +175,21 @@ | ||||||
|     "ws": "^8.2.3" |     "ws": "^8.2.3" | ||||||
|   }, |   }, | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|     "@testing-library/jest-dom": "^5.14.1", |     "@testing-library/jest-dom": "^5.15.0", | ||||||
|     "@testing-library/react": "^12.1.2", |     "@testing-library/react": "^12.1.2", | ||||||
|     "babel-eslint": "^10.1.0", |     "babel-eslint": "^10.1.0", | ||||||
|     "babel-jest": "^27.3.1", |     "babel-jest": "^27.3.1", | ||||||
|     "eslint": "^7.32.0", |     "eslint": "^7.32.0", | ||||||
|     "eslint-plugin-import": "~2.25.2", |     "eslint-plugin-import": "~2.25.3", | ||||||
|     "eslint-plugin-jsx-a11y": "~6.4.1", |     "eslint-plugin-jsx-a11y": "~6.5.1", | ||||||
|     "eslint-plugin-promise": "~5.1.1", |     "eslint-plugin-promise": "~5.1.1", | ||||||
|     "eslint-plugin-react": "~7.26.1", |     "eslint-plugin-react": "~7.27.0", | ||||||
|     "jest": "^27.3.1", |     "jest": "^27.3.1", | ||||||
|     "raf": "^3.4.1", |     "raf": "^3.4.1", | ||||||
|     "react-intl-translations-manager": "^5.0.3", |     "react-intl-translations-manager": "^5.0.3", | ||||||
|     "react-test-renderer": "^16.14.0", |     "react-test-renderer": "^16.14.0", | ||||||
|     "sass-lint": "^1.13.1", |     "sass-lint": "^1.13.1", | ||||||
|     "webpack-dev-server": "^3.11.2", |     "webpack-dev-server": "^3.11.3", | ||||||
|     "yargs": "^17.2.1" |     "yargs": "^17.2.1" | ||||||
|   }, |   }, | ||||||
|   "resolutions": { |   "resolutions": { | ||||||
|  |  | ||||||
							
								
								
									
										224
									
								
								yarn.lock
									
									
									
									
									
								
							
							
						
						
									
										224
									
								
								yarn.lock
									
									
									
									
									
								
							|  | @ -990,10 +990,10 @@ | ||||||
|   dependencies: |   dependencies: | ||||||
|     regenerator-runtime "^0.12.0" |     regenerator-runtime "^0.12.0" | ||||||
| 
 | 
 | ||||||
| "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.0", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": | "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": | ||||||
|   version "7.16.0" |   version "7.16.3" | ||||||
|   resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.0.tgz#e27b977f2e2088ba24748bf99b5e1dece64e4f0b" |   resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.3.tgz#b86f0db02a04187a3c17caa77de69840165d42d5" | ||||||
|   integrity sha512-Nht8L0O8YCktmsDV6FqFue7vQLRx3Hb0B37lS5y0jDRqRxlBG4wIJHnf9/bgSE2UyipKFA01YtS+npRdTWBUyw== |   integrity sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ== | ||||||
|   dependencies: |   dependencies: | ||||||
|     regenerator-runtime "^0.13.4" |     regenerator-runtime "^0.13.4" | ||||||
| 
 | 
 | ||||||
|  | @ -1390,10 +1390,10 @@ | ||||||
|     lz-string "^1.4.4" |     lz-string "^1.4.4" | ||||||
|     pretty-format "^27.0.2" |     pretty-format "^27.0.2" | ||||||
| 
 | 
 | ||||||
| "@testing-library/jest-dom@^5.14.1": | "@testing-library/jest-dom@^5.15.0": | ||||||
|   version "5.14.1" |   version "5.15.0" | ||||||
|   resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.14.1.tgz#8501e16f1e55a55d675fe73eecee32cdaddb9766" |   resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.15.0.tgz#4f5295dbc476a14aec3b07176434b3d51aae5da7" | ||||||
|   integrity sha512-dfB7HVIgTNCxH22M1+KU6viG5of2ldoA5ly8Ar8xkezKHKXjRvznCdbMbqjYGgO2xjRbwnR+rR8MLUIqF3kKbQ== |   integrity sha512-lOMuQidnL1tWHLEWIhL6UvSZC1Qt3OkNe1khvi2h6xFiqpe5O8arYs46OU0qyUGq0cSTbroQyMktYNXu3a7sAA== | ||||||
|   dependencies: |   dependencies: | ||||||
|     "@babel/runtime" "^7.9.2" |     "@babel/runtime" "^7.9.2" | ||||||
|     "@types/testing-library__jest-dom" "^5.9.1" |     "@types/testing-library__jest-dom" "^5.9.1" | ||||||
|  | @ -1947,10 +1947,10 @@ ansi-escapes@^4.2.1: | ||||||
|   dependencies: |   dependencies: | ||||||
|     type-fest "^0.11.0" |     type-fest "^0.11.0" | ||||||
| 
 | 
 | ||||||
| ansi-html@0.0.7: | ansi-html-community@0.0.8: | ||||||
|   version "0.0.7" |   version "0.0.8" | ||||||
|   resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" |   resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" | ||||||
|   integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= |   integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== | ||||||
| 
 | 
 | ||||||
| ansi-regex@^2.0.0: | ansi-regex@^2.0.0: | ||||||
|   version "2.1.1" |   version "2.1.1" | ||||||
|  | @ -2081,7 +2081,7 @@ array-flatten@^2.1.0: | ||||||
|   resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" |   resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" | ||||||
|   integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== |   integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== | ||||||
| 
 | 
 | ||||||
| array-includes@^3.1.1, array-includes@^3.1.3, array-includes@^3.1.4: | array-includes@^3.1.3, array-includes@^3.1.4: | ||||||
|   version "3.1.4" |   version "3.1.4" | ||||||
|   resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9" |   resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9" | ||||||
|   integrity sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw== |   integrity sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw== | ||||||
|  | @ -2118,15 +2118,14 @@ array.prototype.flat@^1.2.5: | ||||||
|     define-properties "^1.1.3" |     define-properties "^1.1.3" | ||||||
|     es-abstract "^1.19.0" |     es-abstract "^1.19.0" | ||||||
| 
 | 
 | ||||||
| array.prototype.flatmap@^1.2.4: | array.prototype.flatmap@^1.2.5: | ||||||
|   version "1.2.4" |   version "1.2.5" | ||||||
|   resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz#94cfd47cc1556ec0747d97f7c7738c58122004c9" |   resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz#908dc82d8a406930fdf38598d51e7411d18d4446" | ||||||
|   integrity sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q== |   integrity sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA== | ||||||
|   dependencies: |   dependencies: | ||||||
|     call-bind "^1.0.0" |     call-bind "^1.0.0" | ||||||
|     define-properties "^1.1.3" |     define-properties "^1.1.3" | ||||||
|     es-abstract "^1.18.0-next.1" |     es-abstract "^1.19.0" | ||||||
|     function-bind "^1.1.1" |  | ||||||
| 
 | 
 | ||||||
| arrow-key-navigation@^1.2.0: | arrow-key-navigation@^1.2.0: | ||||||
|   version "1.2.0" |   version "1.2.0" | ||||||
|  | @ -2211,10 +2210,10 @@ autoprefixer@^9.8.8: | ||||||
|     postcss "^7.0.32" |     postcss "^7.0.32" | ||||||
|     postcss-value-parser "^4.1.0" |     postcss-value-parser "^4.1.0" | ||||||
| 
 | 
 | ||||||
| axe-core@^4.0.2: | axe-core@^4.3.5: | ||||||
|   version "4.0.2" |   version "4.3.5" | ||||||
|   resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.0.2.tgz#c7cf7378378a51fcd272d3c09668002a4990b1cb" |   resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.3.5.tgz#78d6911ba317a8262bfee292aeafcc1e04b49cc5" | ||||||
|   integrity sha512-arU1h31OGFu+LPrOLGZ7nB45v940NMDMEJeNmbutu57P+UFDVnkZg3e+J1I2HJRZ9hT7gO8J91dn/PMrAiKakA== |   integrity sha512-WKTW1+xAzhMS5dJsxWkliixlO/PqC4VhmO9T4juNYcaTg9jzWiJsou6m5pxWYGfigWbwzJWeFY6z47a+4neRXA== | ||||||
| 
 | 
 | ||||||
| axios@^0.24.0: | axios@^0.24.0: | ||||||
|   version "0.24.0" |   version "0.24.0" | ||||||
|  | @ -3592,10 +3591,10 @@ d@1, d@^1.0.1: | ||||||
|     es5-ext "^0.10.50" |     es5-ext "^0.10.50" | ||||||
|     type "^1.0.1" |     type "^1.0.1" | ||||||
| 
 | 
 | ||||||
| damerau-levenshtein@^1.0.6: | damerau-levenshtein@^1.0.7: | ||||||
|   version "1.0.6" |   version "1.0.7" | ||||||
|   resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz#143c1641cb3d85c60c32329e26899adea8701791" |   resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz#64368003512a1a6992593741a09a9d31a836f55d" | ||||||
|   integrity sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug== |   integrity sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw== | ||||||
| 
 | 
 | ||||||
| data-urls@^2.0.0: | data-urls@^2.0.0: | ||||||
|   version "2.0.0" |   version "2.0.0" | ||||||
|  | @ -3968,12 +3967,13 @@ emittery@^0.8.1: | ||||||
|   resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" |   resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" | ||||||
|   integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== |   integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== | ||||||
| 
 | 
 | ||||||
| emoji-mart@^3.0.1: | "emoji-mart@npm:emoji-mart-lazyload": | ||||||
|   version "3.0.1" |   version "3.0.1-j" | ||||||
|   resolved "https://registry.yarnpkg.com/emoji-mart/-/emoji-mart-3.0.1.tgz#9ce86706e02aea0506345f98464814a662ca54c6" |   resolved "https://registry.npmjs.org/emoji-mart-lazyload/-/emoji-mart-lazyload-3.0.1-j.tgz#87a90d30b79d9145ece078d53e3e683c1a10ce9c" | ||||||
|   integrity sha512-sxpmMKxqLvcscu6mFn9ITHeZNkGzIvD0BSNFE/LJESPbCA8s1jM6bCDPjWbV31xHq7JXaxgpHxLB54RCbBZSlg== |   integrity sha512-0wKF7MR0/iAeCIoiBLY+JjXCugycTgYRC2SL0y9/bjNSQlbeMdzILmPQJAufU/mgLFDUitOvjxLDhOZ9yxZ48g== | ||||||
|   dependencies: |   dependencies: | ||||||
|     "@babel/runtime" "^7.0.0" |     "@babel/runtime" "^7.0.0" | ||||||
|  |     intersection-observer "^0.12.0" | ||||||
|     prop-types "^15.6.0" |     prop-types "^15.6.0" | ||||||
| 
 | 
 | ||||||
| emoji-regex@^7.0.1: | emoji-regex@^7.0.1: | ||||||
|  | @ -3986,10 +3986,10 @@ emoji-regex@^8.0.0: | ||||||
|   resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" |   resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" | ||||||
|   integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== |   integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== | ||||||
| 
 | 
 | ||||||
| emoji-regex@^9.0.0: | emoji-regex@^9.2.2: | ||||||
|   version "9.0.0" |   version "9.2.2" | ||||||
|   resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.0.0.tgz#48a2309cc8a1d2e9d23bc6a67c39b63032e76ea4" |   resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" | ||||||
|   integrity sha512-6p1NII1Vm62wni/VR/cUMauVQoxmLVb9csqQlvLz+hO2gk8U2UYDfXHQSUYIBKmZwAKz867IDqG7B+u0mj+M6w== |   integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== | ||||||
| 
 | 
 | ||||||
| emojis-list@^2.0.0: | emojis-list@^2.0.0: | ||||||
|   version "2.1.0" |   version "2.1.0" | ||||||
|  | @ -4055,7 +4055,7 @@ error-stack-parser@^2.0.6: | ||||||
|   dependencies: |   dependencies: | ||||||
|     stackframe "^1.1.1" |     stackframe "^1.1.1" | ||||||
| 
 | 
 | ||||||
| es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.18.0-next.0, es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2, es-abstract@^1.18.1, es-abstract@^1.18.2, es-abstract@^1.19.0, es-abstract@^1.19.1: | es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.18.0-next.0, es-abstract@^1.18.0-next.1, es-abstract@^1.19.0, es-abstract@^1.19.1: | ||||||
|   version "1.19.1" |   version "1.19.1" | ||||||
|   resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" |   resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" | ||||||
|   integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== |   integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== | ||||||
|  | @ -4212,7 +4212,7 @@ eslint-import-resolver-node@^0.3.6: | ||||||
|     debug "^3.2.7" |     debug "^3.2.7" | ||||||
|     resolve "^1.20.0" |     resolve "^1.20.0" | ||||||
| 
 | 
 | ||||||
| eslint-module-utils@^2.7.0: | eslint-module-utils@^2.7.1: | ||||||
|   version "2.7.1" |   version "2.7.1" | ||||||
|   resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz#b435001c9f8dd4ab7f6d0efcae4b9696d4c24b7c" |   resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz#b435001c9f8dd4ab7f6d0efcae4b9696d4c24b7c" | ||||||
|   integrity sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ== |   integrity sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ== | ||||||
|  | @ -4221,66 +4221,67 @@ eslint-module-utils@^2.7.0: | ||||||
|     find-up "^2.1.0" |     find-up "^2.1.0" | ||||||
|     pkg-dir "^2.0.0" |     pkg-dir "^2.0.0" | ||||||
| 
 | 
 | ||||||
| eslint-plugin-import@~2.25.2: | eslint-plugin-import@~2.25.3: | ||||||
|   version "2.25.2" |   version "2.25.3" | ||||||
|   resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.25.2.tgz#b3b9160efddb702fc1636659e71ba1d10adbe9e9" |   resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.25.3.tgz#a554b5f66e08fb4f6dc99221866e57cfff824766" | ||||||
|   integrity sha512-qCwQr9TYfoBHOFcVGKY9C9unq05uOxxdklmBXLVvcwo68y5Hta6/GzCZEMx2zQiu0woKNEER0LE7ZgaOfBU14g== |   integrity sha512-RzAVbby+72IB3iOEL8clzPLzL3wpDrlwjsTBAQXgyp5SeTqqY+0bFubwuo+y/HLhNZcXV4XqTBO4LGsfyHIDXg== | ||||||
|   dependencies: |   dependencies: | ||||||
|     array-includes "^3.1.4" |     array-includes "^3.1.4" | ||||||
|     array.prototype.flat "^1.2.5" |     array.prototype.flat "^1.2.5" | ||||||
|     debug "^2.6.9" |     debug "^2.6.9" | ||||||
|     doctrine "^2.1.0" |     doctrine "^2.1.0" | ||||||
|     eslint-import-resolver-node "^0.3.6" |     eslint-import-resolver-node "^0.3.6" | ||||||
|     eslint-module-utils "^2.7.0" |     eslint-module-utils "^2.7.1" | ||||||
|     has "^1.0.3" |     has "^1.0.3" | ||||||
|     is-core-module "^2.7.0" |     is-core-module "^2.8.0" | ||||||
|     is-glob "^4.0.3" |     is-glob "^4.0.3" | ||||||
|     minimatch "^3.0.4" |     minimatch "^3.0.4" | ||||||
|     object.values "^1.1.5" |     object.values "^1.1.5" | ||||||
|     resolve "^1.20.0" |     resolve "^1.20.0" | ||||||
|     tsconfig-paths "^3.11.0" |     tsconfig-paths "^3.11.0" | ||||||
| 
 | 
 | ||||||
| eslint-plugin-jsx-a11y@~6.4.1: | eslint-plugin-jsx-a11y@~6.5.1: | ||||||
|   version "6.4.1" |   version "6.5.1" | ||||||
|   resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz#a2d84caa49756942f42f1ffab9002436391718fd" |   resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz#cdbf2df901040ca140b6ec14715c988889c2a6d8" | ||||||
|   integrity sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg== |   integrity sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g== | ||||||
|   dependencies: |   dependencies: | ||||||
|     "@babel/runtime" "^7.11.2" |     "@babel/runtime" "^7.16.3" | ||||||
|     aria-query "^4.2.2" |     aria-query "^4.2.2" | ||||||
|     array-includes "^3.1.1" |     array-includes "^3.1.4" | ||||||
|     ast-types-flow "^0.0.7" |     ast-types-flow "^0.0.7" | ||||||
|     axe-core "^4.0.2" |     axe-core "^4.3.5" | ||||||
|     axobject-query "^2.2.0" |     axobject-query "^2.2.0" | ||||||
|     damerau-levenshtein "^1.0.6" |     damerau-levenshtein "^1.0.7" | ||||||
|     emoji-regex "^9.0.0" |     emoji-regex "^9.2.2" | ||||||
|     has "^1.0.3" |     has "^1.0.3" | ||||||
|     jsx-ast-utils "^3.1.0" |     jsx-ast-utils "^3.2.1" | ||||||
|     language-tags "^1.0.5" |     language-tags "^1.0.5" | ||||||
|  |     minimatch "^3.0.4" | ||||||
| 
 | 
 | ||||||
| eslint-plugin-promise@~5.1.1: | eslint-plugin-promise@~5.1.1: | ||||||
|   version "5.1.1" |   version "5.1.1" | ||||||
|   resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-5.1.1.tgz#9674d11c056d1bafac38e4a3a9060be740988d90" |   resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-5.1.1.tgz#9674d11c056d1bafac38e4a3a9060be740988d90" | ||||||
|   integrity sha512-XgdcdyNzHfmlQyweOPTxmc7pIsS6dE4MvwhXWMQ2Dxs1XAL2GJDilUsjWen6TWik0aSI+zD/PqocZBblcm9rdA== |   integrity sha512-XgdcdyNzHfmlQyweOPTxmc7pIsS6dE4MvwhXWMQ2Dxs1XAL2GJDilUsjWen6TWik0aSI+zD/PqocZBblcm9rdA== | ||||||
| 
 | 
 | ||||||
| eslint-plugin-react@~7.26.1: | eslint-plugin-react@~7.27.0: | ||||||
|   version "7.26.1" |   version "7.27.0" | ||||||
|   resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.26.1.tgz#41bcfe3e39e6a5ac040971c1af94437c80daa40e" |   resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.27.0.tgz#f952c76517a3915b81c7788b220b2b4c96703124" | ||||||
|   integrity sha512-Lug0+NOFXeOE+ORZ5pbsh6mSKjBKXDXItUD2sQoT+5Yl0eoT82DqnXeTMfUare4QVCn9QwXbfzO/dBLjLXwVjQ== |   integrity sha512-0Ut+CkzpppgFtoIhdzi2LpdpxxBvgFf99eFqWxJnUrO7mMe0eOiNpou6rvNYeVVV6lWZvTah0BFne7k5xHjARg== | ||||||
|   dependencies: |   dependencies: | ||||||
|     array-includes "^3.1.3" |     array-includes "^3.1.4" | ||||||
|     array.prototype.flatmap "^1.2.4" |     array.prototype.flatmap "^1.2.5" | ||||||
|     doctrine "^2.1.0" |     doctrine "^2.1.0" | ||||||
|     estraverse "^5.2.0" |     estraverse "^5.3.0" | ||||||
|     jsx-ast-utils "^2.4.1 || ^3.0.0" |     jsx-ast-utils "^2.4.1 || ^3.0.0" | ||||||
|     minimatch "^3.0.4" |     minimatch "^3.0.4" | ||||||
|     object.entries "^1.1.4" |     object.entries "^1.1.5" | ||||||
|     object.fromentries "^2.0.4" |     object.fromentries "^2.0.5" | ||||||
|     object.hasown "^1.0.0" |     object.hasown "^1.1.0" | ||||||
|     object.values "^1.1.4" |     object.values "^1.1.5" | ||||||
|     prop-types "^15.7.2" |     prop-types "^15.7.2" | ||||||
|     resolve "^2.0.0-next.3" |     resolve "^2.0.0-next.3" | ||||||
|     semver "^6.3.0" |     semver "^6.3.0" | ||||||
|     string.prototype.matchall "^4.0.5" |     string.prototype.matchall "^4.0.6" | ||||||
| 
 | 
 | ||||||
| eslint-scope@^4.0.3: | eslint-scope@^4.0.3: | ||||||
|   version "4.0.3" |   version "4.0.3" | ||||||
|  | @ -4441,10 +4442,10 @@ estraverse@^4.1.1, estraverse@^4.2.0: | ||||||
|   resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" |   resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" | ||||||
|   integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== |   integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== | ||||||
| 
 | 
 | ||||||
| estraverse@^5.1.0, estraverse@^5.2.0: | estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: | ||||||
|   version "5.2.0" |   version "5.3.0" | ||||||
|   resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" |   resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" | ||||||
|   integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== |   integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== | ||||||
| 
 | 
 | ||||||
| esutils@^2.0.2: | esutils@^2.0.2: | ||||||
|   version "2.0.3" |   version "2.0.3" | ||||||
|  | @ -5797,7 +5798,7 @@ is-color-stop@^1.0.0: | ||||||
|     rgb-regex "^1.0.1" |     rgb-regex "^1.0.1" | ||||||
|     rgba-regex "^1.0.0" |     rgba-regex "^1.0.0" | ||||||
| 
 | 
 | ||||||
| is-core-module@^2.2.0, is-core-module@^2.7.0: | is-core-module@^2.2.0, is-core-module@^2.8.0: | ||||||
|   version "2.8.0" |   version "2.8.0" | ||||||
|   resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" |   resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" | ||||||
|   integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== |   integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== | ||||||
|  | @ -6719,13 +6720,13 @@ jsonpointer@^4.0.0: | ||||||
|   resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.1.0.tgz#501fb89986a2389765ba09e6053299ceb4f2c2cc" |   resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.1.0.tgz#501fb89986a2389765ba09e6053299ceb4f2c2cc" | ||||||
|   integrity sha512-CXcRvMyTlnR53xMcKnuMzfCA5i/nfblTnnr74CZb6C4vG39eu6w51t7nKmU5MfLfbTgGItliNyjO/ciNPDqClg== |   integrity sha512-CXcRvMyTlnR53xMcKnuMzfCA5i/nfblTnnr74CZb6C4vG39eu6w51t7nKmU5MfLfbTgGItliNyjO/ciNPDqClg== | ||||||
| 
 | 
 | ||||||
| "jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.1.0: | "jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.2.1: | ||||||
|   version "3.1.0" |   version "3.2.1" | ||||||
|   resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.1.0.tgz#642f1d7b88aa6d7eb9d8f2210e166478444fa891" |   resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz#720b97bfe7d901b927d87c3773637ae8ea48781b" | ||||||
|   integrity sha512-d4/UOjg+mxAWxCiF0c5UTSwyqbchkbqCvK87aBovhnh8GtysTjWmgC63tY0cJx/HzGgm9qnA147jVBdpOiQ2RA== |   integrity sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA== | ||||||
|   dependencies: |   dependencies: | ||||||
|     array-includes "^3.1.1" |     array-includes "^3.1.3" | ||||||
|     object.assign "^4.1.1" |     object.assign "^4.1.2" | ||||||
| 
 | 
 | ||||||
| keycode@^2.1.7: | keycode@^2.1.7: | ||||||
|   version "2.2.0" |   version "2.2.0" | ||||||
|  | @ -7546,7 +7547,7 @@ object-visit@^1.0.0: | ||||||
|   dependencies: |   dependencies: | ||||||
|     isobject "^3.0.0" |     isobject "^3.0.0" | ||||||
| 
 | 
 | ||||||
| object.assign@^4.1.0, object.assign@^4.1.1: | object.assign@^4.1.0: | ||||||
|   version "4.1.1" |   version "4.1.1" | ||||||
|   resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.1.tgz#303867a666cdd41936ecdedfb1f8f3e32a478cdd" |   resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.1.tgz#303867a666cdd41936ecdedfb1f8f3e32a478cdd" | ||||||
|   integrity sha512-VT/cxmx5yaoHSOTSyrCygIDFco+RsibY2NM0a4RdEeY/4KgqezwFtK1yr3U67xYhqJSlASm2pKhLVzPj2lr4bA== |   integrity sha512-VT/cxmx5yaoHSOTSyrCygIDFco+RsibY2NM0a4RdEeY/4KgqezwFtK1yr3U67xYhqJSlASm2pKhLVzPj2lr4bA== | ||||||
|  | @ -7566,24 +7567,23 @@ object.assign@^4.1.2: | ||||||
|     has-symbols "^1.0.1" |     has-symbols "^1.0.1" | ||||||
|     object-keys "^1.1.1" |     object-keys "^1.1.1" | ||||||
| 
 | 
 | ||||||
| object.entries@^1.1.4: | object.entries@^1.1.5: | ||||||
|   version "1.1.4" |   version "1.1.5" | ||||||
|   resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.4.tgz#43ccf9a50bc5fd5b649d45ab1a579f24e088cafd" |   resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.5.tgz#e1acdd17c4de2cd96d5a08487cfb9db84d881861" | ||||||
|   integrity sha512-h4LWKWE+wKQGhtMjZEBud7uLGhqyLwj8fpHOarZhD2uY3C9cRtk57VQ89ke3moByLXMedqs3XCHzyb4AmA2DjA== |   integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g== | ||||||
|   dependencies: |   dependencies: | ||||||
|     call-bind "^1.0.2" |     call-bind "^1.0.2" | ||||||
|     define-properties "^1.1.3" |     define-properties "^1.1.3" | ||||||
|     es-abstract "^1.18.2" |     es-abstract "^1.19.1" | ||||||
| 
 | 
 | ||||||
| object.fromentries@^2.0.4: | object.fromentries@^2.0.5: | ||||||
|   version "2.0.4" |   version "2.0.5" | ||||||
|   resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.4.tgz#26e1ba5c4571c5c6f0890cef4473066456a120b8" |   resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.5.tgz#7b37b205109c21e741e605727fe8b0ad5fa08251" | ||||||
|   integrity sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ== |   integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw== | ||||||
|   dependencies: |   dependencies: | ||||||
|     call-bind "^1.0.2" |     call-bind "^1.0.2" | ||||||
|     define-properties "^1.1.3" |     define-properties "^1.1.3" | ||||||
|     es-abstract "^1.18.0-next.2" |     es-abstract "^1.19.1" | ||||||
|     has "^1.0.3" |  | ||||||
| 
 | 
 | ||||||
| object.getownpropertydescriptors@^2.1.0: | object.getownpropertydescriptors@^2.1.0: | ||||||
|   version "2.1.0" |   version "2.1.0" | ||||||
|  | @ -7593,13 +7593,13 @@ object.getownpropertydescriptors@^2.1.0: | ||||||
|     define-properties "^1.1.3" |     define-properties "^1.1.3" | ||||||
|     es-abstract "^1.17.0-next.1" |     es-abstract "^1.17.0-next.1" | ||||||
| 
 | 
 | ||||||
| object.hasown@^1.0.0: | object.hasown@^1.1.0: | ||||||
|   version "1.0.0" |   version "1.1.0" | ||||||
|   resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.0.0.tgz#bdbade33cfacfb25d7f26ae2b6cb870bf99905c2" |   resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.0.tgz#7232ed266f34d197d15cac5880232f7a4790afe5" | ||||||
|   integrity sha512-qYMF2CLIjxxLGleeM0jrcB4kiv3loGVAjKQKvH8pSU/i2VcRRvUNmxbD+nEMmrXRfORhuVJuH8OtSYCZoue3zA== |   integrity sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg== | ||||||
|   dependencies: |   dependencies: | ||||||
|     define-properties "^1.1.3" |     define-properties "^1.1.3" | ||||||
|     es-abstract "^1.18.1" |     es-abstract "^1.19.1" | ||||||
| 
 | 
 | ||||||
| object.pick@^1.3.0: | object.pick@^1.3.0: | ||||||
|   version "1.3.0" |   version "1.3.0" | ||||||
|  | @ -7608,7 +7608,7 @@ object.pick@^1.3.0: | ||||||
|   dependencies: |   dependencies: | ||||||
|     isobject "^3.0.1" |     isobject "^3.0.1" | ||||||
| 
 | 
 | ||||||
| object.values@^1.1.0, object.values@^1.1.4, object.values@^1.1.5: | object.values@^1.1.0, object.values@^1.1.5: | ||||||
|   version "1.1.5" |   version "1.1.5" | ||||||
|   resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" |   resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" | ||||||
|   integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== |   integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== | ||||||
|  | @ -8916,10 +8916,10 @@ react-router@^4.3.1: | ||||||
|     prop-types "^15.6.1" |     prop-types "^15.6.1" | ||||||
|     warning "^4.0.1" |     warning "^4.0.1" | ||||||
| 
 | 
 | ||||||
| react-select@^5.1.0: | react-select@^5.2.1: | ||||||
|   version "5.1.0" |   version "5.2.1" | ||||||
|   resolved "https://registry.yarnpkg.com/react-select/-/react-select-5.1.0.tgz#ac384c8e25ba6f03126026192b2bdad0f53fbf50" |   resolved "https://registry.yarnpkg.com/react-select/-/react-select-5.2.1.tgz#416c25c6b79b94687702374e019c4f2ed9d159d6" | ||||||
|   integrity sha512-SkEBD1AYsSXrIdNj5HBt7+Ehe+jxdiB448J0atJqR6lE3l/GcFlRf4JYB3NlHe/02jrW4AnIQLo1t0IqWrxXOw== |   integrity sha512-OOyNzfKrhOcw/BlembyGWgdlJ2ObZRaqmQppPFut1RptJO423j+Y+JIsmxkvsZ4D/3CpOmwIlCvWbbAWEdh12A== | ||||||
|   dependencies: |   dependencies: | ||||||
|     "@babel/runtime" "^7.12.0" |     "@babel/runtime" "^7.12.0" | ||||||
|     "@emotion/cache" "^11.4.0" |     "@emotion/cache" "^11.4.0" | ||||||
|  | @ -9266,10 +9266,10 @@ requires-port@^1.0.0: | ||||||
|   resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" |   resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" | ||||||
|   integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= |   integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= | ||||||
| 
 | 
 | ||||||
| reselect@^4.1.1: | reselect@^4.1.2: | ||||||
|   version "4.1.1" |   version "4.1.2" | ||||||
|   resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.1.tgz#7e2c110efbf3d70df3482604bcf2bc0ab571346a" |   resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.2.tgz#7bf642992d143d4f3b0f2dca8aa52018808a1d51" | ||||||
|   integrity sha512-Jjt8Us6hAWJpjucyladHvUGR+q1mHHgWtGDXlhvvKyNyIeQ3bjuWLDX0bsTLhbm/gd4iXEACBlODUHBlLWiNnA== |   integrity sha512-wg60ebcPOtxcptIUfrr7Jt3h4BR86cCW3R7y4qt65lnNb4yz4QgrXcbSioVsIOYguyz42+XTHIyJ5TEruzkFgQ== | ||||||
| 
 | 
 | ||||||
| resolve-cwd@^2.0.0: | resolve-cwd@^2.0.0: | ||||||
|   version "2.0.0" |   version "2.0.0" | ||||||
|  | @ -10064,14 +10064,14 @@ string-width@^4.1.0, string-width@^4.2.0: | ||||||
|     is-fullwidth-code-point "^3.0.0" |     is-fullwidth-code-point "^3.0.0" | ||||||
|     strip-ansi "^6.0.0" |     strip-ansi "^6.0.0" | ||||||
| 
 | 
 | ||||||
| string.prototype.matchall@^4.0.5: | string.prototype.matchall@^4.0.6: | ||||||
|   version "4.0.5" |   version "4.0.6" | ||||||
|   resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.5.tgz#59370644e1db7e4c0c045277690cf7b01203c4da" |   resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz#5abb5dabc94c7b0ea2380f65ba610b3a544b15fa" | ||||||
|   integrity sha512-Z5ZaXO0svs0M2xd/6By3qpeKpLKd9mO4v4q3oMEQrk8Ck4xOD5d5XeBOOjGrmVZZ/AHB1S0CgG4N5r1G9N3E2Q== |   integrity sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg== | ||||||
|   dependencies: |   dependencies: | ||||||
|     call-bind "^1.0.2" |     call-bind "^1.0.2" | ||||||
|     define-properties "^1.1.3" |     define-properties "^1.1.3" | ||||||
|     es-abstract "^1.18.2" |     es-abstract "^1.19.1" | ||||||
|     get-intrinsic "^1.1.1" |     get-intrinsic "^1.1.1" | ||||||
|     has-symbols "^1.0.2" |     has-symbols "^1.0.2" | ||||||
|     internal-slot "^1.0.3" |     internal-slot "^1.0.3" | ||||||
|  | @ -11029,12 +11029,12 @@ webpack-dev-middleware@^3.7.2: | ||||||
|     range-parser "^1.2.1" |     range-parser "^1.2.1" | ||||||
|     webpack-log "^2.0.0" |     webpack-log "^2.0.0" | ||||||
| 
 | 
 | ||||||
| webpack-dev-server@^3.11.2: | webpack-dev-server@^3.11.3: | ||||||
|   version "3.11.2" |   version "3.11.3" | ||||||
|   resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz#695ebced76a4929f0d5de7fd73fafe185fe33708" |   resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz#8c86b9d2812bf135d3c9bce6f07b718e30f7c3d3" | ||||||
|   integrity sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ== |   integrity sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA== | ||||||
|   dependencies: |   dependencies: | ||||||
|     ansi-html "0.0.7" |     ansi-html-community "0.0.8" | ||||||
|     bonjour "^3.5.0" |     bonjour "^3.5.0" | ||||||
|     chokidar "^2.1.8" |     chokidar "^2.1.8" | ||||||
|     compression "^1.7.4" |     compression "^1.7.4" | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue