diff --git a/.bundler-audit.yml b/.bundler-audit.yml
new file mode 100644
index 00000000..cf3af0b3
--- /dev/null
+++ b/.bundler-audit.yml
@@ -0,0 +1,3 @@
+---
+ignore:
+- "CVE-2024-6531"
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 00000000..b0bc1626
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,11 @@
+root = true
+
+[*]
+end_of_line = lf
+insert_final_newline = true
+charset = utf-8
+indent_style = space
+indent_size = 2
+
+[Makefile]
+indent_style = tab
diff --git a/.env.example b/.env
similarity index 86%
rename from .env.example
rename to .env
index f3cf48d9..fe503b11 100644
--- a/.env.example
+++ b/.env
@@ -1,8 +1,8 @@
+NODE_OPTIONS=--openssl-legacy-provider
# pwgen -1 32
RAILS_MASTER_KEY=11111111111111111111111111111111
RAILS_GROUPS=assets
-DELEGATE=athshe.sutty.nl
-HAINISH=../haini.sh/haini.sh
+DELEGATE=panel.sutty.nl
DATABASE_URL=postgres://suttier@postgresql.sutty.local/sutty
RAILS_ENV=development
IMAP_SERVER=
@@ -37,3 +37,7 @@ AIRBRAKE_API_KEY=
GITLAB_URI=https://0xacab.org
GITLAB_PROJECT=
GITLAB_TOKEN=
+PGVER=15
+PGPID=/run/postgresql.pid
+PANEL_ACTOR_MENTION=@sutty@sutty.nl
+PANEL_ACTOR_SITE_ID=1
diff --git a/.env.development b/.env.development
new file mode 100644
index 00000000..df2788b0
--- /dev/null
+++ b/.env.development
@@ -0,0 +1 @@
+HAINISH=../haini.sh/haini.sh
diff --git a/.gitignore b/.gitignore
index e6f2adbb..2bdf8c49 100644
--- a/.gitignore
+++ b/.gitignore
@@ -28,7 +28,7 @@
/data/*
/_storage/*
-.env*
+.env.*
# Ignore master key for decrypting credentials and more.
/config/master.key
@@ -48,3 +48,7 @@ yarn-debug.log*
/yarn-error.log
yarn-debug.log*
.yarn-integrity
+
+/.task
+/.yardoc
+/public/doc/
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index f8994356..c72a632d 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,33 +1,127 @@
-image: "gitea.nulo.in/sutty/panel:3.14.10-2.7.8-panel.sutty.nl"
+stages:
+- "test"
+- "deploy"
+.apk-add: &apk-add
+- "apk add go-task diffutils gitlab_ci_log_section"
+.disable-hainish: &disable-hainish
+- "rm -f .env.development"
+.cache-ruby: &cache-ruby
+- paths:
+ - "vendor/ruby"
+ - ".bundle"
+ key:
+ files:
+ - "Gemfile.lock"
+.cache-node: &cache-node
+- paths:
+ - "node_modules"
+ key:
+ files:
+ - "yarn.lock"
+.cache-task: &cache-task
+- paths:
+ - ".task"
+image: "registry.0xacab.org/sutty/sutty:3.17.3-3.1.4-rails"
variables:
RAILS_ENV: "production"
LC_ALL: "C.UTF-8"
+ HAINISH: ""
cache:
- paths:
- - "vendor/ruby"
-assets:
- stage: "build"
- rules:
- - if: "$CI_COMMIT_BRANCH == \"panel.sutty.nl\""
- - if: "$CI_COMMIT_BRANCH"
- changes:
- compare_to: "refs/heads/rails"
- paths:
- - "package.json"
- - "app/javascript/**/*"
- - "app/assets/**/*"
+push:
+ stage: "test"
+ only:
+ - "rails"
+ except:
+ - "schedules"
before_script:
- "git config --global user.email \"${GIT_USER_EMAIL:-$GITLAB_USER_EMAIL}\""
- "git config --global user.name \"${GIT_USER_NAME:-$GITLAB_USER_NAME}\""
- - "git remote set-url --push origin \"https://${GITLAB_USERNAME}:${GITLAB_TOKEN}@${CI_SERVER_HOST}/${CI_PROJECT_PATH}.git\""
- - "apk add python2 dotenv brotli"
- - "mv config/credentials.yml.enc.ci config/credentials.yml.enc"
- - "cp .env.example .env"
- - "dotenv bundle install --path=vendor"
+ - "git remote set-url --push origin \"https://GITLAB_CI_PUSH_TOKEN:${GITLAB_CI_PUSH_TOKEN}@${CI_SERVER_HOST}/${CI_PROJECT_PATH}.git\""
script:
- - "dotenv RAILS_ENV=production bundle exec rails webpacker:clobber"
- - "dotenv RAILS_ENV=production bundle exec rails assets:precompile"
- - "dotenv RAILS_ENV=production bundle exec rails assets:clean"
+ - "git commit --allow-empty -m \"ci: test [skip ci]\""
+ - "git push -o ci.skip origin HEAD:${CI_COMMIT_BRANCH}"
+assets:
+ stage: "deploy"
+ only:
+ - "rails"
+ - "production.panel.sutty.nl"
+ - "panel.sutty.nl"
+ except:
+ - "schedules"
+ cache:
+ - *cache-ruby
+ - *cache-node
+ - *cache-task
+ before_script:
+ - *apk-add
+ - "gitlab_ci_log_section --name git --header=\"Configuring git\""
+ - "git config --global user.email \"${GIT_USER_EMAIL:-$GITLAB_USER_EMAIL}\""
+ - "git config --global user.name \"${GIT_USER_NAME:-$GITLAB_USER_NAME}\""
+ - "git remote set-url --push origin \"https://GITLAB_CI_PUSH_TOKEN:${GITLAB_CI_PUSH_TOKEN}@${CI_SERVER_HOST}/${CI_PROJECT_PATH}.git\""
+ - "gitlab_ci_log_section --name git --end"
+ - "gitlab_ci_log_section --name apk --header=\"Installing dependencies\""
+ - "apk add brotli"
+ - *disable-hainish
+ - "gitlab_ci_log_section --name apk --end"
+ script:
+ - "gitlab_ci_log_section --name assets --header=\"Building\""
+ - "go-task assets"
after_script:
- "git add public && git commit -m \"ci: assets [skip ci]\""
- - "git push -o ci.skip"
+ - "git push -o ci.skip origin HEAD:${CI_COMMIT_BRANCH}"
+gem-audit:
+ stage: "test"
+ only:
+ - "schedules"
+ cache:
+ - *cache-ruby
+ before_script:
+ - *apk-add
+ - *disable-hainish
+ script:
+ - "go-task gem-audit"
+node-audit:
+ stage: "test"
+ only:
+ - "schedules"
+ cache:
+ - *cache-node
+ before_script:
+ - *apk-add
+ - *disable-hainish
+ script:
+ - "apk add go-task"
+ - "go-task node-audit"
+brakeman:
+ stage: "test"
+ cache:
+ - *cache-ruby
+ rules:
+ - if: "$CI_PIPELINE_SOURCE == 'merge_request_event'"
+ before_script:
+ - *apk-add
+ - *disable-hainish
+ script:
+ - "go-task bundle -- exec brakeman"
+rubocop:
+ stage: "test"
+ cache:
+ - *cache-ruby
+ rules:
+ - if: "$CI_PIPELINE_SOURCE == 'merge_request_event'"
+ before_script:
+ - *apk-add
+ - *disable-hainish
+ script:
+ - "go-task rubocop"
+haml:
+ stage: "test"
+ cache:
+ - *cache-ruby
+ rules:
+ - if: "$CI_PIPELINE_SOURCE == 'merge_request_event'"
+ before_script:
+ - *apk-add
+ - *disable-hainish
+ script:
+ - "go-task haml-lint"
diff --git a/.woodpecker.yml b/.woodpecker.yml
index b5806bf3..aff0af52 100644
--- a/.woodpecker.yml
+++ b/.woodpecker.yml
@@ -19,7 +19,6 @@ pipeline:
when:
branch:
- "rails"
- - "panel.sutty.nl"
- "17.3.alpine.panel.sutty.nl"
event: "push"
path:
@@ -27,57 +26,8 @@ pipeline:
- "Dockerfile"
- ".dockerignore"
- ".woodpecker.yml"
- assets:
- image: "gitea.nulo.in/sutty/panel:3.14.10-2.7.8"
- commands:
- - "apk add python2 dotenv openssh-client brotli"
- - "install -d -m 700 ~/.ssh/"
- - "echo \"$${KNOWN_HOSTS}\" | base64 -d >> ~/.ssh/known_hosts"
- - "chmod 600 ~/.ssh/known_hosts"
- - "eval $(ssh-agent -s)"
- - "echo \"$${SSH_KEY}\" | base64 -d | ssh-add -"
- - "ssh $${ORIGIN%:*}"
- - "git config user.name Woodpecker"
- - "git config user.email ci@sutty.coop.ar"
- - "git remote add upstream $${ORIGIN}"
- - "git checkout -B ${CI_COMMIT_BRANCH}"
- - "mv config/credentials.yml.enc.ci config/credentials.yml.enc"
- - "yarn"
- - "cp .env.example .env"
- - "dotenv bundle install --path=vendor"
- - "dotenv RAILS_ENV=production bundle exec rails webpacker:clobber"
- - "dotenv RAILS_ENV=production bundle exec rails assets:precompile"
- - "dotenv RAILS_ENV=production bundle exec rails assets:clean"
- - "find public -type f -print0 | xargs -r0 brotli -k9f"
- - "git add public && git commit -m \"ci: assets [skip ci]\""
- - "git pull upstream ${CI_COMMIT_BRANCH}"
- - "git push upstream ${CI_COMMIT_BRANCH}"
- environment:
- - "RUBY_VERSION=${RUBY_VERSION}"
- - "GEMS_SOURCE=https://14.3.alpine.gems.sutty.nl"
- secrets:
- - "SSH_KEY"
- - "KNOWN_HOSTS"
- - "ORIGIN"
- when:
- branch:
- - "rails"
- - "panel.sutty.nl"
- path:
- include:
- - "app/assets/**/*"
- - "app/javascript/**/*"
- - "package.json"
- - "yarn.lock"
- matrix:
- ALPINE_VERSION: "3.14.10"
- RUBY_VERSION: "2.7"
- RUBY_PATCH: "8"
matrix:
include:
- ALPINE_VERSION: "3.17.3"
RUBY_VERSION: "3.1"
RUBY_PATCH: "4"
- - ALPINE_VERSION: "3.14.10"
- RUBY_VERSION: "2.7"
- RUBY_PATCH: "8"
diff --git a/Dockerfile b/Dockerfile
index e0f1dc9f..394a81e5 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,6 +1,6 @@
-ARG RUBY_VERSION=2.7
-ARG RUBY_PATCH=6
-ARG ALPINE_VERSION=3.13.10
+ARG RUBY_VERSION=3.1
+ARG RUBY_PATCH=4
+ARG ALPINE_VERSION=3.17.3
ARG BASE_IMAGE=registry.nulo.in/sutty/rails
FROM ${BASE_IMAGE}:${ALPINE_VERSION}-${RUBY_VERSION}.${RUBY_PATCH}
ARG PANDOC_VERSION=2.18
diff --git a/Gemfile b/Gemfile
index dd880219..5d673dd0 100644
--- a/Gemfile
+++ b/Gemfile
@@ -1,11 +1,9 @@
# frozen_string_literal: true
-source ENV.fetch('GEMS_SOURCE', 'https://17.3.alpine.gems.sutty.nl')
+source ENV.fetch('GEMS_SOURCE', 'https://gems.sutty.nl')
ruby "~> #{ENV.fetch('RUBY_VERSION', '3.1')}"
-gem 'dotenv-rails', require: 'dotenv/rails-now'
-
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 6.1.0'
# Use Puma as the app server
@@ -39,8 +37,9 @@ gem 'commonmarker'
gem 'devise'
gem 'devise-i18n'
gem 'devise_invitable'
-gem 'distributed-press-api-client', '~> 0.2.3'
-gem 'njalla-api-client', '~> 0.2.0'
+gem 'redis-client'
+gem 'hiredis-client'
+gem 'distributed-press-api-client', '~> 0.4.1'
gem 'email_address', git: 'https://github.com/fauno/email_address', branch: 'i18n'
gem 'exception_notification'
gem 'fast_blank'
@@ -53,7 +52,6 @@ gem 'inline_svg'
gem 'httparty'
gem 'safe_yaml', require: false
gem 'jekyll', '~> 4.2.0'
-gem 'jekyll-data'
gem 'jekyll-commonmark', '~> 1.4.0'
gem 'jekyll-images'
gem 'jekyll-include-cache'
@@ -69,7 +67,9 @@ gem 'redis', '~> 4.0', require: %w[redis redis/connection/hiredis]
gem 'redis-rails'
gem 'rollups', git: 'https://github.com/fauno/rollup.git', branch: 'update'
gem 'rubyzip'
-gem 'rugged'
+gem 'ruby-brs'
+gem 'rugged', '1.5.0.1'
+gem 'git_clone_url'
gem 'concurrent-ruby-ext'
gem 'que'
gem 'symbol-fstring', require: 'fstring/all'
@@ -78,6 +78,14 @@ gem 'validates_hostname'
gem 'webpacker'
gem 'yaml_db', git: 'https://0xacab.org/sutty/yaml_db.git'
gem 'kaminari'
+gem 'device_detector'
+gem 'htmlbeautifier'
+gem 'dry-schema'
+gem 'rubanok'
+
+gem 'after_commit_everywhere', '~> 1.0'
+gem 'aasm'
+gem 'que-web'
# database
gem 'hairtrigger'
@@ -108,6 +116,7 @@ end
group :development, :test do
gem 'derailed_benchmarks'
+ gem 'dotenv-rails'
gem 'pry'
# Adds support for Capybara system testing and selenium driver
gem 'capybara', '~> 2.13'
@@ -116,7 +125,9 @@ group :development, :test do
end
group :development do
+ gem 'yard'
gem 'brakeman'
+ gem 'bundler-audit'
gem 'haml-lint', require: false
gem 'letter_opener'
gem 'listen'
diff --git a/Gemfile.lock b/Gemfile.lock
index f71053d7..775332ec 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -25,75 +25,83 @@ GIT
groupdate (>= 5.2)
GEM
- remote: https://17.3.alpine.gems.sutty.nl/
+ remote: https://gems.sutty.nl/
specs:
- actioncable (6.1.7.3)
- actionpack (= 6.1.7.3)
- activesupport (= 6.1.7.3)
+ aasm (5.5.0)
+ concurrent-ruby (~> 1.0)
+ actioncable (6.1.7.8)
+ actionpack (= 6.1.7.8)
+ activesupport (= 6.1.7.8)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
- actionmailbox (6.1.7.3)
- actionpack (= 6.1.7.3)
- activejob (= 6.1.7.3)
- activerecord (= 6.1.7.3)
- activestorage (= 6.1.7.3)
- activesupport (= 6.1.7.3)
+ actionmailbox (6.1.7.8)
+ actionpack (= 6.1.7.8)
+ activejob (= 6.1.7.8)
+ activerecord (= 6.1.7.8)
+ activestorage (= 6.1.7.8)
+ activesupport (= 6.1.7.8)
mail (>= 2.7.1)
- actionmailer (6.1.7.3)
- actionpack (= 6.1.7.3)
- actionview (= 6.1.7.3)
- activejob (= 6.1.7.3)
- activesupport (= 6.1.7.3)
+ actionmailer (6.1.7.8)
+ actionpack (= 6.1.7.8)
+ actionview (= 6.1.7.8)
+ activejob (= 6.1.7.8)
+ activesupport (= 6.1.7.8)
mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 2.0)
- actionpack (6.1.7.3)
- actionview (= 6.1.7.3)
- activesupport (= 6.1.7.3)
+ actionpack (6.1.7.8)
+ actionview (= 6.1.7.8)
+ activesupport (= 6.1.7.8)
rack (~> 2.0, >= 2.0.9)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.2.0)
- actiontext (6.1.7.3)
- actionpack (= 6.1.7.3)
- activerecord (= 6.1.7.3)
- activestorage (= 6.1.7.3)
- activesupport (= 6.1.7.3)
+ actiontext (6.1.7.8)
+ actionpack (= 6.1.7.8)
+ activerecord (= 6.1.7.8)
+ activestorage (= 6.1.7.8)
+ activesupport (= 6.1.7.8)
nokogiri (>= 1.8.5)
- actionview (6.1.7.3)
- activesupport (= 6.1.7.3)
+ actionview (6.1.7.8)
+ activesupport (= 6.1.7.8)
builder (~> 3.1)
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.1, >= 1.2.0)
- activejob (6.1.7.3)
- activesupport (= 6.1.7.3)
+ activejob (6.1.7.8)
+ activesupport (= 6.1.7.8)
globalid (>= 0.3.6)
- activemodel (6.1.7.3)
- activesupport (= 6.1.7.3)
- activerecord (6.1.7.3)
- activemodel (= 6.1.7.3)
- activesupport (= 6.1.7.3)
- activestorage (6.1.7.3)
- actionpack (= 6.1.7.3)
- activejob (= 6.1.7.3)
- activerecord (= 6.1.7.3)
- activesupport (= 6.1.7.3)
+ activemodel (6.1.7.8)
+ activesupport (= 6.1.7.8)
+ activerecord (6.1.7.8)
+ activemodel (= 6.1.7.8)
+ activesupport (= 6.1.7.8)
+ activestorage (6.1.7.8)
+ actionpack (= 6.1.7.8)
+ activejob (= 6.1.7.8)
+ activerecord (= 6.1.7.8)
+ activesupport (= 6.1.7.8)
marcel (~> 1.0)
mini_mime (>= 1.1.0)
- activesupport (6.1.7.3)
+ activesupport (6.1.7.8)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 1.6, < 2)
minitest (>= 5.1)
tzinfo (~> 2.0)
zeitwerk (~> 2.3)
- addressable (2.8.4)
+ addressable (2.8.6)
public_suffix (>= 2.0.2, < 6.0)
+ adsp (1.0.10)
+ after_commit_everywhere (1.4.0)
+ activerecord (>= 4.2)
+ activesupport
ast (2.4.2)
autoprefixer-rails (10.4.13.0)
execjs (~> 2)
- bcrypt (3.1.19-x86_64-linux-musl)
+ base64 (0.2.0)
+ bcrypt (3.1.20-x86_64-linux-musl)
bcrypt_pbkdf (1.1.0-x86_64-linux-musl)
benchmark-ips (2.12.0)
+ bigdecimal (3.1.1)
bindex (0.8.1-x86_64-linux-musl)
blazer (2.6.5)
activerecord (>= 5)
@@ -104,8 +112,12 @@ GEM
autoprefixer-rails (>= 9.1.0)
popper_js (>= 1.16.1, < 2)
sassc-rails (>= 2.0.0)
- brakeman (5.4.1)
- builder (3.2.4)
+ brakeman (6.1.1)
+ racc
+ builder (3.3.0)
+ bundler-audit (0.9.1)
+ bundler (>= 1.2.0, < 3)
+ thor (~> 1.0)
capybara (2.18.0)
addressable
mini_mime (>= 0.1.3)
@@ -121,6 +133,7 @@ GEM
concurrent-ruby (1.2.2)
concurrent-ruby-ext (1.2.2-x86_64-linux-musl)
concurrent-ruby (= 1.2.2)
+ connection_pool (2.4.1)
crass (1.0.6)
database_cleaner (2.0.2)
database_cleaner-active_record (>= 2, < 3)
@@ -128,7 +141,7 @@ GEM
activerecord (>= 5.a)
database_cleaner-core (~> 2.0.0)
database_cleaner-core (2.0.1)
- date (3.3.3-x86_64-linux-musl)
+ date (3.3.4-x86_64-linux-musl)
dead_end (4.0.0)
derailed_benchmarks (2.1.2)
benchmark-ips (~> 2)
@@ -142,7 +155,8 @@ GEM
rake (> 10, < 14)
ruby-statistics (>= 2.1)
thor (>= 0.19, < 2)
- devise (4.9.2)
+ device_detector (1.1.2)
+ devise (4.9.3)
bcrypt (~> 3.0)
orm_adapter (~> 0.1)
railties (>= 4.1.0)
@@ -150,14 +164,15 @@ GEM
warden (~> 1.2.3)
devise-i18n (1.11.0)
devise (>= 4.9.0)
- devise_invitable (2.0.8)
+ devise_invitable (2.0.9)
actionmailer (>= 5.0)
devise (>= 4.6)
- distributed-press-api-client (0.2.4)
+ distributed-press-api-client (0.4.1)
addressable (~> 2.3, >= 2.3.0)
climate_control
dry-schema
httparty (~> 0.18)
+ httparty-cache (~> 0.0.6)
json (~> 2.1, >= 2.1.0)
jwt (~> 2.6.0)
dotenv (2.8.1)
@@ -166,10 +181,10 @@ GEM
railties (>= 3.2)
down (5.4.1)
addressable (~> 2.8)
- dry-configurable (1.0.1)
+ dry-configurable (1.1.0)
dry-core (~> 1.0, < 2)
zeitwerk (~> 2.6)
- dry-core (1.0.0)
+ dry-core (1.0.1)
concurrent-ruby (~> 1.0)
zeitwerk (~> 2.6)
dry-inflector (1.0.0)
@@ -178,7 +193,7 @@ GEM
concurrent-ruby (~> 1.0)
dry-core (~> 1.0, < 2)
zeitwerk (~> 2.6)
- dry-schema (1.13.1)
+ dry-schema (1.13.3)
concurrent-ruby (~> 1.0)
dry-configurable (~> 1.0, >= 1.0.1)
dry-core (~> 1.0, < 2)
@@ -186,7 +201,8 @@ GEM
dry-logic (>= 1.4, < 2)
dry-types (>= 1.7, < 2)
zeitwerk (~> 2.6)
- dry-types (1.7.1)
+ dry-types (1.7.2)
+ bigdecimal (~> 3.0)
concurrent-ruby (~> 1.0)
dry-core (~> 1.0)
dry-inflector (~> 1.0)
@@ -197,7 +213,7 @@ GEM
eventmachine (>= 0.12.9)
http_parser.rb (~> 0)
errbase (0.2.2)
- erubi (1.12.0)
+ erubi (1.13.0)
eventmachine (1.2.7-x86_64-linux-musl)
exception_notification (4.5.0)
actionmailer (>= 5.2, < 8)
@@ -210,32 +226,34 @@ GEM
railties (>= 5.0.0)
fast_blank (1.0.1-x86_64-linux-musl)
fast_jsonparser (0.5.0-x86_64-linux-musl)
- ffi (1.15.5-x86_64-linux-musl)
+ ffi (1.17.0-x86_64-linux-musl)
flamegraph (0.9.5)
forwardable-extended (2.6.0)
friendly_id (5.5.0)
activerecord (>= 4.0.0)
get_process_mem (0.2.7)
ffi (~> 1.0)
- globalid (1.1.0)
- activesupport (>= 5.0)
+ git_clone_url (2.0.0)
+ uri-ssh_git (>= 2.0)
+ globalid (1.2.1)
+ activesupport (>= 6.1)
groupdate (6.2.1)
activesupport (>= 5.2)
hairtrigger (1.0.0)
activerecord (>= 6.0, < 8)
ruby2ruby (~> 2.4)
ruby_parser (~> 3.10)
- haml (6.1.2-x86_64-linux-musl)
+ haml (6.3.0)
temple (>= 0.8.2)
thor
tilt
haml-lint (0.999.999)
haml_lint
- haml_lint (0.45.0)
- haml (>= 4.0, < 6.2)
+ haml_lint (0.53.0)
+ haml (>= 5.0)
parallel (~> 1.10)
rainbow
- rubocop (>= 0.50.0)
+ rubocop (>= 1.0)
sysexits (~> 1.1)
hamlit (3.0.3-x86_64-linux-musl)
temple (>= 0.8.2)
@@ -249,11 +267,16 @@ GEM
heapy (0.2.0)
thor
hiredis (0.6.3-x86_64-linux-musl)
+ hiredis-client (0.14.1-x86_64-linux-musl)
+ redis-client (= 0.14.1)
+ htmlbeautifier (1.4.2)
http_parser.rb (0.8.0-x86_64-linux-musl)
httparty (0.21.0)
mini_mime (>= 1.0.0)
multi_xml (>= 0.5.2)
- i18n (1.14.1)
+ httparty-cache (0.0.6)
+ httparty (~> 0.18)
+ i18n (1.14.6)
concurrent-ruby (~> 1.0)
icalendar (2.8.0)
ice_cube (~> 0.16)
@@ -284,9 +307,7 @@ GEM
terminal-table (~> 2.0)
jekyll-commonmark (1.4.0)
commonmarker (~> 0.22)
- jekyll-data (1.1.2)
- jekyll (>= 3.3, < 5.0.0)
- jekyll-images (0.4.1)
+ jekyll-images (0.4.4)
jekyll (~> 4)
ruby-filemagic (~> 0.7)
ruby-vips (~> 2)
@@ -296,7 +317,7 @@ GEM
sassc (> 2.0.1, < 3.0)
jekyll-watch (2.2.1)
listen (~> 3.0)
- json (2.6.3-x86_64-linux-musl)
+ json (2.7.1-x86_64-linux-musl)
jwt (2.6.0)
kaminari (1.2.2)
activesupport (>= 4.1.0)
@@ -325,12 +346,12 @@ GEM
loaf (0.10.0)
railties (>= 3.2)
lockbox (1.2.0)
- lograge (0.12.0)
+ lograge (0.14.0)
actionpack (>= 4)
activesupport (>= 4)
railties (>= 4)
request_store (~> 1.0)
- loofah (2.21.3)
+ loofah (2.22.0)
crass (~> 1.0.2)
nokogiri (>= 1.12.0)
mail (2.8.1)
@@ -338,45 +359,45 @@ GEM
net-imap
net-pop
net-smtp
- marcel (1.0.2)
+ marcel (1.0.4)
memory_profiler (1.0.1)
mercenary (0.4.0)
- method_source (1.0.0)
+ method_source (1.1.0)
mini_histogram (0.3.1)
mini_magick (4.12.0)
- mini_mime (1.1.2)
- mini_portile2 (2.8.2)
- minitest (5.18.0)
+ mini_mime (1.1.5)
+ mini_portile2 (2.8.6)
+ minitest (5.25.1)
mobility (1.2.9)
i18n (>= 0.6.10, < 2)
request_store (~> 1.0)
multi_xml (0.6.0)
- net-imap (0.3.4)
+ mustermann (3.0.0)
+ ruby2_keywords (~> 0.0.1)
+ net-imap (0.4.16)
date
net-protocol
net-pop (0.1.2)
net-protocol
- net-protocol (0.2.1)
+ net-protocol (0.2.2)
timeout
- net-smtp (0.3.3)
+ net-smtp (0.5.0)
net-protocol
- net-ssh (7.1.0)
+ net-ssh (7.2.1)
netaddr (2.0.6)
- nio4r (2.5.9-x86_64-linux-musl)
- njalla-api-client (0.2.0)
- dry-schema
- httparty (~> 0.18)
- nokogiri (1.15.4-x86_64-linux-musl)
+ nio4r (2.7.3-x86_64-linux-musl)
+ nokogiri (1.16.7-x86_64-linux-musl)
mini_portile2 (~> 2.8.2)
racc (~> 1.4)
orm_adapter (0.5.0)
pairing_heap (3.0.1)
- parallel (1.23.0)
- parser (3.2.2.1)
+ parallel (1.24.0)
+ parser (3.2.2.3)
ast (~> 2.4.1)
+ racc
pathutil (0.16.2)
forwardable-extended (~> 2.6)
- pg (1.5.3-x86_64-linux-musl)
+ pg (1.5.4-x86_64-linux-musl)
pg_search (2.3.6)
activerecord (>= 5.2)
activesupport (>= 5.2)
@@ -386,55 +407,63 @@ GEM
pry (0.14.2)
coderay (~> 1.1)
method_source (~> 1.0)
- public_suffix (5.0.3)
- puma (6.3.1-x86_64-linux-musl)
+ public_suffix (5.0.5)
+ puma (6.4.3-x86_64-linux-musl)
nio4r (~> 2.0)
- pundit (2.3.0)
+ pundit (2.3.1)
activesupport (>= 3.0.0)
que (2.2.1)
- racc (1.7.1-x86_64-linux-musl)
- rack (2.2.7)
- rack-cors (2.0.1)
+ que-web (0.10.0)
+ que (>= 1)
+ sinatra
+ racc (1.8.1-x86_64-linux-musl)
+ rack (2.2.9)
+ rack-cors (2.0.2)
rack (>= 2.0.0)
rack-mini-profiler (3.1.0)
rack (>= 1.2.0)
- rack-proxy (0.7.6)
+ rack-protection (3.2.0)
+ base64 (>= 0.1.0)
+ rack (~> 2.2, >= 2.2.4)
+ rack-proxy (0.7.7)
rack
rack-test (2.1.0)
rack (>= 1.3)
- rails (6.1.7.3)
- actioncable (= 6.1.7.3)
- actionmailbox (= 6.1.7.3)
- actionmailer (= 6.1.7.3)
- actionpack (= 6.1.7.3)
- actiontext (= 6.1.7.3)
- actionview (= 6.1.7.3)
- activejob (= 6.1.7.3)
- activemodel (= 6.1.7.3)
- activerecord (= 6.1.7.3)
- activestorage (= 6.1.7.3)
- activesupport (= 6.1.7.3)
+ rails (6.1.7.8)
+ actioncable (= 6.1.7.8)
+ actionmailbox (= 6.1.7.8)
+ actionmailer (= 6.1.7.8)
+ actionpack (= 6.1.7.8)
+ actiontext (= 6.1.7.8)
+ actionview (= 6.1.7.8)
+ activejob (= 6.1.7.8)
+ activemodel (= 6.1.7.8)
+ activerecord (= 6.1.7.8)
+ activestorage (= 6.1.7.8)
+ activesupport (= 6.1.7.8)
bundler (>= 1.15.0)
- railties (= 6.1.7.3)
+ railties (= 6.1.7.8)
sprockets-rails (>= 2.0.0)
- rails-dom-testing (2.0.3)
- activesupport (>= 4.2.0)
+ rails-dom-testing (2.2.0)
+ activesupport (>= 5.0.0)
+ minitest
nokogiri (>= 1.6)
- rails-html-sanitizer (1.5.0)
- loofah (~> 2.19, >= 2.19.1)
- rails-i18n (7.0.7)
+ rails-html-sanitizer (1.6.0)
+ loofah (~> 2.21)
+ nokogiri (~> 1.14)
+ rails-i18n (7.0.8)
i18n (>= 0.7, < 2)
railties (>= 6.0.0, < 8)
rails_warden (0.6.0)
warden (>= 1.2.0)
- railties (6.1.7.3)
- actionpack (= 6.1.7.3)
- activesupport (= 6.1.7.3)
+ railties (6.1.7.8)
+ actionpack (= 6.1.7.8)
+ activesupport (= 6.1.7.8)
method_source
rake (>= 12.2)
thor (~> 1.0)
rainbow (3.1.1)
- rake (13.0.6)
+ rake (13.2.1)
rb-fsevent (0.11.2)
rb-inotify (0.10.1)
ffi (~> 1.0)
@@ -446,6 +475,8 @@ GEM
redis-activesupport (5.3.0)
activesupport (>= 3, < 8)
redis-store (>= 1.3, < 2)
+ redis-client (0.14.1)
+ connection_pool
redis-rack (2.1.4)
rack (>= 2.0.8, < 3)
redis-store (>= 1.2, < 2)
@@ -455,18 +486,19 @@ GEM
redis-store (>= 1.2, < 2)
redis-store (1.9.2)
redis (>= 4, < 6)
- regexp_parser (2.8.0)
+ regexp_parser (2.9.0)
request_store (1.5.1)
rack (>= 1.4)
- responders (3.1.0)
+ responders (3.1.1)
actionpack (>= 5.2)
railties (>= 5.2)
- rexml (3.2.5)
+ rexml (3.3.7)
rgl (0.6.3)
pairing_heap (>= 0.3.0)
rexml (~> 3.2, >= 3.2.4)
stream (~> 0.5.3)
rouge (3.30.0)
+ rubanok (0.5.0)
rubocop (1.42.0)
json (~> 2.3)
parallel (~> 1.10)
@@ -477,24 +509,28 @@ GEM
rubocop-ast (>= 1.24.1, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 1.4.0, < 3.0)
- rubocop-ast (1.28.1)
+ rubocop-ast (1.30.0)
parser (>= 3.2.1.0)
- rubocop-rails (2.19.1)
+ rubocop-rails (2.23.1)
activesupport (>= 4.2.0)
rack (>= 1.1)
rubocop (>= 1.33.0, < 2.0)
+ rubocop-ast (>= 1.30.0, < 2.0)
+ ruby-brs (1.3.3-x86_64-linux-musl)
+ adsp (~> 1.0)
ruby-filemagic (0.7.3-x86_64-linux-musl)
ruby-progressbar (1.13.0)
ruby-statistics (3.0.2)
- ruby-vips (2.1.4)
+ ruby-vips (2.2.0)
ffi (~> 1.12)
+ ruby2_keywords (0.0.5)
ruby2ruby (2.5.0)
ruby_parser (~> 3.1)
sexp_processor (~> 4.6)
ruby_parser (3.20.1)
sexp_processor (~> 4.16)
rubyzip (2.3.2)
- rugged (1.6.3-x86_64-linux-musl)
+ rugged (1.5.0.1-x86_64-linux-musl)
safe_yaml (1.0.6)
safely_block (0.3.0)
errbase (>= 0.1.1)
@@ -514,19 +550,24 @@ GEM
sexp_processor (4.17.0)
simpleidn (0.2.1)
unf (~> 0.1.4)
+ sinatra (3.2.0)
+ mustermann (~> 3.0)
+ rack (~> 2.2, >= 2.2.4)
+ rack-protection (= 3.2.0)
+ tilt (~> 2.0)
sourcemap (0.1.1)
spring (4.1.1)
spring-watcher-listen (2.1.0)
listen (>= 2.7, < 4.0)
spring (>= 4)
- sprockets (4.2.0)
+ sprockets (4.2.1)
concurrent-ruby (~> 1.0)
rack (>= 2.2.4, < 4)
- sprockets-rails (3.4.2)
- actionpack (>= 5.2)
- activesupport (>= 5.2)
+ sprockets-rails (3.5.2)
+ actionpack (>= 6.1)
+ activesupport (>= 6.1)
sprockets (>= 3.0.0)
- sqlite3 (1.6.3-x86_64-linux-musl)
+ sqlite3 (1.7.0-x86_64-linux-musl)
mini_portile2 (~> 2.8.0)
stackprof (0.2.25-x86_64-linux-musl)
stream (0.5.5)
@@ -535,13 +576,13 @@ GEM
jekyll (~> 4)
symbol-fstring (1.0.2-x86_64-linux-musl)
sysexits (1.2.0)
- temple (0.10.1)
+ temple (0.10.3)
terminal-table (2.0.0)
unicode-display_width (~> 1.1, >= 1.1.1)
- thor (1.2.2)
- tilt (2.1.0)
+ thor (1.3.2)
+ tilt (2.4.0)
timecop (0.9.6)
- timeout (0.3.2)
+ timeout (0.4.1)
turbolinks (5.2.1)
turbolinks-source (~> 5.2)
turbolinks-source (5.2.0)
@@ -551,8 +592,9 @@ GEM
execjs (>= 0.3.0, < 3)
unf (0.1.4)
unf_ext
- unf_ext (0.0.8.2-x86_64-linux-musl)
+ unf_ext (0.0.9-x86_64-linux-musl)
unicode-display_width (1.8.0)
+ uri-ssh_git (2.0.0)
validates_hostname (1.0.13)
activerecord (>= 3.0)
activesupport (>= 3.0)
@@ -568,36 +610,42 @@ GEM
rack-proxy (>= 0.6.1)
railties (>= 5.2)
semantic_range (>= 2.3.0)
- webrick (1.8.1)
+ webrick (1.8.2)
websocket (1.2.9)
websocket-driver (0.7.6-x86_64-linux-musl)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5)
xpath (3.2.0)
nokogiri (~> 1.8)
- zeitwerk (2.6.8)
+ yard (0.9.36)
+ zeitwerk (2.6.18)
PLATFORMS
x86_64-linux-musl
DEPENDENCIES
+ aasm
+ after_commit_everywhere (~> 1.0)
bcrypt (~> 3.1.7)
bcrypt_pbkdf
blazer
bootstrap (~> 4)
brakeman
+ bundler-audit
capybara (~> 2.13)
chartkick
commonmarker
concurrent-ruby-ext
database_cleaner
derailed_benchmarks
+ device_detector
devise
devise-i18n
devise_invitable
- distributed-press-api-client (~> 0.2.3)
+ distributed-press-api-client (~> 0.4.1)
dotenv-rails
down
+ dry-schema
ed25519
email_address!
exception_notification
@@ -606,10 +654,13 @@ DEPENDENCIES
fast_jsonparser (~> 0.5.0)
flamegraph
friendly_id
+ git_clone_url
hairtrigger
haml-lint
hamlit-rails
hiredis
+ hiredis-client
+ htmlbeautifier
httparty
icalendar
image_processing
@@ -617,7 +668,6 @@ DEPENDENCIES
jbuilder (~> 2.5)
jekyll (~> 4.2.0)
jekyll-commonmark (~> 1.4.0)
- jekyll-data
jekyll-images
jekyll-include-cache
kaminari
@@ -630,7 +680,6 @@ DEPENDENCIES
mini_magick
mobility
net-ssh
- njalla-api-client (~> 0.2.0)
nokogiri
pg
pg_search
@@ -639,18 +688,22 @@ DEPENDENCIES
puma
pundit
que
+ que-web
rack-cors
rack-mini-profiler
rails (~> 6.1.0)
rails-i18n
rails_warden
redis (~> 4.0)
+ redis-client
redis-rails
rgl
rollups!
+ rubanok
rubocop-rails
+ ruby-brs
rubyzip
- rugged
+ rugged (= 1.5.0.1)
safe_yaml
safely_block (~> 0.3.0)
sassc-rails
@@ -670,6 +723,7 @@ DEPENDENCIES
web-console
webpacker
yaml_db!
+ yard
RUBY VERSION
ruby 3.1.4p223
diff --git a/Makefile b/Makefile
deleted file mode 100644
index 5d6c066b..00000000
--- a/Makefile
+++ /dev/null
@@ -1,140 +0,0 @@
-SHELL := /bin/bash
-.DEFAULT_GOAL := help
-
-# Copiar el archivo de configuración y avisar cuando hay que
-# actualizarlo.
-.env: .env.example
- @test -f $@ || cp -v $< $@
- @test -f $@ && echo "Revisa $@ para actualizarlo con respecto a $<"
- @test -f $@ && diff -auN --color $@ $<
-
-include .env
-
-export
-
-# XXX: El espacio antes del comentario cuenta como espacio
-args ?=## Argumentos para Hain
-commit ?= origin/rails## Commit desde el que actualizar
-env ?= staging## Entorno del nodo delegado
-sutty ?= $(SUTTY)## Dirección local
-delegate ?= $(DELEGATE)## Cambia el nodo delegado
-hain ?= ENV_FILE=.env $(HAINISH)## Ubicación de Hainish
-
-# El nodo delegado tiene dos entornos, production y staging.
-# Dependiendo del entorno que elijamos, se van a generar los assets y el
-# contenedor y subirse a un servidor u otro. No utilizamos CI/CD (aún).
-#
-# Production es el entorno de panel.sutty.nl
-ifeq ($(env),production)
-container ?= panel
-## TODO: Cambiar a otra cosa
-branch ?= rails
-public ?= public
-endif
-
-# Staging es el entorno de panel.staging.sutty.nl
-ifeq ($(env),staging)
-container := staging
-branch := staging
-public := staging
-endif
-
-help: always ## Ayuda
- @echo -e "Sutty\n" | sed -re "s/^.*/\x1B[38;5;197m&\x1B[0m/"
- @echo -e "Servidor: https://panel.$(SUTTY_WITH_PORT)/\n"
- @echo -e "Uso: make TAREA args=\"ARGUMENTOS\"\n"
- @echo -e "Tareas:\n"
- @grep -E "^[a-z\-]+:.*##" Makefile | sed -re "s/(.*):.*##(.*)/\1;\2/" | column -s ";" -t | sed -re "s/^([^ ]+) /\x1B[38;5;197m\1\x1B[0m/"
- @echo -e "\nArgumentos:\n"
- @grep -E "^[a-z\-]+ \?=.*##" Makefile | sed -re "s/(.*) \?=.*##(.*)/\1;\2/" | column -s ";" -t | sed -re "s/^([^ ]+) /\x1B[38;5;197m\1\x1B[0m/"
-
-test: always ## Ejecutar los tests
- $(MAKE) rake args="test RAILS_ENV=test $(args)"
-
-postgresql: /etc/hosts ## Iniciar la base de datos
- pgrep postgres >/dev/null || $(hain) postgresql
-
-serve-js: /etc/hosts node_modules ## Iniciar el servidor de desarrollo de Javascript
- $(hain) 'bundle exec ./bin/webpack-dev-server'
-
-serve: /etc/hosts postgresql Gemfile.lock ## Iniciar el servidor de desarrollo de Rails
- $(MAKE) rails args=server
-
-rails: ## Corre rails dentro del entorno de desarrollo (pasar argumentos con args=).
- $(MAKE) bundle args="exec rails $(args)"
-
-rake: ## Corre rake dentro del entorno de desarrollo (pasar argumentos con args=).
- $(MAKE) bundle args="exec rake $(args)"
-
-bundle: ## Corre bundle dentro del entorno de desarrollo (pasar argumentos con args=).
- $(hain) 'bundle $(args)'
-
-psql := psql -h $(PG_HOST) -U $(PG_USER) -p $(PG_PORT) -d sutty
-copy-table:
- test -n "$(table)"
- echo "truncate $(table) $(cascade);" | $(psql)
- ssh $(delegate) docker exec postgresql pg_dump -U sutty -d sutty -t $(table) | $(psql)
-
-psql:
- $(psql)
-
-rubocop: ## Yutea el código que está por ser commiteado
- git status --porcelain \
- | grep -E "^(A|M)" \
- | sed "s/^...//" \
- | grep ".rb$$" \
- | ../haini.sh/haini.sh "xargs -r ./bin/rubocop --auto-correct"
-
-audit: ## Encuentra dependencias con vulnerabilidades
- $(hain) 'gem install bundler-audit'
- $(hain) 'bundle audit --update'
-
-brakeman: ## Busca posibles vulnerabilidades en Sutty
- $(MAKE) bundle args='exec brakeman'
-
-yarn: ## Tareas de yarn
- $(hain) 'yarn $(args)'
-
-clean: ## Limpieza
- rm -rf _sites/test-* _deploy/test-* log/*.log tmp/cache tmp/letter_opener tmp/miniprofiler tmp/storage
-
-build: Gemfile.lock ## Generar la imagen Docker
- time docker build --build-arg="BRANCH=$(branch)" --build-arg="RAILS_MASTER_KEY=`cat config/master.key`" -t sutty/$(container) .
- docker tag sutty/$(container):latest sutty:keep
- @echo -e "\a"
-
-save: ## Subir la imagen Docker al nodo delegado
- time docker save sutty/$(container):latest | ssh root@$(delegate) docker load
- date +%F | xargs -I {} git tag -f $(container)-{}
- @echo -e "\a"
-
-ota: ## Actualizar Rails en el nodo delegado
- git push
- ssh $(delegate) git -C /srv/sutty/srv/http/panel.sutty.nl pull
- ssh $(delegate) git -C /srv/sutty/srv/http/panel.sutty.nl lfs prune
- ssh $(delegate) chown -R 1000:82 /srv/sutty/srv/http/panel.sutty.nl
- ssh $(delegate) docker exec $(container) rails reload
-
-# Correr un test en particular por ejemplo
-# `make test/models/usuarie_test.rb`
-tests := $(shell find test/ -name "*_test.rb")
-$(tests): always
- $(MAKE) test args="TEST=$@"
-
-# Agrega las direcciones locales al sistema
-/etc/hosts: always
- @echo "Chequeando si es necesario agregar el dominio local $(SUTTY)"
- @grep -q " $(SUTTY)$$" $@ || echo -e "127.0.0.1 $(SUTTY)\n::1 $(SUTTY)" | sudo tee -a $@
- @grep -q " api.$(SUTTY)$$" $@ || echo -e "127.0.0.1 api.$(SUTTY)\n::1 api.$(SUTTY)" | sudo tee -a $@
- @grep -q " panel.$(SUTTY)$$" $@ || echo -e "127.0.0.1 panel.$(SUTTY)\n::1 panel.$(SUTTY)" | sudo tee -a $@
- @grep -q " postgresql.$(SUTTY)$$" $@ || echo -e "127.0.0.1 postgresql.$(SUTTY)\n::1 postgresql.$(SUTTY)" | sudo tee -a $@
-
-# Instala las dependencias de Javascript
-node_modules: package.json
- $(MAKE) yarn
-
-# Instala las dependencias de Rails
-Gemfile.lock: Gemfile
- $(MAKE) bundle args=install
-
-.PHONY: always
diff --git a/Procfile b/Procfile
index 9a278908..a74f613b 100644
--- a/Procfile
+++ b/Procfile
@@ -7,5 +7,7 @@ blazer: bundle exec rake blazer:send_failing_checks
prometheus: bundle exec prometheus_exporter -b 0.0.0.0 --prefix "sutty_"
distributed_press_tokens_renew: bundle exec rake distributed_press:tokens:renew
cleanup: bundle exec rake cleanup:everything
+emergency_cleanup: bundle exec rake cleanup:everything BEFORE=7
stats: bundle exec rake stats:process_all
que: daemonize -c /srv/ -p /srv/tmp/que.pid -u rails /usr/local/bin/syslogize bundle exec que
+fediblock: bundle exec rails activity_pub:fediblocks
diff --git a/README.md b/README.md
index 25d0d31c..5139f6cd 100644
--- a/README.md
+++ b/README.md
@@ -17,14 +17,32 @@ Para más información visita el [sitio de Sutty](https://sutty.nl/).
### Desarrollar
-Todas las tareas se gestionan con `make`, por favor instala GNU Make
-antes de comenzar.
+Para facilitar la gestión de dependencias y entorno de desarrollo,
+instala [haini.sh](https://0xacab.org/sutty/haini.sh)
+
+
+Todas las tareas se gestionan con `go-task`. [Instrucciones de
+instalación (en inglés)](https://taskfile.dev/installation/)
```bash
-make help
+go-task
```
-[Leer la documentación](https://docs.sutty.nl/)
+### Variables de entorno
+
+Las variables de entorno por defecto se encuentran en el archivo `.env`.
+Para modificar las opciones, crear o modificar el archivo `.env.local`
+con valores distintos.
+
+### Documentación
+
+Para navegar la documentación del código usando YARD:
+
+```bash
+go-task doc serve
+```
+
+Y luego navegar a
## English
@@ -39,10 +57,29 @@ For more information, visit [Sutty's website](https://sutty.nl/en/).
### Development
-Every task is run via `make`, please install GNU Make before developing.
+
+To facilitate dependencies and dev environment, install
+[haini.sh](https://0xacab.org/sutty/haini.sh)
+
+Every task is run via `go-task`. [Installation
+instructions](https://taskfile.dev/installation/).
```bash
-make help
+go-task
```
-[Read the documentation](https://docs.sutty.nl/en/)
+### Environment variables
+
+Default env vars are store on `.env`. For local options, copy them to
+`.env.local`.
+
+### Documentation
+
+To browse documentation using YARD:
+
+```bash
+go-task doc serve
+```
+
+And then open
+
diff --git a/Taskfile.yaml b/Taskfile.yaml
new file mode 100644
index 00000000..796ab721
--- /dev/null
+++ b/Taskfile.yaml
@@ -0,0 +1,197 @@
+---
+version: "3"
+vars:
+ CURRENT_BRANCH:
+ sh: "git rev-parse --abbrev-ref HEAD"
+shopt:
+- "globstar"
+dotenv:
+- ".env.development"
+- ".env"
+- ".env.local"
+- ".env.development.local"
+tasks:
+ credentials:
+ desc: "Generate credentials file"
+ cmds:
+ - "cp --no-clobber config/credentials.yml.enc.ci config/credentials.yml.enc"
+ sources:
+ - "config/credentials.yml.enc.ci"
+ generates:
+ - "config/credentials.yml.enc"
+ gems:
+ desc: "Install gems"
+ deps:
+ - "credentials"
+ cmds:
+ - "{{.HAINISH}} bundle config set --local path './vendor'"
+ - "{{.HAINISH}} bundle install"
+ sources:
+ - "Gemfile"
+ generates:
+ - "Gemfile.lock"
+ status:
+ - "test -d vendor/ruby"
+ clean:
+ desc: "Clean"
+ cmds:
+ - "rm -rf _sites/test-* _deploy/test-* log/*.log tmp/cache tmp/letter_opener tmp/miniprofiler tmp/storage"
+ node-modules:
+ desc: "Install Node modules"
+ cmds:
+ - "{{.HAINISH}} yarn"
+ sources:
+ - "package.json"
+ - "yarn.lock"
+ status:
+ - "test -d node_modules"
+ assets:
+ desc: "Generate assets"
+ deps:
+ - "node-modules"
+ - "gems"
+ cmds:
+ - "git lfs fetch"
+ - "git lfs checkout"
+ - task: "rails"
+ vars:
+ CLI_ARGS: "webpacker:clobber RAILS_ENV=production"
+ - task: "rails"
+ vars:
+ CLI_ARGS: "assets:precompile RAILS_ENV=production"
+ - task: "rails"
+ vars:
+ CLI_ARGS: "assets:clean RAILS_ENV=production"
+ sources:
+ - "package.json"
+ - "yarn.lock"
+ - "app/assets/**/*"
+ - "app/javascript/**/*"
+ generates:
+ - "public/packs/manifest.json"
+ hosts:
+ desc: "Local DNS resolution for hostnames"
+ interactive: true
+ cmds:
+ - "echo -e \"127.0.0.1 panel.{{.SUTTY}} api.{{.SUTTY}} postgresql.{{.SUTTY}}\" | sudo tee -a /etc/hosts"
+ - "echo -e \"::1 panel.{{.SUTTY}} api.{{.SUTTY}} postgresql.{{.SUTTY}}\" | sudo tee -a /etc/hosts"
+ status:
+ - "grep -q \" panel.{{.SUTTY}} \" /etc/hosts"
+ database-init:
+ desc: "Database install"
+ cmds:
+ - "{{.HAINISH}} /usr/bin/initdb --locale en_US.utf8 -E UTF8 -D /var/lib/postgresql/{{.PGVER}}/data"
+ - "echo \"host all all samenet trust\" >> ../hain/var/lib/postgresql/{{.PGVER}}/data/pg_hba.conf"
+ - "echo \"listen_addresses = '*'\" >> ../hain/var/lib/postgresql/{{.PGVER}}/data/postgresql.conf"
+ - "echo \"external_pid_file = '{{.PGPID}}'\" >> ../hain/var/lib/postgresql/{{.PGVER}}/data/postgresql.conf"
+ - "install -dm755 ../hain/run/postgresql"
+ status:
+ - "test -d ../hain/var/lib/postgresql/{{.PGVER}}/data"
+ - "test -f ../hain/var/lib/postgresql/{{.PGVER}}/data/postgresql.conf"
+ database:
+ desc: "Database"
+ deps:
+ - "database-init"
+ cmds:
+ - "{{.HAINISH}} daemonize -c /var/lib/postgresql/{{.PGVER}}/data /usr/bin/postgres -D /var/lib/postgresql/{{.PGVER}}/data"
+ status:
+ - "test -f ../hain{{.PGPID}}"
+ - "pgrep -F ../hain{{.PGPID}}"
+ prepare:
+ desc: "Create database or run pending migrations"
+ deps:
+ - "database"
+ cmds:
+ - task: "rails"
+ vars:
+ CLI_ARGS: "db:prepare"
+ serve:
+ desc: "Run Rails development server"
+ deps:
+ - "prepare"
+ - "gems"
+ cmds:
+ - ": == Development server running at https://panel.{{.SUTTY_WITH_PORT}} =="
+ - task: "rails"
+ vars:
+ CLI_ARGS: "server"
+ status:
+ - "test -f tmp/pids/server.pid"
+ - "pgrep -F tmp/pids/server.pid"
+ yarn:
+ desc: "Yarn. Call with: go-task yarn -- arguments"
+ deps:
+ - "node-modules"
+ cmds:
+ - "{{.HAINISH}} yarn {{.CLI_ARGS}}"
+ - defer:
+ task: "notify"
+ bundle:
+ desc: "Bundle. Call with: go-task bundle -- arguments"
+ interactive: true
+ deps:
+ - "gems"
+ cmds:
+ - "{{.HAINISH}} bundle {{.CLI_ARGS}}"
+ - defer:
+ task: "notify"
+ rails:
+ desc: "Rails. Call with: go-task rails -- arguments"
+ cmds:
+ - task: "bundle"
+ vars:
+ CLI_ARGS: "exec rails {{.CLI_ARGS}}"
+ console:
+ desc: "Rails console"
+ interactive: true
+ cmds:
+ - task: "rails"
+ vars:
+ CLI_ARGS: "console"
+ doc:
+ desc: "Build documentation"
+ deps:
+ - "gems"
+ cmds:
+ - task: "bundle"
+ vars:
+ CLI_ARGS: "exec yardoc -o public/doc app lib config db"
+ gem-audit:
+ desc: "Audit Gem dependencies"
+ deps:
+ - "gems"
+ - "bundler-audit"
+ cmds:
+ - task: "bundle"
+ vars:
+ CLI_ARGS: "audit --update"
+ node-audit:
+ desc: "Audit Node dependencies"
+ deps:
+ - "node-modules"
+ cmds:
+ - task: "yarn"
+ vars:
+ CLI_ARGS: "audit"
+ notify:
+ internal: true
+ cmds:
+ - "echo -e \"\a\""
+ bundler-audit:
+ internal: true
+ cmds:
+ - "{{.HAINISH}} gem install bundler-audit"
+ status:
+ - "test -f ../hain/usr/bin/bundler-audit"
+ rubocop:
+ desc: "Ruby linting"
+ deps:
+ - "gems"
+ cmds:
+ - "./bin/modified_files | ./bin/with_extension rb | xargs -r {{.HAINISH}} bundle exec rubocop {{.CLI_ARGS}}"
+ haml-lint:
+ desc: "HAML linting"
+ deps:
+ - "gems"
+ cmds:
+ - "./bin/modified_files | ./bin/with_extension haml | xargs -r {{.HAINISH}} bundle exec haml-lint {{.CLI_ARGS}}"
diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss
index 65a207fa..4d1d0848 100644
--- a/app/assets/stylesheets/application.scss
+++ b/app/assets/stylesheets/application.scss
@@ -29,14 +29,25 @@ $sizes: (
"70ch": 70ch,
);
-.btn {
- background-color: var(--foreground);
- color: var(--background);
-}
-
@import "bootstrap";
@import "editor";
+@each $color, $rgb in $theme-colors {
+ .#{$color} {
+ color: var(--#{$color});
+
+ &:focus {
+ color: var(--#{$color});
+ }
+
+ ::-moz-selection,
+ ::selection {
+ background: var(--#{$color});
+ color: white;
+ }
+ }
+}
+
.editor {
.editor-content {
figure {
@@ -57,6 +68,25 @@ $sizes: (
--background: #{$black};
--color: #{$cyan};
}
+
+ .btn-secondary {
+ background-color: $white;
+ color: $black;
+ border: none;
+
+ &:hover {
+ color: $black;
+ background-color: $cyan;
+ }
+
+ &:active {
+ background-color: $cyan;
+ }
+
+ &:focus {
+ box-shadow: 0 0 0 0.2rem $cyan;
+ }
+ }
}
// TODO: Encontrar la forma de generar esto desde los locales de Rails
@@ -195,7 +225,7 @@ fieldset {
&[type=button] {
@extend .btn;
- @extend .btn-info;
+ @extend .btn-secondary;
@extend .m-0;
}
}
@@ -209,8 +239,6 @@ svg {
}
.btn {
- border: none;
- border-radius: 0;
margin-right: 0.3rem;
margin-bottom: 0.3rem;
@@ -246,7 +274,7 @@ svg {
color: $magenta;
}
- .btn {
+ .btn-secondary {
background-color: $white;
color: $black;
border: none;
@@ -526,4 +554,70 @@ $bezier: cubic-bezier(0.75, 0, 0.25, 1);
}
}
-// force ci
+@import "new_editor";
+
+.new-editor {
+ .editor {
+ table {
+ @extend .table;
+ @extend .table-responsive;
+ }
+ }
+}
+
+.content {
+ p { min-height: $font-size-base * $line-height-base; }
+ h1 { min-height: $h1-font-size * $headings-line-height; }
+ h2 { min-height: $h2-font-size * $headings-line-height; }
+ h3 { min-height: $h3-font-size * $headings-line-height; }
+ h4 { min-height: $h4-font-size * $headings-line-height; }
+ h5 { min-height: $h5-font-size * $headings-line-height; }
+ h6 { min-height: $h6-font-size * $headings-line-height; }
+
+ iframe { border: 0; }
+
+ audio { width: 100%; }
+
+ img,
+ video,
+ iframe {
+ @extend .img-fluid;
+ height: auto;
+ }
+
+ & > * {
+ margin-bottom: 1rem;
+
+ &:last-child {
+ margin-bottom: 0;
+ }
+ }
+}
+// details styles
+
+.details {
+ & > summary {
+ list-style: none;
+ cursor: pointer;
+
+ .hide-when-open {
+ display: inline;
+ }
+
+ .show-when-open {
+ display: none;
+ }
+ }
+
+ &[open] {
+ & > summary {
+ .hide-when-open {
+ display: none;
+ }
+
+ .show-when-open {
+ display: inline;
+ }
+ }
+ }
+}
diff --git a/app/assets/stylesheets/dark.scss b/app/assets/stylesheets/dark.scss
new file mode 100644
index 00000000..f7f3a09d
--- /dev/null
+++ b/app/assets/stylesheets/dark.scss
@@ -0,0 +1,34 @@
+$black: black;
+$white: white;
+$cyan: #13fefe;
+
+:root {
+ --foreground: #{$white};
+ --background: #{$black};
+ --color: #{$cyan};
+}
+
+.btn {
+ background-color: $white;
+}
+
+.btn-secondary {
+ background-color: $white;
+ color: $black;
+ border: none;
+
+ &:hover {
+ color: $black;
+ background-color: $cyan;
+ }
+
+ &:active {
+ background-color: $cyan;
+ }
+
+ &:focus {
+ box-shadow: 0 0 0 0.2rem $cyan;
+ }
+}
+
+
diff --git a/app/assets/stylesheets/editor.scss b/app/assets/stylesheets/editor.scss
index 85bf4471..8e0c33d4 100644
--- a/app/assets/stylesheets/editor.scss
+++ b/app/assets/stylesheets/editor.scss
@@ -1,4 +1,4 @@
-.editor {
+.old.editor {
box-sizing: border-box;
*, *::before, *::after { box-sizing: inherit; }
diff --git a/app/assets/stylesheets/new_editor.scss b/app/assets/stylesheets/new_editor.scss
new file mode 100644
index 00000000..10e0dd48
--- /dev/null
+++ b/app/assets/stylesheets/new_editor.scss
@@ -0,0 +1,22 @@
+.new-editor {
+ .editor {
+ .menubar {
+ z-index: 1;
+
+ label.btn {
+ margin-bottom: 0.3rem !important;
+ }
+
+ .btn-group {
+ .btn {
+ margin-right: 0;
+ }
+ }
+ }
+
+ .ProseMirror,
+ & > ol li {
+ margin-bottom: 1rem;
+ }
+ }
+}
diff --git a/app/controllers/active_storage/direct_uploads_controller_decorator.rb b/app/controllers/active_storage/direct_uploads_controller_decorator.rb
index c62dae2a..94070882 100644
--- a/app/controllers/active_storage/direct_uploads_controller_decorator.rb
+++ b/app/controllers/active_storage/direct_uploads_controller_decorator.rb
@@ -18,8 +18,9 @@ module ActiveStorage
# para que puedan propagarse correctamente a través de todo el
# stack.
def blob_args
- params.require(:blob).permit(:filename, :byte_size, :checksum, :content_type, metadata: {}).to_h.symbolize_keys.tap do |ba|
- ba[:filename] = ba[:filename].unicode_normalize
+ params.require(:blob).permit(:filename, :byte_size, :checksum, :content_type,
+ metadata: {}).to_h.symbolize_keys.tap do |ba|
+ ba[:filename] = ba[:filename].unicode_normalize.sub(/\A_+/, '')
end
end
end
diff --git a/app/controllers/active_storage/disk_controller_decorator.rb b/app/controllers/active_storage/disk_controller_decorator.rb
index 14366a15..ec3ac0b4 100644
--- a/app/controllers/active_storage/disk_controller_decorator.rb
+++ b/app/controllers/active_storage/disk_controller_decorator.rb
@@ -6,16 +6,45 @@ module ActiveStorage
extend ActiveSupport::Concern
included do
+ alias_method :original_show, :show
+
+ # Permitir incrustar archivos subidos (especialmente PDFs) desde
+ # otros sitios.
+ def show
+ original_show.tap do |s|
+ response.headers.delete 'X-Frame-Options'
+ end
+ end
+
+ rescue_from ActiveRecord::RecordNotFound, with: :page_not_found
+
# Asociar el archivo subido al sitio correspondiente. Cada sitio
# tiene su propio servicio de subida de archivos.
def update
if (token = decode_verified_token)
if acceptable_content?(token)
- named_disk_service(token[:service_name]).upload token[:key], request.body, checksum: token[:checksum]
-
- blob = ActiveStorage::Blob.find_by_key token[:key]
+ blob = ActiveStorage::Blob.find_by_key! token[:key]
site = Site.find_by_name token[:service_name]
+ if remote_file?(token)
+ begin
+ url = request.body.read
+ body = Down.download(url, max_size: 111.megabytes)
+ checksum = Digest::MD5.file(body.path).base64digest
+ blob.metadata[:url] = url
+ blob.update_columns checksum: checksum, byte_size: body.size, metadata: blob.metadata
+ rescue StandardError => e
+ ExceptionNotifier.notify_exception(e, data: { key: token[:key], url: url, site: site.name })
+
+ head :content_too_large
+ end
+ else
+ body = request.body
+ checksum = token[:checksum]
+ end
+
+ named_disk_service(token[:service_name]).upload token[:key], body, checksum: checksum
+
site.static_files.attach(blob)
else
head :unprocessable_entity
@@ -26,6 +55,17 @@ module ActiveStorage
rescue ActiveStorage::IntegrityError
head :unprocessable_entity
end
+
+ private
+
+ def remote_file?(token)
+ token[:content_type] == 'sutty/download-from-url'
+ end
+
+ def page_not_found(exception)
+ head :not_found
+ ExceptionNotifier.notify_exception(exception, data: {params: params.to_hash})
+ end
end
end
end
diff --git a/app/controllers/activity_pubs_controller.rb b/app/controllers/activity_pubs_controller.rb
new file mode 100644
index 00000000..428d5cb1
--- /dev/null
+++ b/app/controllers/activity_pubs_controller.rb
@@ -0,0 +1,74 @@
+# frozen_string_literal: true
+
+# Gestiona acciones de moderación
+class ActivityPubsController < ApplicationController
+ include ModerationConcern
+
+ ActivityPub.events.each do |event|
+ define_method(event) do
+ authorize activity_pub
+
+ if event == :report
+ remote_flag_params(activity_pub).tap do |p|
+ activity_pub.remote_flag_id = p[:remote_flag_attributes][:id]
+ activity_pub.update(p)
+ end
+ end
+
+ message =
+ if activity_pub.public_send(:"may_#{event}?") && activity_pub.public_send(:"#{event}!")
+ :success
+ else
+ :error
+ end
+
+ flash[message] = I18n.t("activity_pubs.#{event}.#{message}")
+
+ redirect_to_moderation_queue!
+ end
+ end
+
+ def action_on_several
+ redirect_to_moderation_queue!
+
+ activity_pubs = site.activity_pubs.where(id: params[:activity_pub])
+
+ return if activity_pubs.count.zero?
+
+ authorize activity_pubs
+
+ action = params[:activity_pub_action].to_sym
+ method = :"#{action}_all!"
+ may = :"may_#{action}?"
+
+ return unless ActivityPub.events.include? action
+
+ # Crear una sola remote flag por autore
+ ActivityPub.transaction do
+ if action == :report
+ message = remote_flag_params(activity_pubs.first).dig(:remote_flag_attributes, :message)
+
+ activity_pubs.distinct.pluck(:actor_id).each do |actor_id|
+ remote_flag = ActivityPub::RemoteFlag.find_or_initialize_by(actor_id: actor_id, site_id: site.id)
+ remote_flag.message = message
+ # Lo estamos actualizando, con lo que lo vamos a volver a enviar
+ remote_flag.requeue if remote_flag.persisted?
+ remote_flag.save
+ # XXX: Idealmente todas las ActivityPub que enviamos pueden
+ # cambiar de estado, pero chequeamos de todas formas.
+ remote_flag.activity_pubs << (activity_pubs.where(actor_id: actor_id).to_a.select { |a| a.public_send(may) })
+ end
+ end
+
+ message = activity_pubs.public_send(method) ? :success : :error
+
+ flash[message] = I18n.t("activity_pubs.action_on_several.#{message}")
+ end
+ end
+
+ private
+
+ def activity_pub
+ @activity_pub ||= site.activity_pubs.find(params[:activity_pub_id])
+ end
+end
diff --git a/app/controllers/actor_moderations_controller.rb b/app/controllers/actor_moderations_controller.rb
new file mode 100644
index 00000000..04d2603b
--- /dev/null
+++ b/app/controllers/actor_moderations_controller.rb
@@ -0,0 +1,85 @@
+# frozen_string_literal: true
+
+# Gestiona la cola de moderación de actores
+class ActorModerationsController < ApplicationController
+ include ModerationConcern
+ include ModerationFiltersConcern
+
+ before_action :authenticate_usuarie!
+
+ breadcrumb -> { current_usuarie.email }, :edit_usuarie_registration_path
+ breadcrumb 'sites.index', :sites_path, match: :exact
+
+ ActorModeration.events.each do |actor_event|
+ define_method(actor_event) do
+ authorize actor_moderation
+
+ # Crea una RemoteFlag si se envían los parámetros adecuados
+ if actor_event == :report
+ remote_flag_params(actor_moderation).tap do |p|
+ actor_moderation.remote_flag_id = p[:remote_flag_attributes][:id]
+ actor_moderation.update(p)
+ end
+ end
+
+ message =
+ if actor_moderation.public_send(:"may_#{actor_event}?") && actor_moderation.public_send(:"#{actor_event}!")
+ :success
+ else
+ :error
+ end
+
+ flash[message] = I18n.t("actor_moderations.#{actor_event}.#{message}")
+
+ redirect_to_moderation_queue!
+ end
+ end
+
+ # Ver el perfil remoto
+ def show
+ breadcrumb site.title, site_posts_path(site)
+ breadcrumb I18n.t('moderation_queue.index.title'), site_moderation_queue_path(site)
+
+ @remote_profile = actor_moderation.actor.content
+ @moderation_queue = rubanok_process(site.activity_pubs.where(actor_id: actor_moderation.actor_id),
+ with: ActivityPubProcessor)
+
+ breadcrumb @remote_profile['name'] || actor_moderation.actor.mention || actor_moderation.actor.uri, ''
+ end
+
+ def action_on_several
+ redirect_to_moderation_queue!
+
+ actor_moderations = site.actor_moderations.where(id: params[:actor_moderation])
+
+ return if actor_moderations.count.zero?
+
+ authorize actor_moderations
+
+ action = params[:actor_moderation_action].to_sym
+ method = :"#{action}_all!"
+ may = :"may_#{action}?"
+
+ return unless ActorModeration.events.include? action
+
+ ActorModeration.transaction do
+ if action == :report
+ actor_moderations.find_each do |actor_moderation|
+ next unless actor_moderation.public_send(may)
+
+ actor_moderation.update(actor_moderation_params(actor_moderation))
+ end
+ end
+
+ message = actor_moderations.public_send(method) ? :success : :error
+
+ flash[message] = I18n.t("actor_moderations.action_on_several.#{message}")
+ end
+ end
+
+ private
+
+ def actor_moderation
+ @actor_moderation ||= site.actor_moderations.find(params[:actor_moderation_id] || params[:id])
+ end
+end
diff --git a/app/controllers/api/v1/activity_pub/remote_flags_controller.rb b/app/controllers/api/v1/activity_pub/remote_flags_controller.rb
new file mode 100644
index 00000000..23245b8b
--- /dev/null
+++ b/app/controllers/api/v1/activity_pub/remote_flags_controller.rb
@@ -0,0 +1,27 @@
+# frozen_string_literal: true
+
+module Api
+ module V1
+ module ActivityPub
+ # Devuelve los reportes remotos hechos
+ #
+ # @todo Verificar la firma. Por ahora no es necesario porque no es
+ # posible obtener remotamente todos los reportes y se identifican por
+ # UUIDv4.
+ class RemoteFlagsController < BaseController
+ skip_forgery_protection
+
+ def show
+ render json: (remote_flag&.content || {}), content_type: 'application/activity+json'
+ end
+
+ private
+
+ # @return [ActivityPub::RemoteFlag,nil]
+ def remote_flag
+ @remote_flag ||= ::ActivityPub::RemoteFlag.find(params[:id])
+ end
+ end
+ end
+ end
+end
diff --git a/app/controllers/api/v1/contact_controller.rb b/app/controllers/api/v1/contact_controller.rb
index d949dc30..c340097f 100644
--- a/app/controllers/api/v1/contact_controller.rb
+++ b/app/controllers/api/v1/contact_controller.rb
@@ -18,7 +18,7 @@ module Api
# Si todo salió bien, enviar los correos y redirigir al sitio.
# El sitio nos dice a dónde tenemos que ir.
- ContactJob.perform_later site.id,
+ ContactJob.perform_later site,
params[:form],
contact_params.to_h.symbolize_keys,
params[:redirect]
diff --git a/app/controllers/api/v1/notices_controller.rb b/app/controllers/api/v1/notices_controller.rb
index 436c78b5..01bec517 100644
--- a/app/controllers/api/v1/notices_controller.rb
+++ b/app/controllers/api/v1/notices_controller.rb
@@ -10,8 +10,8 @@ module Api
# solo si la API key es verificable. Del otro lado siempre
# respondemos con lo mismo.
def create
- if site&.airbrake_valid? airbrake_token
- BacktraceJob.perform_later site_id: params[:site_id],
+ if (site&.airbrake_valid? airbrake_token) && !detected_device.bot?
+ BacktraceJob.perform_later site: site,
params: airbrake_params.to_h
end
@@ -23,7 +23,39 @@ module Api
# XXX: Por alguna razón Airbrake envía los datos con Content-Type:
# text/plain.
def airbrake_params
- @airbrake_params ||= params.merge!(FastJsonparser.parse(request.raw_post) || {}).permit!
+ @airbrake_params ||=
+ params.merge!(FastJsonparser.parse(request.raw_post) || {})
+ .permit(
+ {
+ errors: [
+ :type,
+ :message,
+ { backtrace: %i[file line column function] }
+ ]
+ },
+ {
+ context: [
+ :url,
+ :language,
+ :severity,
+ :userAgent,
+ :windowError,
+ :rootDirectory,
+ {
+ history: [
+ :date,
+ :type,
+ :severity,
+ :target,
+ :method,
+ :duration,
+ :statusCode,
+ { arguments: [] }
+ ]
+ }
+ ]
+ }
+ )
end
def site
@@ -34,6 +66,11 @@ module Api
def airbrake_token
@airbrake_token ||= params[:key]
end
+
+ # @return [DeviceDetector]
+ def detected_device
+ @detected_device ||= DeviceDetector.new(request.headers['User-Agent'], request.headers)
+ end
end
end
end
diff --git a/app/controllers/api/v1/sites_controller.rb b/app/controllers/api/v1/sites_controller.rb
index ae64cf74..05abc38a 100644
--- a/app/controllers/api/v1/sites_controller.rb
+++ b/app/controllers/api/v1/sites_controller.rb
@@ -9,7 +9,7 @@ module Api
# Lista de nombres de dominios a emitir certificados
def index
- render json: sites_names + alternative_names + api_names + www_names
+ render json: alternative_names + api_names + www_names
end
private
@@ -18,17 +18,16 @@ module Api
name.end_with?('.') ? name[0..-2] : "#{name}.#{Site.domain}"
end
- # Nombres de los sitios
- def sites_names
- Site.all.order(:name).pluck(:name).map do |name|
- canonicalize name
- end
+ def subdomain?(name)
+ name.end_with? ".#{Site.domain}"
end
# Dominios alternativos
def alternative_names
(DeployAlternativeDomain.all.map(&:hostname) + DeployLocalizedDomain.all.map(&:hostname)).map do |name|
canonicalize name
+ end.reject do |name|
+ subdomain? name
end
end
@@ -41,6 +40,8 @@ module Api
.or(Site.where(colaboracion_anonima: true))
.select("'api.' || name as name").map(&:name).map do |name|
canonicalize name
+ end.reject do |name|
+ subdomain? name
end
end
diff --git a/app/controllers/api/v1/webhooks/concerns/webhook_concern.rb b/app/controllers/api/v1/webhooks/concerns/webhook_concern.rb
new file mode 100644
index 00000000..aef2dd83
--- /dev/null
+++ b/app/controllers/api/v1/webhooks/concerns/webhook_concern.rb
@@ -0,0 +1,79 @@
+# frozen_string_literal: true
+
+module Api
+ module V1
+ module Webhooks
+ module Concerns
+ # Helpers para webhooks
+ module WebhookConcern
+ extend ActiveSupport::Concern
+
+ included do
+ skip_before_action :verify_authenticity_token
+
+ # Responde con forbidden si falla la validación del token
+ rescue_from ActiveRecord::RecordNotFound, with: :platforms_answer
+ rescue_from ActiveRecord::RecordInvalid, with: :platforms_answer
+
+ private
+
+ # Valida el token que envía la plataforma en el webhook
+ #
+ # @return [String]
+ def token
+ @token ||=
+ begin
+ header = request.headers
+ token = header['X-Social-Inbox'].presence
+ token ||= header['X-Gitlab-Token'].presence
+ token ||= token_from_signature(header['X-Gitea-Signature'].presence)
+ token ||= token_from_signature(header['X-Hub-Signature-256'].presence, 'sha256=')
+ token
+ ensure
+ raise ActiveRecord::RecordNotFound, 'Proveedor no soportado' if token.blank?
+ end
+ end
+
+ # Valida token a partir de firma
+ #
+ # @param signature [String,nil]
+ # @param prepend [String]
+ # @return [String, nil]
+ def token_from_signature(signature, prepend = '')
+ return if signature.nil?
+
+ payload = request.raw_post
+
+ site.roles.where(temporal: false, rol: 'usuarie').pluck(:token).find do |token|
+ new_signature = prepend + OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), token, payload)
+
+ ActiveSupport::SecurityUtils.secure_compare(new_signature, signature.to_s)
+ end
+ end
+
+ # Encuentra el sitio a partir de la URL
+ #
+ # @return [Site]
+ def site
+ @site ||= Site.find_by_name!(params[:site_id])
+ end
+
+ # Encuentra le usuarie
+ #
+ # @return [Site]
+ def usuarie
+ @usuarie ||= site.roles.find_by!(temporal: false, rol: 'usuarie', token: token).usuarie
+ end
+
+ # Respuesta de error a plataformas
+ def platforms_answer(exception)
+ ExceptionNotifier.notify_exception(exception, data: { headers: request.headers.to_h })
+
+ head :forbidden
+ end
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/app/controllers/api/v1/webhooks/pull_controller.rb b/app/controllers/api/v1/webhooks/pull_controller.rb
new file mode 100644
index 00000000..93256fc7
--- /dev/null
+++ b/app/controllers/api/v1/webhooks/pull_controller.rb
@@ -0,0 +1,25 @@
+# frozen_string_literal: true
+
+module Api
+ module V1
+ module Webhooks
+ # Recibe webhooks y lanza un PullJob
+ class PullController < BaseController
+ include Api::V1::Webhooks::Concerns::WebhookConcern
+
+ # Trae los cambios a partir de un post de Webhooks:
+ # (Gitlab, Github, Gitea, etc)
+ #
+ # @return [nil]
+ def pull
+ message = I18n.with_locale(site.default_locale) do
+ I18n.t('webhooks.pull.message')
+ end
+
+ GitPullJob.perform_later(site, usuarie, message)
+ head :ok
+ end
+ end
+ end
+ end
+end
diff --git a/app/controllers/api/v1/webhooks/social_inbox_controller.rb b/app/controllers/api/v1/webhooks/social_inbox_controller.rb
new file mode 100644
index 00000000..9d215812
--- /dev/null
+++ b/app/controllers/api/v1/webhooks/social_inbox_controller.rb
@@ -0,0 +1,59 @@
+# frozen_string_literal: true
+
+module Api
+ module V1
+ module Webhooks
+ # Recibe webhooks de la Social Inbox
+ #
+ # @see {https://www.w3.org/TR/activitypub/}
+ class SocialInboxController < BaseController
+ include Api::V1::Webhooks::Concerns::WebhookConcern
+
+ # Validar que el token sea correcto
+ before_action :usuarie
+
+ # Cuando una actividad ingresa en la cola de moderación, la
+ # recibimos por acá
+ #
+ # Vamos a recibir Create, Update, Delete, Follow, Undo,
+ # Announce, Like y obtener el objeto dentro de cada una para
+ # guardar un estado asociado al sitio.
+ #
+ # El objeto del estado puede ser un objeto o une actore,
+ # dependiendo de la actividad.
+ def moderationqueued
+ process! :paused
+
+ head :accepted
+ end
+
+ # Cuando la Social Inbox acepta una actividad, la recibimos
+ # igual y la guardamos por si cambiamos de idea.
+ def onapproved
+ process! :approved
+
+ head :accepted
+ end
+
+ # Cuando la Social Inbox rechaza una actividad, la recibimos
+ # igual y la guardamos por si cambiamos de idea.
+ def onrejected
+ process! :rejected
+
+ head :accepted
+ end
+
+ private
+
+ # Envía la actividad para procesamiento por separado.
+ #
+ # @param initial_state [Symbol]
+ def process!(initial_state)
+ ::ActivityPub::ProcessJob
+ .set(wait: ApplicationJob.random_wait)
+ .perform_later(site: site, body: request.raw_post, initial_state: initial_state)
+ end
+ end
+ end
+ end
+end
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index ee153394..117be995 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -3,7 +3,7 @@
# Forma de ingreso a Sutty
class ApplicationController < ActionController::Base
include ExceptionHandler
- include Pundit
+ include Pundit::Authorization
protect_from_forgery with: :null_session, prepend: true
@@ -11,13 +11,10 @@ class ApplicationController < ActionController::Base
before_action :configure_permitted_parameters, if: :devise_controller?
before_action :notify_unconfirmed_email, unless: :devise_controller?
around_action :set_locale
-
- rescue_from Pundit::NilPolicyError, with: :page_not_found
- rescue_from ActionController::RoutingError, with: :page_not_found
- rescue_from ActionController::ParameterMissing, with: :page_not_found
+ after_action :store_location!
before_action do
- Rack::MiniProfiler.authorize_request if current_usuarie&.email&.ends_with?('@' + ENV.fetch('SUTTY', 'sutty.nl'))
+ Rack::MiniProfiler.authorize_request if current_usuarie&.email&.ends_with?("@#{ENV.fetch('SUTTY', 'sutty.nl')}")
end
# No tenemos índice de sutty, vamos directamente a ver el listado de
@@ -59,7 +56,9 @@ class ApplicationController < ActionController::Base
#
# @return [String,Symbol]
def current_locale
- session[:locale] = params[:change_locale_to] if params[:change_locale_to].present?
+ locale = params[:change_locale_to]
+
+ session[:locale] = params[:change_locale_to] if locale.present? && I18n.locale_available?(locale)
session[:locale] || current_usuarie&.lang || I18n.locale
end
@@ -71,11 +70,6 @@ class ApplicationController < ActionController::Base
I18n.with_locale(current_locale, &action)
end
- # Muestra una página 404
- def page_not_found
- render 'application/page_not_found', status: :not_found
- end
-
# Necesario para poder acceder a Blazer. Solo les usuaries de este
# sitio pueden acceder al panel.
def require_usuarie
@@ -111,6 +105,16 @@ class ApplicationController < ActionController::Base
def after_sign_in_path_for(resource)
session[:locale] = nil
- sites_path
+ super
+ end
+
+ # Guardar la ubicación para que devise redirija a donde íbamos, a
+ # menos que estemos recibiendo información o intentando ingresar.
+ def store_location!
+ return if request.xhr?
+ return unless request.request_method_symbol == :GET
+ return if devise_controller? && !is_a?(Devise::RegistrationsController) && params[:action] != 'edit'
+
+ session[:usuarie_return_to] = request.fullpath
end
end
diff --git a/app/controllers/build_stats_controller.rb b/app/controllers/build_stats_controller.rb
index 31a4c5d6..339f17f0 100644
--- a/app/controllers/build_stats_controller.rb
+++ b/app/controllers/build_stats_controller.rb
@@ -22,7 +22,12 @@ class BuildStatsController < ApplicationController
@table = site.deployment_list.map do |deploy|
type = deploy.class.name.underscore
- urls = deploy.respond_to?(:urls) ? deploy.urls : [deploy.url].compact
+ urls = deploy.urls.map do |url|
+ URI.parse(url)
+ rescue URI::Error
+ nil
+ end.compact
+
urls = [nil] if urls.empty?
build_stat = deploy.build_stats.where(status: true).last
seconds = build_stat&.seconds || 0
diff --git a/app/controllers/concerns/exception_handler.rb b/app/controllers/concerns/exception_handler.rb
index 8c4f54c8..7c1cd540 100644
--- a/app/controllers/concerns/exception_handler.rb
+++ b/app/controllers/concerns/exception_handler.rb
@@ -12,13 +12,31 @@ module ExceptionHandler
rescue_from PageNotFound, with: :page_not_found
rescue_from ActionController::RoutingError, with: :page_not_found
rescue_from Pundit::NilPolicyError, with: :page_not_found
+ rescue_from Pundit::NilPolicyError, with: :page_not_found
+ rescue_from ActionController::RoutingError, with: :page_not_found
+ rescue_from ActionController::ParameterMissing, with: :page_not_found
end
def site_not_found
+ reset_response!
+
+ flash[:error] = I18n.t('errors.site_not_found')
+
redirect_to sites_path
end
def page_not_found
- send_file Rails.root.join('public', '404.html')
+ reset_response!
+
+ render 'application/page_not_found', status: :not_found
+ end
+
+ private
+
+ def reset_response!
+ self.response_body = nil
+ @_response_body = nil
+
+ headers.delete('Location')
end
end
diff --git a/app/controllers/concerns/moderation_concern.rb b/app/controllers/concerns/moderation_concern.rb
new file mode 100644
index 00000000..8340ec2a
--- /dev/null
+++ b/app/controllers/concerns/moderation_concern.rb
@@ -0,0 +1,36 @@
+# frozen_string_literal: true
+
+module ModerationConcern
+ extend ActiveSupport::Concern
+
+ included do
+ private
+
+ def redirect_to_moderation_queue!
+ redirect_back fallback_location: site_moderation_queue_path(**(session[:moderation_queue_filters] || {}))
+ end
+
+ # @return [String]
+ def panel_actor_mention
+ @panel_actor_mention ||= ENV.fetch('PANEL_ACTOR_MENTION', '@sutty@sutty.nl')
+ end
+
+ def remote_flag_params(model)
+ remote_flag = ActivityPub::RemoteFlag.find_by(actor_id: model.actor_id)
+
+ { remote_flag_attributes: { id: remote_flag&.id, message: ''.dup } }.tap do |p|
+ p[:remote_flag_attributes][:site_id] = model.site_id
+ p[:remote_flag_attributes][:actor_id] = model.actor_id
+
+ I18n.available_locales.each do |locale|
+ p[:remote_flag_attributes][:message].tap do |m|
+ m << I18n.t(locale)
+ m << ': '
+ m << I18n.t('remote_flags.report_message', locale: locale, panel_actor_mention: panel_actor_mention)
+ m << '\n\n'
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/app/controllers/concerns/moderation_filters_concern.rb b/app/controllers/concerns/moderation_filters_concern.rb
new file mode 100644
index 00000000..25293a4f
--- /dev/null
+++ b/app/controllers/concerns/moderation_filters_concern.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+module ModerationFiltersConcern
+ extend ActiveSupport::Concern
+
+ included do
+ before_action :store_filters_in_session!, only: %i[index show]
+
+ private
+
+ def store_filters_in_session!
+ session[:moderation_queue_filters] = params.permit(:instance_state, :actor_state, :activity_pub_state)
+ end
+ end
+end
diff --git a/app/controllers/env_controller.rb b/app/controllers/env_controller.rb
index de61c704..500cdee4 100644
--- a/app/controllers/env_controller.rb
+++ b/app/controllers/env_controller.rb
@@ -4,7 +4,7 @@ class EnvController < ActionController::Base
skip_before_action :verify_authenticity_token
def index
- @site = Site.find_by_name('panel')
+ @site = Site.find_by_name('panel') || Site.first
stale? @site if @site
end
diff --git a/app/controllers/fediblock_states_controller.rb b/app/controllers/fediblock_states_controller.rb
new file mode 100644
index 00000000..4d9cc968
--- /dev/null
+++ b/app/controllers/fediblock_states_controller.rb
@@ -0,0 +1,49 @@
+# frozen_string_literal: true
+
+# Estado de las listas de bloqueo en cada sitio
+class FediblockStatesController < ApplicationController
+ # Realiza cambios en las listas de bloqueo
+ def action_on_several
+ # Encontrar todas y deshabilitar las que no se enviaron
+ site.fediblock_states.all.find_each do |fediblock_state|
+ if fediblock_states_ids.include? fediblock_state.id
+ fediblock_state.enable! if fediblock_state.may_enable?
+ elsif fediblock_state.may_disable?
+ fediblock_state.disable!
+ end
+
+ flash[:success] = I18n.t('fediblock_states.action_on_several.success')
+ rescue Exception => e
+ ExceptionNotifier.notify_exception(e, data: { site: site.name })
+
+ flash.delete(:success)
+ flash[:error] = I18n.t('fediblock_states.action_on_several.error')
+ end
+
+ # Bloquear otras instancias
+ if custom_blocklist.present?
+ if ActivityPub::InstanceModerationJob.perform_now(site: site, hostnames: custom_blocklist)
+ flash[:success] = I18n.t('fediblock_states.action_on_several.custom_blocklist_success')
+ else
+ flash[:error] = I18n.t('fediblock_states.action_on_several.custom_blocklist_error')
+ end
+ end
+
+ redirect_to site_moderation_queue_path
+ end
+
+ private
+
+ def fediblock_states_ids
+ params[:fediblock_states_ids] || []
+ end
+
+ # La lista de hostnames
+ def custom_blocklist
+ @custom_blocklist ||= fediblocks_states_params[:custom_blocklist].split("\n").map(&:strip).select(&:present?)
+ end
+
+ def fediblocks_states_params
+ @fediblocks_states_params ||= params.permit(:custom_blocklist, fediblock_states_ids: [])
+ end
+end
diff --git a/app/controllers/instance_moderations_controller.rb b/app/controllers/instance_moderations_controller.rb
new file mode 100644
index 00000000..de990eb1
--- /dev/null
+++ b/app/controllers/instance_moderations_controller.rb
@@ -0,0 +1,51 @@
+# frozen_string_literal: true
+
+# Actualiza la relación entre un sitio y una instancia
+class InstanceModerationsController < ApplicationController
+ include ModerationConcern
+
+ InstanceModeration.events.each do |event|
+ define_method(event) do
+ authorize instance_moderation
+
+ message =
+ if instance_moderation.public_send(:"may_#{event}?") && instance_moderation.public_send(:"#{event}!")
+ :success
+ else
+ :error
+ end
+
+ flash[message] = I18n.t("instance_moderations.#{event}.#{message}")
+
+ redirect_to_moderation_queue!
+ end
+ end
+
+ def action_on_several
+ redirect_to_moderation_queue!
+
+ instance_moderations = site.instance_moderations.where(id: params[:instance_moderation])
+
+ return if instance_moderations.count.zero?
+
+ authorize instance_moderations
+
+ action = params[:instance_moderation_action].to_sym
+ method = :"#{action}_all!"
+
+ return unless InstanceModeration.events.include? action
+
+ InstanceModeration.transaction do
+ message = instance_moderations.public_send(method) ? :success : :error
+
+ flash[:message] = I18n.t("instance_moderations.action_on_several.#{message}")
+ end
+ end
+
+ private
+
+ # @return [InstanceModeration]
+ def instance_moderation
+ @instance_moderation ||= site.instance_moderations.find(params[:instance_moderation_id])
+ end
+end
diff --git a/app/controllers/moderation_queue_controller.rb b/app/controllers/moderation_queue_controller.rb
new file mode 100644
index 00000000..ef830c41
--- /dev/null
+++ b/app/controllers/moderation_queue_controller.rb
@@ -0,0 +1,26 @@
+# frozen_string_literal: true
+
+# Cola de moderación de ActivityPub
+class ModerationQueueController < ApplicationController
+ include ModerationFiltersConcern
+
+ before_action :authenticate_usuarie!
+
+ breadcrumb -> { current_usuarie.email }, :edit_usuarie_registration_path
+ breadcrumb 'sites.index', :sites_path, match: :exact
+
+ # Cola de moderación viendo todo el sitio
+ def index
+ authorize ModerationQueue.new(site)
+ breadcrumb site.title, site_posts_path(site)
+ breadcrumb I18n.t('moderation_queue.index.title'), ''
+
+ site.moderation_checked!
+
+ # @todo cambiar el estado por query
+ @activity_pubs = site.activity_pubs
+ @instance_moderations = rubanok_process(site.instance_moderations, with: InstanceModerationProcessor)
+ @actor_moderations = rubanok_process(site.actor_moderations, with: ActorModerationProcessor)
+ @moderation_queue = rubanok_process(site.activity_pubs, with: ActivityPubProcessor)
+ end
+end
diff --git a/app/controllers/posts_controller.rb b/app/controllers/posts_controller.rb
index 9720fe13..057c3068 100644
--- a/app/controllers/posts_controller.rb
+++ b/app/controllers/posts_controller.rb
@@ -24,6 +24,7 @@ class PostsController < ApplicationController
# Todos los artículos de este sitio para el idioma actual
@posts = site.indexed_posts.where(locale: locale)
+ @posts = @posts.page(filter_params.delete(:page)) if site.pagination
# De este tipo
@posts = @posts.where(layout: filter_params[:layout]) if filter_params[:layout]
# Que estén dentro de la categoría
@@ -154,7 +155,7 @@ class PostsController < ApplicationController
#
# @return [Hash]
def filter_params
- @filter_params ||= params.permit(:q, :category, :layout).to_hash.select do |_, v|
+ @filter_params ||= params.permit(:q, :category, :layout, :page).to_hash.select do |_, v|
v.present?
end.transform_keys(&:to_sym)
end
diff --git a/app/controllers/sites_controller.rb b/app/controllers/sites_controller.rb
index 63865e44..e911daac 100644
--- a/app/controllers/sites_controller.rb
+++ b/app/controllers/sites_controller.rb
@@ -15,6 +15,19 @@ class SitesController < ApplicationController
fresh_when @sites
end
+ # Genera la caja del estado para HTMX
+ def status
+ authorize site
+
+ render('sites/status', layout: false) if stale? site
+ end
+
+ def button
+ authorize site
+
+ render('sites/build', layout: false)
+ end
+
# No tenemos propiedades de un sitio aún, así que vamos al listado de
# artículos
def show
@@ -57,6 +70,7 @@ class SitesController < ApplicationController
usuarie: current_usuarie)
if service.update.valid?
+ flash[:notice] = I18n.t('sites.update.post')
redirect_to site_posts_path(site, locale: site.default_locale)
else
render 'edit'
@@ -109,27 +123,6 @@ class SitesController < ApplicationController
redirect_to sites_path
end
- # Obtiene y streamea archivos estáticos desde el repositorio mismo,
- # pero sólo los públicos (es decir los archivos subidos desde Sutty).
- def static_file
- authorize site
-
- file = params.require(:file) + '.' + params.require(:format)
-
- raise ActionController::RoutingError.new(nil, nil) unless file.start_with? 'public/'
-
- path = site.relative_path file
-
- raise ActionController::RoutingError.new(nil, nil) unless File.exist? path
-
- # TODO: Hacer esto usa recursos, pero menos que generar el sitio
- # cada vez. Para poder usar X-Accel tendríamos que montar los
- # repositorios en el servidor web, cosa que no queremos, o hacer
- # links simbólicos desde todos los public, o usar un servidor web
- # local que soporte sendfile mejor que Rails (nghttpd?)
- send_file path
- end
-
private
def site
diff --git a/app/controllers/stats_controller.rb b/app/controllers/stats_controller.rb
index c2c7bc58..bc5bb962 100644
--- a/app/controllers/stats_controller.rb
+++ b/app/controllers/stats_controller.rb
@@ -59,9 +59,6 @@ class StatsController < ApplicationController
.order('sum(value) desc')
.sum(:value)
.transform_values(&:to_i)
- .transform_values do |v|
- v * nodes
- end
end
end
end
@@ -73,9 +70,6 @@ class StatsController < ApplicationController
stats = rollup_scope.where_dimensions(host: hostnames).multi_series('host', interval: interval).tap do |series|
series.each do |serie|
serie[:name] = serie.dig(:dimensions, 'host')
- serie[:data].transform_values! do |value|
- value * nodes
- end
end
end
@@ -99,9 +93,6 @@ class StatsController < ApplicationController
stats = rollup_scope.where_dimensions(**options).multi_series('host|uri', interval: interval).tap do |series|
series.each do |serie|
serie[:name] = serie[:dimensions].slice('host', 'uri').values.join.sub('/index.html', '/')
- serie[:data].transform_values! do |value|
- value * nodes
- end
end
end
@@ -197,21 +188,6 @@ class StatsController < ApplicationController
end
end
- # Obtiene la cantidad de nodos de Sutty, para poder calcular la
- # cantidad de visitas.
- #
- # Como repartimos las visitas por nodo rotando las IPs en el
- # nameserver y los resolvedores de DNS eligen un nameserver
- # aleatoriamente, la cantidad de visitas se reparte
- # equitativamente.
- #
- # XXX: Remover cuando podamos centralizar los AccessLog
- #
- # @return [Integer]
- def nodes
- @nodes ||= ENV.fetch('NODES', 1).to_i
- end
-
def period
@period ||= begin
p = params.permit(:period_start, :period_end)
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index 9f7be213..fcbd4074 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -13,7 +13,7 @@ module ApplicationHelper
root = names.shift
names.each do |n|
- root += '[' + n.to_s + ']'
+ root += "[#{n}]"
end
[root, name]
@@ -22,7 +22,7 @@ module ApplicationHelper
def plain_field_name_for(*names)
root, name = field_name_for(*names)
- root + '[' + name.to_s + ']'
+ "#{root}[#{name}]"
end
def distance_of_time_in_words_if_more_than_a_minute(seconds)
@@ -33,10 +33,24 @@ module ApplicationHelper
end
end
- # Devuelve todas las etiquetas HTML que queremos mantener
- def all_html_tags
- %w[h1 h2 h3 h4 h5 h6 p a ul ol li table tr td th tbody thead
- tfoot em strong sup blockquote cite pre section article]
+ # Sanitizador que elimina todo
+ #
+ # @param html [String]
+ # @return [String]
+ def text_plain(html)
+ sanitize(html, tags: [], attributes: [])
+ end
+
+ # Sanitizador con etiquetas y atributos por defecto
+ #
+ # @param html [String]
+ # @param options [Hash]
+ # @return [String]
+ def sanitize(html, options = {})
+ options[:tags] ||= Sutty::ALLOWED_TAGS
+ options[:attributes] ||= Sutty::ALLOWED_ATTRIBUTES
+
+ super(html, options)
end
# Genera HTML y limpia etiquetas innecesarias
diff --git a/app/helpers/moderation_queue_helper.rb b/app/helpers/moderation_queue_helper.rb
new file mode 100644
index 00000000..c69364ae
--- /dev/null
+++ b/app/helpers/moderation_queue_helper.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+module ModerationQueueHelper
+ def filter_states(**args)
+ params.permit(:instance_state, :actor_state, :activity_pub_state).merge(**args)
+ end
+
+ def active?(states, state_name, state)
+ if params[state_name].present?
+ params[state_name] == state.to_s
+ else
+ states.first == state
+ end
+ end
+end
diff --git a/app/javascript/controllers/details_controller.js b/app/javascript/controllers/details_controller.js
new file mode 100644
index 00000000..57935e1e
--- /dev/null
+++ b/app/javascript/controllers/details_controller.js
@@ -0,0 +1,17 @@
+import { Controller } from "stimulus";
+
+export default class extends Controller {
+ static targets = [];
+
+ connect() {
+ const state = window.sessionStorage.getItem(this.element.id);
+
+ if (state === "open") {
+ this.element.setAttribute("open", true);
+ }
+ }
+
+ store(event = undefined) {
+ window.sessionStorage.setItem(this.element.id, event.newState);
+ }
+}
diff --git a/app/javascript/controllers/dropdown_controller.js b/app/javascript/controllers/dropdown_controller.js
new file mode 100644
index 00000000..e2b657fd
--- /dev/null
+++ b/app/javascript/controllers/dropdown_controller.js
@@ -0,0 +1,106 @@
+import { Controller } from "stimulus";
+
+// https://getbootstrap.com/docs/4.6/components/dropdowns/#single-button
+export default class extends Controller {
+ static targets = ["dropdown", "button", "item"];
+
+ // Al iniciar el controlador
+ connect() {
+ // Llevar la cuenta del item con foco
+ this.data.set("item", -1);
+
+ // Gestionar las teclas
+ this.keydownEvent = this.keydown.bind(this);
+ this.element.addEventListener("keydown", this.keydownEvent);
+
+ // Gestionar el foco
+ this.focusinEvent = this.focusin.bind(this);
+ }
+
+ // Al eliminar el controlador (al pasar a otra página)
+ disconnect() {
+ // Eliminar la gestión de teclas
+ this.element.removeEventListener("keydown", this.keydownEvent);
+ // Eliminar la gestión del foco
+ document.removeEventListener("focusin", this.focusinEvent);
+ }
+
+ // Mostrar u ocultar
+ toggle(event) {
+ (this.buttonTarget.ariaExpanded === "false") ? this.show() : this.hide();
+ }
+
+ // Mostrar
+ show() {
+ this.buttonTarget.ariaExpanded = "true";
+ this.element.classList.add("show");
+ this.dropdownTarget.classList.add("show");
+
+ // Activar la gestión del foco
+ document.addEventListener("focusin", this.focusinEvent);
+ }
+
+ // Ocultar
+ hide() {
+ this.buttonTarget.ariaExpanded = "false";
+ this.element.classList.remove("show");
+ this.dropdownTarget.classList.remove("show");
+ // Volver al inicio el foco de items
+ this.data.set("item", -1);
+
+ // Desactivar la gestión del foco
+ document.removeEventListener("focusin", this.focusinEvent);
+ }
+
+ // Gestionar el foco
+ focusin(event) {
+ const item = this.itemTargets.find(x => x === event.target);
+
+ // Si el foco se coloca sobre elementos del controlador, no hacer
+ // nada
+ if (event.target === this.buttonTarget || item) {
+ // Si es un item, el comportamiento de las flechas verticales y el
+ // Tab tiene que ser igual
+ if (item) this.data.set("item", this.itemTargets.indexOf(item));
+
+ return;
+ }
+
+ // De lo contrario, ocultar
+ this.hide();
+ }
+
+ // Gestionar las teclas
+ keydown(event) {
+ const initial = parseInt(this.data.get("item"));
+ let item = initial;
+
+ switch (event.keyCode) {
+ case 27:
+ // Esc cierra el menú y devuelve el foco
+ this.hide();
+ this.buttonTarget.focus();
+ break;
+ case 38:
+ // Moverse hacia arriba con tope en el primer item
+ if (item > -1) item--;
+
+ break;
+ case 40:
+ // Moverse hacia abajo con tope en el último ítem, si el
+ // dropdown estaba cerrado, abrirlo.
+ if (item === -1) this.show();
+ if (item <= this.itemTargets.length) item++;
+
+ break;
+ }
+
+ // Si cambió la posición del ítem, darle foco y actualizar el
+ // contador.
+ if (initial !== item) {
+ this.itemTargets[item]?.focus();
+
+ this.data.set("item", item);
+ }
+ }
+}
diff --git a/app/javascript/controllers/file_preview_controller.js b/app/javascript/controllers/file_preview_controller.js
new file mode 100644
index 00000000..9eaaab2d
--- /dev/null
+++ b/app/javascript/controllers/file_preview_controller.js
@@ -0,0 +1,19 @@
+import { Controller } from 'stimulus'
+import bsCustomFileInput from "bs-custom-file-input";
+
+document.addEventListener("turbolinks:load", () => {
+ bsCustomFileInput.init();
+});
+
+export default class extends Controller {
+ static targets = ["preview", "input"];
+
+ connect() {
+ }
+
+ update(event = undefined) {
+ if (!this.hasPreviewTarget) return;
+
+ this.previewTarget.src = window.URL.createObjectURL(this.inputTarget.files[0])
+ }
+}
diff --git a/app/javascript/controllers/select_all_controller.js b/app/javascript/controllers/select_all_controller.js
new file mode 100644
index 00000000..7aca0f59
--- /dev/null
+++ b/app/javascript/controllers/select_all_controller.js
@@ -0,0 +1,11 @@
+import { Controller } from "stimulus";
+
+export default class extends Controller {
+ static targets = ["toggle", "input"];
+
+ toggle(event = undefined) {
+ this.inputTargets.forEach(input => {
+ input.checked = this.toggleTarget.checked;
+ });
+ }
+}
diff --git a/app/javascript/etc/htmx_abort.js b/app/javascript/etc/htmx_abort.js
new file mode 100644
index 00000000..308d0315
--- /dev/null
+++ b/app/javascript/etc/htmx_abort.js
@@ -0,0 +1,7 @@
+// Cancela las peticiones pendientes de htmx para todos los elementos al
+// cambiar de página.
+document.addEventListener("turbolinks:click", () => {
+ for (const hx of document.querySelectorAll("[hx-get]")) {
+ window.htmx.trigger(hx, "htmx:abort");
+ }
+});
diff --git a/app/javascript/etc/image_preview.js b/app/javascript/etc/image_preview.js
deleted file mode 100644
index fcdeec85..00000000
--- a/app/javascript/etc/image_preview.js
+++ /dev/null
@@ -1,11 +0,0 @@
-document.addEventListener('turbolinks:load', () => {
- document.querySelectorAll('input[type=file]').forEach(file => {
- if (!file.dataset.preview) return
-
- file.addEventListener('change', event => {
- if (file.files.length === 0) return
-
- document.querySelector('#' + file.dataset.preview).src = window.URL.createObjectURL(file.files[0])
- })
- })
-})
diff --git a/app/javascript/etc/index.js b/app/javascript/etc/index.js
index 482b78f6..3a1ef75c 100644
--- a/app/javascript/etc/index.js
+++ b/app/javascript/etc/index.js
@@ -1,8 +1,9 @@
import './external_links'
-import './image_preview'
import './input-date'
import './input-tag'
import './prosemirror'
import './timezone'
import './turbolinks-anchors'
import './validation'
+import './new_editor'
+import './htmx_abort'
diff --git a/app/javascript/etc/new_editor.js b/app/javascript/etc/new_editor.js
new file mode 100644
index 00000000..dbc87bbc
--- /dev/null
+++ b/app/javascript/etc/new_editor.js
@@ -0,0 +1,14 @@
+import SuttyEditor from "@suttyweb/editor";
+
+import "@suttyweb/editor/dist/style.css";
+
+document.addEventListener("turbolinks:load", () => {
+ document.querySelectorAll(".new-editor").forEach((editorContainer) => {
+ new SuttyEditor({
+ target: editorContainer,
+ props: {
+ textareaEl: editorContainer.querySelector("textarea"),
+ },
+ });
+ });
+});
diff --git a/app/javascript/packs/application.js b/app/javascript/packs/application.js
index 9cbc30bf..e10e2b5d 100644
--- a/app/javascript/packs/application.js
+++ b/app/javascript/packs/application.js
@@ -9,9 +9,16 @@ try {
host: window.env.PANEL_URL
});
+ const ignoredErrors = ["htmx:afterRequest", "htmx:sendAbort"];
+
console.originalError = console.error;
console.error = (...e) => {
- window.airbrake.notify(e.join(" "));
+ const msg = e.join(" ");
+
+ if (!ignoredErrors.some(x => msg.includes(x))) {
+ window.airbrake.notify(e.join(" "));
+ }
+
return console.originalError(...e);
};
} catch(e) {
@@ -33,3 +40,5 @@ import 'chartkick/chart.js'
Rails.start()
Turbolinks.start()
ActiveStorage.start()
+
+window.htmx = require('htmx.org/dist/htmx.js')
diff --git a/app/jobs/activity_pub/fediblock_fetch_job.rb b/app/jobs/activity_pub/fediblock_fetch_job.rb
new file mode 100644
index 00000000..3d12f4cd
--- /dev/null
+++ b/app/jobs/activity_pub/fediblock_fetch_job.rb
@@ -0,0 +1,25 @@
+# frozen_string_literal: true
+
+class ActivityPub
+ # Se encarga de mantener las listas de bloqueo actualizadas. Luego de
+ # actualizar el listado de instancias, bloquea las instancias en cada
+ # sitio que tenga el fediblock habilitado.
+ class FediblockFetchJob < ApplicationJob
+ self.priority = 50
+
+ def perform
+ ActivityPub::Fediblock.find_each do |fediblock|
+ fediblock.process!
+
+ hostnames_added = fediblock.hostnames - fediblock.hostnames_was
+
+ # No hacer nada si no cambió con respecto a la versión anterior
+ next if hostnames_added.empty?
+
+ ActivityPub::FediblockUpdatedJob.perform_later(fediblock: fediblock, hostnames: hostnames_added)
+ rescue ActivityPub::Fediblock::FediblockDownloadError => e
+ ExceptionNotifier.notify_exception(e, data: { fediblock: fediblock.title })
+ end
+ end
+ end
+end
diff --git a/app/jobs/activity_pub/fediblock_updated_job.rb b/app/jobs/activity_pub/fediblock_updated_job.rb
new file mode 100644
index 00000000..1bb47517
--- /dev/null
+++ b/app/jobs/activity_pub/fediblock_updated_job.rb
@@ -0,0 +1,29 @@
+# frozen_string_literal: true
+
+# Se encarga de mantener sincronizadas las listas de instancias
+# de los fediblocks con los sitios que las tengan activadas.
+#
+# También va a asociar las listas con todos los sitios que tengan la
+# Social Inbox habilitada.
+class ActivityPub
+ class FediblockUpdatedJob < ApplicationJob
+ self.priority = 50
+
+ # @param :fediblock [ActivityPub::Fediblock]
+ # @param :hostnames [Array]
+ def perform(fediblock:, hostnames:)
+ instances = ActivityPub::Instance.where(hostname: hostnames)
+
+ # Todos los sitios con la Social Inbox habilitada
+ Site.where(id: DeploySocialDistributedPress.pluck(:site_id)).find_each do |site|
+ # Crea el estado si no existía
+ fediblock_state = site.fediblock_states.find_or_create_by(fediblock: fediblock)
+
+ # No hace nada con los deshabilitados
+ next unless fediblock_state.enabled?
+
+ ActivityPub::InstanceModerationJob.perform_later(site: site, hostnames: hostnames)
+ end
+ end
+ end
+end
diff --git a/app/jobs/activity_pub/fetch_job.rb b/app/jobs/activity_pub/fetch_job.rb
new file mode 100644
index 00000000..07190c35
--- /dev/null
+++ b/app/jobs/activity_pub/fetch_job.rb
@@ -0,0 +1,65 @@
+# frozen_string_literal: true
+
+# Obtiene o actualiza el contenido de un objeto, usando las credenciales
+# del sitio.
+#
+# XXX: Esto usa las credenciales del sitio para volver el objeto
+# disponible para todo el CMS. Asumimos que el objeto devuelto es el
+# mismo para todo el mundo y las credenciales solo son para
+# autenticación.
+class ActivityPub
+ class FetchJob < ApplicationJob
+ self.priority = 50
+
+ attr_reader :object, :response
+
+ # Notificar errores de JSON con el contenido, tomar los errores de
+ # validación y conexión como errores temporales y notificar todo lo
+ # demás sin reintentar.
+ #
+ # @param error [Exception]
+ # @return [Bool]
+ discard_on(FastJsonparser::ParseError) do |error|
+ ExceptionNotifier.notify_exception(error, data: { site: site.name, object: object.uri, body: response.body })
+ end
+
+ retry_on ActiveRecord::RecordInvalid
+ retry_on SocketError, wait: ApplicationJob.random_wait
+ retry_on SystemCallError, wait: ApplicationJob.random_wait
+ retry_on Net::OpenTimeout, wait: ApplicationJob.random_wait
+ retry_on OpenSSL::OpenSSLError, wait: ApplicationJob.random_wait
+
+ def perform(site:, object_id:)
+ ActivityPub::Object.transaction do
+ @site = site
+ @object = ::ActivityPub::Object.find(object_id)
+
+ return if object.blank?
+ return if object.activity_pubs.where(aasm_state: 'removed').count.positive?
+
+ @response = site.social_inbox.dereferencer.get(uri: object.uri)
+
+ # @todo Fallar cuando la respuesta no funcione?
+ # @todo Eliminar en 410 Gone
+ return unless response.success?
+ # Ignorar si ya la caché fue revalidada y ya teníamos el
+ # contenido
+ return if response.hit? && object.content.present?
+
+ current_type = object.type
+ content = FastJsonparser.parse(response.body)
+
+ # Modificar atómicamente
+ ::ActivityPub::Object.lock.find(object_id).update!(content: content,
+ type: ActivityPub::Object.type_from(content).name)
+
+ object = ::ActivityPub::Object.find(object_id)
+ # Actualiza la mención
+ object.actor&.save! if object.actor_type?
+
+ # Arreglar las relaciones con actividades también
+ ActivityPub.where(object_id: object.id).update_all(object_type: object.type, updated_at: Time.now)
+ end
+ end
+ end
+end
diff --git a/app/jobs/activity_pub/inbox_job.rb b/app/jobs/activity_pub/inbox_job.rb
new file mode 100644
index 00000000..cb807704
--- /dev/null
+++ b/app/jobs/activity_pub/inbox_job.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+class ActivityPub
+ class InboxJob < ApplicationJob
+ self.priority = 10
+
+ # @param :site [Site]
+ # @param :activity [String]
+ # @param :action [Symbol]
+ def perform(site:, activity:, action:)
+ response = site.social_inbox.inbox.public_send(action, id: activity)
+
+ raise response.body unless response.success?
+ end
+ end
+end
diff --git a/app/jobs/activity_pub/instance_fetch_job.rb b/app/jobs/activity_pub/instance_fetch_job.rb
new file mode 100644
index 00000000..dc84caf2
--- /dev/null
+++ b/app/jobs/activity_pub/instance_fetch_job.rb
@@ -0,0 +1,38 @@
+# frozen_string_literal: true
+
+class ActivityPub
+ # Obtiene o actualiza los datos de una instancia. Usamos un cliente
+ # de ActivityPub porque la instancia podría estar en federación
+ # limitada.
+ class InstanceFetchJob < ApplicationJob
+ self.priority = 100
+
+ def perform(site:, instance:)
+ %w[/api/v2/instance /api/v1/instance].each do |api|
+ uri = SocialInbox.generate_uri(instance.hostname) do |u|
+ u.path = api
+ end
+
+ response = site.social_inbox.dereferencer.get(uri: uri)
+
+ next unless response.success?
+ # @todo Validate schema
+ next unless response.parsed_response.is_a?(DistributedPress::V1::Social::ReferencedObject)
+
+ instance.update(content: response.parsed_response.object)
+
+ break
+ rescue BRS::BaseError,
+ Errno::ECONNREFUSED,
+ HTTParty::Error,
+ JSON::JSONError,
+ Net::OpenTimeout,
+ OpenSSL::OpenSSLError,
+ SocketError,
+ Errno::ENETUNREACH => e
+ ExceptionNotifier.notify_exception(e, data: { instance: uri })
+ break
+ end
+ end
+ end
+end
diff --git a/app/jobs/activity_pub/instance_moderation_job.rb b/app/jobs/activity_pub/instance_moderation_job.rb
new file mode 100644
index 00000000..9da0627f
--- /dev/null
+++ b/app/jobs/activity_pub/instance_moderation_job.rb
@@ -0,0 +1,38 @@
+# frozen_string_literal: true
+
+class ActivityPub
+ # Bloquea varias instancias de una sola vez
+ class InstanceModerationJob < ApplicationJob
+ # @param :site [Site]
+ # @param :hostnames [Array]
+ # @param :perform_remotely [Bool]
+ def perform(site:, hostnames:, perform_remotely: true)
+ # Crear las instancias que no existan todavía
+ hostnames.each do |hostname|
+ ActivityPub::Instance.lock.find_or_create_by(hostname: hostname)
+ end
+
+ instances = ActivityPub::Instance.where(hostname: hostnames)
+
+ Site.transaction do
+ # Crea todas las moderaciones de instancia con un estado por
+ # defecto si no existen
+ instances.find_each do |instance|
+ # Esto bloquea cada una individualmente en la Social Inbox,
+ # idealmente son pocas instancias las que aparecen.
+ site.instance_moderations.lock.find_or_create_by(instance: instance)
+ end
+
+ scope = site.instance_moderations.where(instance_id: instances.ids)
+
+ if perform_remotely
+ scope.block_all!
+ else
+ scope.block_all_without_callbacks!
+ end
+
+ ActivityPub::SyncListsJob.perform_later(site: site)
+ end
+ end
+ end
+end
diff --git a/app/jobs/activity_pub/process_job.rb b/app/jobs/activity_pub/process_job.rb
new file mode 100644
index 00000000..69c83e33
--- /dev/null
+++ b/app/jobs/activity_pub/process_job.rb
@@ -0,0 +1,145 @@
+# frozen_string_literal: true
+
+class ActivityPub
+ # Procesar las actividades a medida que llegan
+ class ProcessJob < ApplicationJob
+ attr_reader :body
+
+ retry_on ActiveRecord::RecordInvalid
+
+ # Procesa la actividad en segundo plano
+ #
+ # @param :body [String]
+ # @param :initial_state [Symbol,String]
+ def perform(site:, body:, initial_state: :paused)
+ @site = site
+ @body = body
+
+ ActiveRecord::Base.connection_pool.with_connection do
+ ::ActivityPub.transaction do
+ # Crea todos los registros necesarios y actualiza el estado
+ actor.present?
+ instance.present?
+ object.present?
+ activity_pub.present?
+ activity_pub.update(aasm_state: initial_state)
+
+ activity.update_activity_pub_state!
+ end
+ end
+ end
+
+ private
+
+ # Si el objeto ya viene incorporado en la actividad o lo tenemos
+ # que traer remotamente.
+ #
+ # @return [Bool]
+ def object_embedded?
+ @object_embedded ||= original_activity[:object].is_a?(Hash)
+ end
+
+ # Encuentra la URI del objeto o falla si no la encuentra.
+ #
+ # @return [String]
+ def object_uri
+ @object_uri ||= ::ActivityPub.uri_from_object(original_activity[:object])
+ ensure
+ raise ActiveRecord::RecordNotFound, 'object id missing' if @object_uri.blank?
+ end
+
+ # Atajo a la instancia
+ #
+ # @return [ActivityPub::Instance]
+ def instance
+ actor.instance
+ end
+
+ # Genera un objeto a partir de la actividad. Si el objeto ya
+ # existe, actualiza su contenido. Si el objeto no viene
+ # incorporado, obtenemos el contenido más tarde.
+ #
+ # @return [ActivityPub::Object]
+ def object
+ @object ||= ::ActivityPub::Object.lock.find_or_initialize_by(uri: object_uri).tap do |o|
+ o.lock! if o.persisted?
+ o.content = original_object if object_embedded?
+
+ o.save!
+
+ # XXX: el objeto necesita ser guardado antes de poder
+ # procesarlo. No usamos GlobalID porque el tipo de objeto
+ # cambia y produce un error de deserialización.
+ ::ActivityPub::FetchJob.perform_later(site: site, object_id: o.id) unless object_embedded?
+ end
+ end
+
+ # Genera el seguimiento del estado del objeto con respecto al
+ # sitio.
+ #
+ # @return [ActivityPub]
+ def activity_pub
+ @activity_pub ||= site.activity_pubs.lock.find_or_create_by!(site: site, actor: actor, instance: instance,
+ object_id: object.id, object_type: object.type)
+ end
+
+ # Crea la actividad y la vincula con el estado
+ #
+ # @return [ActivityPub::Activity]
+ def activity
+ @activity ||=
+ ::ActivityPub::Activity
+ .type_from(original_activity)
+ .lock
+ .find_or_initialize_by(uri: original_activity[:id], activity_pub: activity_pub, actor: actor).tap do |a|
+ a.lock! if a.persisted?
+ a.content = original_activity.dup
+ a.content[:object] = object.uri
+ a.save!
+ end
+ end
+
+ # Actor, si no hay instancia, la crea en el momento, junto con
+ # su estado de moderación.
+ #
+ # @return [Actor]
+ def actor
+ @actor ||= ::ActivityPub::Actor.lock.find_or_initialize_by(uri: original_activity[:actor]).tap do |a|
+ a.lock! if a.persisted?
+
+ unless a.instance
+ a.instance = ::ActivityPub::Instance.lock.find_or_create_by(hostname: URI.parse(a.uri).hostname)
+
+ ::ActivityPub::InstanceFetchJob.perform_later(site: site, instance: a.instance)
+ end
+
+ site.instance_moderations.lock.find_or_create_by(instance: a.instance)
+ a.save!
+
+ site.actor_moderations.lock.find_or_create_by(actor: a)
+
+ ::ActivityPub::FetchJob.perform_later(site: site, object_id: a.object.id)
+ end
+ end
+
+ # @return [Hash,String]
+ def original_object
+ @original_object ||= original_activity[:object].dup.tap do |o|
+ o[:@context] = original_activity[:@context].dup
+ end
+ end
+
+ # Descubre la actividad recibida, generando un error si la
+ # actividad no está dirigida a nosotres.
+ #
+ # @todo Validar formato con Dry::Schema
+ # @return [Hash]
+ def original_activity
+ @original_activity ||= FastJsonparser.parse(body).tap do |activity|
+ raise '@context missing' unless activity[:@context].present?
+ raise 'id missing' unless activity[:id].present?
+ raise 'object missing' unless activity[:object].present?
+ end
+ end
+ end
+end
diff --git a/app/jobs/activity_pub/remote_flag_job.rb b/app/jobs/activity_pub/remote_flag_job.rb
new file mode 100644
index 00000000..211f46fc
--- /dev/null
+++ b/app/jobs/activity_pub/remote_flag_job.rb
@@ -0,0 +1,37 @@
+# frozen_string_literal: true
+
+# Envía un reporte directamente a la instancia remota
+#
+# @todo El panel debería ser su propia instancia y firmar sus propios
+# mensajes.
+# @todo Como la Social Inbox no soporta enviar actividades
+# a destinataries que no sean seguidores, enviamos el reporte
+# directamente a la instancia.
+# @see {https://github.com/hyphacoop/social.distributed.press/issues/14}
+class ActivityPub
+ class RemoteFlagJob < ApplicationJob
+ self.priority = 30
+
+ def perform(remote_flag:)
+ return unless remote_flag.may_queue?
+
+ inbox = remote_flag.actor&.content&.[]('inbox')
+
+ raise 'Inbox is missing for actor' if inbox.blank?
+
+ remote_flag.queue!
+
+ uri = URI.parse(inbox)
+ client = remote_flag.main_site.social_inbox.client_for(uri.origin)
+ response = client.post(endpoint: uri.path, body: remote_flag.content)
+
+ raise 'No se pudo enviar el reporte' unless response.success?
+
+ remote_flag.report!
+ rescue Exception => e
+ ExceptionNotifier.notify_exception(e, data: { remote_flag: remote_flag.id, response: response.parsed_response })
+ remote_flag.resend!
+ raise
+ end
+ end
+end
diff --git a/app/jobs/activity_pub/sync_lists_job.rb b/app/jobs/activity_pub/sync_lists_job.rb
new file mode 100644
index 00000000..e37e15be
--- /dev/null
+++ b/app/jobs/activity_pub/sync_lists_job.rb
@@ -0,0 +1,72 @@
+# frozen_string_literal: true
+
+class ActivityPub
+ # Sincroniza las listas de bloqueo y permitidas con el estado actual
+ # de la base de datos.
+ class SyncListsJob < ApplicationJob
+ # Siempre correr al final
+ self.priority = 100
+
+ attr_reader :logs
+
+ # Ejecuta todas las requests y consolida los posibles errores.
+ #
+ # @param site [Site]
+ def run(site:)
+ @logs = {}
+
+ instance_scope = site.instance_moderations.joins(:instance)
+ actor_scope = site.actor_moderations.joins(:actor)
+
+ blocklist = wildcardize(instance_scope.blocked.pluck(:hostname)) + actor_scope.blocked.distinct.pluck(:mention).compact + actor_scope.reported.distinct.pluck(:mention).compact
+ allowlist = wildcardize(instance_scope.allowed.pluck(:hostname)) + actor_scope.allowed.distinct.pluck(:mention).compact
+ pauselist = wildcardize(instance_scope.paused.pluck(:hostname)) + actor_scope.paused.distinct.pluck(:mention).compact
+
+ if blocklist.present?
+ Rails.logger.info "Bloqueando: #{blocklist.join(', ')}"
+ process(:blocked) { site.social_inbox.allowlist.delete(list: blocklist) }
+ process(:blocked) { site.social_inbox.blocklist.post(list: blocklist) }
+ end
+
+ if allowlist.present?
+ Rails.logger.info "Permitiendo: #{allowlist.join(', ')}"
+ process(:allowed) { site.social_inbox.blocklist.delete(list: allowlist) }
+ process(:allowed) { site.social_inbox.allowlist.post(list: allowlist) }
+ end
+
+ if pauselist.present?
+ Rails.logger.info "Pausando: #{pauselist.join(', ')}"
+ process(:paused) { site.social_inbox.blocklist.delete(list: pauselist) }
+ process(:paused) { site.social_inbox.allowlist.delete(list: pauselist) }
+ end
+
+ # Si alguna falló, reintentar
+ raise if logs.present?
+ rescue Exception => e
+ ExceptionNotifier.notify_exception(e,
+ data: { site: site.name, logs: logs, blocklist: blocklist,
+ allowlist: allowlist, pauselist: pauselist })
+
+ raise
+ end
+
+ private
+
+ def process(stage)
+ response = yield
+
+ return if response.success?
+
+ logs[stage] ||= []
+ logs[stage] << { body: response.body, code: response.code }
+ end
+
+ # @params hostnames [Array]
+ # @return [Array]
+ def wildcardize(hostnames)
+ hostnames.map do |hostname|
+ "@*@#{hostname}"
+ end
+ end
+ end
+end
diff --git a/app/jobs/application_job.rb b/app/jobs/application_job.rb
index 06690c53..ee4e3b2c 100644
--- a/app/jobs/application_job.rb
+++ b/app/jobs/application_job.rb
@@ -4,9 +4,21 @@
class ApplicationJob < ActiveJob::Base
include Que::ActiveJob::JobExtensions
- private
+ # Esperar una cantidad random de segundos primos, para que no se
+ # superpongan tareas
+ #
+ # @return [Array]
+ RANDOM_WAIT = [3, 5, 7, 11, 13].freeze
- def site
- @site ||= Site.find @params[:site_id]
+ # @return [ActiveSupport::Duration]
+ def self.random_wait
+ RANDOM_WAIT.sample.seconds
+ end
+
+ attr_reader :site
+
+ # Si falla por cualquier cosa informar y descartar
+ discard_on(Exception) do |job, error|
+ ExceptionNotifier.notify_exception(error, data: { job: job })
end
end
diff --git a/app/jobs/backtrace_job.rb b/app/jobs/backtrace_job.rb
index 97e6007b..4ef5287c 100644
--- a/app/jobs/backtrace_job.rb
+++ b/app/jobs/backtrace_job.rb
@@ -6,10 +6,10 @@ class BacktraceJob < ApplicationJob
EMPTY_SOURCEMAP = { 'mappings' => '' }.freeze
- attr_reader :params, :site_id
+ attr_reader :params
- def perform(site_id:, params:)
- @site_id = site_id
+ def perform(site:, params:)
+ @site = site
@params = params
unless sources.empty?
@@ -44,10 +44,6 @@ class BacktraceJob < ApplicationJob
private
- def site
- @site ||= Site.find_by_id(site_id)
- end
-
# Obtiene todos los archivos del backtrace solo si los puede descargar
# desde fuentes seguras.
#
@@ -59,9 +55,7 @@ class BacktraceJob < ApplicationJob
x['backtrace']
end.flatten.map do |x|
x['file'].split('@').last
- end.uniq.select do |x|
- %r{\Ahttps://} =~ x
- end
+ end.uniq.grep(%r{\Ahttps://})
end
# Descarga y devuelve los datos de un archivo
diff --git a/app/jobs/cleanup_job.rb b/app/jobs/cleanup_job.rb
new file mode 100644
index 00000000..13053cb0
--- /dev/null
+++ b/app/jobs/cleanup_job.rb
@@ -0,0 +1,8 @@
+# frozen_string_literal: true
+
+# Realiza tareas de limpieza en segundo plano
+class CleanupJob < ApplicationJob
+ def perform(before = nil)
+ CleanupService.new(before: before).cleanup_everything!
+ end
+end
diff --git a/app/jobs/contact_job.rb b/app/jobs/contact_job.rb
index c15d7eee..d4c2677f 100644
--- a/app/jobs/contact_job.rb
+++ b/app/jobs/contact_job.rb
@@ -5,10 +5,8 @@ class ContactJob < ApplicationJob
# @param [Integer]
# @param [String]
# @param [Hash]
- def perform(site_id, form_name, form, origin = nil)
- # Retrocompabilidad al actualizar a 2.7.1
- # @see ApplicationJob#site
- @params = { site_id: site_id }
+ def perform(site, form_name, form, origin = nil)
+ @site = site
# Sanitizar los valores
form.each_key do |key|
@@ -23,7 +21,7 @@ class ContactJob < ApplicationJob
usuaries.each_slice(10) do |u|
ContactMailer.with(form_name: form_name,
form: form,
- site_id: site_id,
+ site: site,
usuaries_emails: u,
origin: origin)
.notify_usuaries.deliver_now
diff --git a/app/jobs/deploy_job.rb b/app/jobs/deploy_job.rb
index a5cda360..66cccd1b 100644
--- a/app/jobs/deploy_job.rb
+++ b/app/jobs/deploy_job.rb
@@ -11,47 +11,45 @@ class DeployJob < ApplicationJob
# Lanzar lo antes posible
self.priority = 10
- def handle_error(error)
- case error
- when DeployAlreadyRunningException then retry_in 1.minute
- when DeployTimedOutException then expire
- else super
- end
- end
+ retry_on DeployAlreadyRunningException, wait: 1.minute
+ discard_on DeployTimedOutException
# rubocop:disable Metrics/MethodLength
def perform(site, notify: true, time: Time.now, output: false)
- @output = output
+ @site = site
ActiveRecord::Base.connection_pool.with_connection do
- @site = Site.find(site)
-
# Si ya hay una tarea corriendo, aplazar esta. Si estuvo
# esperando más de 10 minutos, recuperar el estado anterior.
#
# Como el trabajo actual se aplaza al siguiente, arrastrar la
# hora original para poder ir haciendo timeouts.
- if @site.building?
+ if site.building?
notify = false
- if 10.minutes.ago >= time
- raise DeployTimedOutException,
- "#{@site.name} la tarea estuvo más de 10 minutos esperando, volviendo al estado original"
- else
- raise DeployAlreadyRunningException
- end
+ raise DeployAlreadyRunningException unless 10.minutes.ago >= time
+
+ raise DeployTimedOutException,
+ "#{site.name} la tarea estuvo más de 10 minutos esperando, volviendo al estado original"
+
end
@deployed = {}
- @site.update status: 'building'
- @site.deployment_list.each do |d|
+ site.update status: 'building'
+ site.deployment_list.each do |d|
begin
raise DeployException, 'Una dependencia falló' if failed_dependencies? d
- status = d.deploy(output: @output)
+ status = d.deploy(output: output)
seconds = d.build_stats.last.try(:seconds) || 0
size = d.size
- urls = d.respond_to?(:urls) ? d.urls : [d.url].compact
+ urls = d.urls.map do |url|
+ URI.parse url
+ rescue URI::Error
+ nil
+ end.compact
+
+ raise DeployException, 'Falló la compilación' if d == site.deployment_list.last && !status
rescue StandardError => e
status = false
seconds ||= 0
@@ -70,9 +68,9 @@ class DeployJob < ApplicationJob
}
end
- return unless @output
+ return unless output
- puts (Terminal::Table.new do |t|
+ puts(Terminal::Table.new do |t|
t << (%w[type] + @deployed.values.first.keys)
t.add_separator
@deployed.each do |type, row|
@@ -80,12 +78,12 @@ class DeployJob < ApplicationJob
end
end)
ensure
- if @site.present?
- @site.update status: 'waiting'
+ if site.present?
+ site.update status: 'waiting'
notify_usuaries if notify
- puts "\a" if @output
+ puts "\a" if output
end
end
end
@@ -115,7 +113,7 @@ class DeployJob < ApplicationJob
# @param :deploy [Deploy]
def notify_exception(exception, deploy = nil)
data = {
- site: @site.id,
+ site: site.name,
deploy: deploy&.type,
log: deploy&.build_stats&.last&.log,
failed_dependencies: (failed_dependencies(deploy) if deploy)
@@ -125,8 +123,10 @@ class DeployJob < ApplicationJob
end
def notify_usuaries
- @site.roles.where(rol: 'usuarie', temporal: false).pluck(:usuarie_id).each do |usuarie|
- DeployMailer.with(usuarie: usuarie, site: @site.id)
+ usuarie_ids = site.roles.where(rol: 'usuarie', temporal: false).pluck(:usuarie_id)
+
+ Usuarie.where(id: usuarie_ids).find_each do |usuarie|
+ DeployMailer.with(usuarie: usuarie, site: site)
.deployed(@deployed)
.deliver_now
end
diff --git a/app/jobs/git_pull_job.rb b/app/jobs/git_pull_job.rb
new file mode 100644
index 00000000..72e20be0
--- /dev/null
+++ b/app/jobs/git_pull_job.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+# Permite traer los cambios desde webhooks
+
+class GitPullJob < ApplicationJob
+ # @param :site [Site]
+ # @param :usuarie [Usuarie]
+ # @return [nil]
+ def perform(site, usuarie)
+ @site = site
+
+ return unless site.repository.origin
+ return unless site.repository.fetch.positive?
+
+ site.repository.merge(usuarie)
+ site.reindex_changes!
+ end
+end
diff --git a/app/jobs/git_push_job.rb b/app/jobs/git_push_job.rb
new file mode 100644
index 00000000..4df9f5aa
--- /dev/null
+++ b/app/jobs/git_push_job.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+# Permite pushear los cambios cada vez que se
+# hacen commits en un sitio
+class GitPushJob < ApplicationJob
+ # @param :site [Site]
+ # @return [nil]
+ def perform(site)
+ @site = site
+
+ site.repository.push if site.repository.origin
+ end
+end
diff --git a/app/jobs/gitlab_notifier_job.rb b/app/jobs/gitlab_notifier_job.rb
index 7308a4ef..77e865a3 100644
--- a/app/jobs/gitlab_notifier_job.rb
+++ b/app/jobs/gitlab_notifier_job.rb
@@ -30,7 +30,7 @@ class GitlabNotifierJob < ApplicationJob
count: 1,
issue: @issue['iid'],
user_agents: [user_agent].compact,
- params: [request&.filtered_parameters].compact,
+ params: request&.filtered_parameters&.as_json,
urls: [url].compact
}
end
@@ -105,7 +105,7 @@ class GitlabNotifierJob < ApplicationJob
def title
@title ||= ''.dup.tap do |t|
t << "[#{exception.class}] " unless javascript?
- t << exception.message
+ t << exception.message[0..200]
t << " [#{issue_data[:count]}]"
end
end
@@ -192,7 +192,7 @@ class GitlabNotifierJob < ApplicationJob
```
#{request.request_method} #{url}
- #{pp request.filtered_parameters}
+ #{pp request.filtered_parameters.as_json}
```
REQUEST
diff --git a/app/jobs/maintenance_job.rb b/app/jobs/maintenance_job.rb
index c7a962f9..02f29a77 100644
--- a/app/jobs/maintenance_job.rb
+++ b/app/jobs/maintenance_job.rb
@@ -15,8 +15,7 @@
# Lo mismo para salir de mantenimiento, agregando el atributo
# are_we_back: true al crear el Maintenance.
class MaintenanceJob < ApplicationJob
- def perform(maintenance_id:)
- maintenance = Maintenance.find(maintenance_id)
+ def perform(maintenance:)
# Decidir cuál vamos a enviar según el estado de Maintenance
mailer = maintenance.are_we_back ? :were_back : :notice
diff --git a/app/jobs/periodic_job.rb b/app/jobs/periodic_job.rb
index 2f60a2b3..f66434c9 100644
--- a/app/jobs/periodic_job.rb
+++ b/app/jobs/periodic_job.rb
@@ -6,9 +6,6 @@ class PeriodicJob < ApplicationJob
STARTING_INTERVAL = Stat::INTERVALS.first
- # Tener el sitio a mano
- attr_reader :site
-
# Descartar y notificar si pasó algo más.
#
# XXX: En realidad deberíamos seguir reintentando?
diff --git a/app/jobs/stat_collection_job.rb b/app/jobs/stat_collection_job.rb
index e402e3b5..02752901 100644
--- a/app/jobs/stat_collection_job.rb
+++ b/app/jobs/stat_collection_job.rb
@@ -7,8 +7,8 @@ class StatCollectionJob < PeriodicJob
STAT_NAME = 'stat_collection_job'
- def perform(site_id:, once: true)
- @site = Site.find site_id
+ def perform(site:, once: true)
+ @site = site
beginning = beginning_of_interval
stat = site.stats.create! name: STAT_NAME
@@ -22,7 +22,7 @@ class StatCollectionJob < PeriodicJob
rollup.average(:seconds)
end
- dimensions = { site_id: site_id }
+ dimensions = { site_id: site.id }
reduce_rollup(name: 'builds', operation: :sum, dimensions: dimensions)
reduce_rollup(name: 'space_used', operation: :average, dimensions: dimensions)
diff --git a/app/jobs/uri_collection_job.rb b/app/jobs/uri_collection_job.rb
index 4cbbf593..92d788bc 100644
--- a/app/jobs/uri_collection_job.rb
+++ b/app/jobs/uri_collection_job.rb
@@ -16,8 +16,8 @@ class UriCollectionJob < PeriodicJob
IMAGES = %w[.png .jpg .jpeg .gif .webp .jfif].freeze
STAT_NAME = 'uri_collection_job'
- def perform(site_id:, once: true)
- @site = Site.find site_id
+ def perform(site:, once: true)
+ @site = site
# Obtener el principio del intervalo anterior
beginning_of_interval
diff --git a/app/lib/action_dispatch/http/uploaded_file_decorator.rb b/app/lib/action_dispatch/http/uploaded_file_decorator.rb
index 0bdebdc0..7b28a0db 100644
--- a/app/lib/action_dispatch/http/uploaded_file_decorator.rb
+++ b/app/lib/action_dispatch/http/uploaded_file_decorator.rb
@@ -11,7 +11,7 @@ module ActionDispatch
# Devolver el nombre de archivo con caracteres unicode
# normalizados
def original_filename
- @original_filename.unicode_normalize
+ @original_filename.unicode_normalize.sub(/\A_+/, '')
end
end
end
diff --git a/app/lib/active_storage/service/jekyll_service.rb b/app/lib/active_storage/service/jekyll_service.rb
index e6c5fda6..b33ccf4d 100644
--- a/app/lib/active_storage/service/jekyll_service.rb
+++ b/app/lib/active_storage/service/jekyll_service.rb
@@ -96,7 +96,7 @@ module ActiveStorage
end
def blob_for(key)
- ActiveStorage::Blob.find_by(key: key, service_name: name)
+ ActiveStorage::Blob.find_by!(key: key, service_name: name)
end
end
end
diff --git a/app/lib/jekyll/readers/data_reader_decorator.rb b/app/lib/jekyll/readers/data_reader_decorator.rb
new file mode 100644
index 00000000..2a2a8fc2
--- /dev/null
+++ b/app/lib/jekyll/readers/data_reader_decorator.rb
@@ -0,0 +1,38 @@
+# frozen_string_literal: true
+
+module Jekyll
+ module Readers
+ # Permite leer datos utilizando rutas absolutas.
+ #
+ # {Jekyll::DataReader} usa {Dir.chdir} con rutas relativas, lo que
+ # en nuestro uso provoca confusiones en el lector de datos.
+ #
+ # Con este módulo, podemos leer todos los archivos usando rutas
+ # absolutas, lo que nos permite reemplazar jekyll-data, que agregaba
+ # código duplicado.
+ module DataReaderDecorator
+ extend ActiveSupport::Concern
+
+ included do
+ DATA_EXTENSIONS = %w[.yaml .yml .json .csv .tsv].freeze
+
+ def read_data_to(dir, data)
+ return unless File.directory?(dir) && !@entry_filter.symlink?(dir)
+
+ Dir.glob(File.join(dir, '*')).each do |path|
+ next if @entry_filter.symlink?(path)
+
+ entry = Pathname.new(path).relative_path_from(dir).to_s
+
+ if File.directory?(path)
+ read_data_to(path, data[sanitize_filename(entry)] = {})
+ elsif DATA_EXTENSIONS.include?(File.extname(entry))
+ key = sanitize_filename(File.basename(entry, ".*"))
+ data[key] = read_data_file(path)
+ end
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/app/mailers/application_mailer.rb b/app/mailers/application_mailer.rb
index 8369550d..1f1d453e 100644
--- a/app/mailers/application_mailer.rb
+++ b/app/mailers/application_mailer.rb
@@ -10,7 +10,7 @@ class ApplicationMailer < ActionMailer::Base
private
def site
- @site ||= Site.find @params[:site_id]
+ @site ||= @params[:site]
end
def inline_logo!
diff --git a/app/mailers/deploy_mailer.rb b/app/mailers/deploy_mailer.rb
index b7b464cb..abf6932c 100644
--- a/app/mailers/deploy_mailer.rb
+++ b/app/mailers/deploy_mailer.rb
@@ -13,8 +13,7 @@ class DeployMailer < ApplicationMailer
# rubocop:disable Metrics/AbcSize
def deployed(deploys = {})
- usuarie = Usuarie.find(params[:usuarie])
- site = usuarie.sites.find(params[:site])
+ usuarie = params[:usuarie]
hostname = site.hostname
deploys ||= {}
@@ -52,7 +51,7 @@ class DeployMailer < ApplicationMailer
t << (row.map do |k, v|
case k
when :seconds then v[:human]
- when :urls then url
+ when :urls then url.to_s
else v
end
end)
diff --git a/app/mailers/invitadx_mailer.rb b/app/mailers/invitadx_mailer.rb
deleted file mode 100644
index cfb80a55..00000000
--- a/app/mailers/invitadx_mailer.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-# frozen_string_literal: true
-
-class InvitadxMailer < ApplicationMailer
- def confirmation_required
- @invitadx = params[:invitadx]
- @site = params[:site]
- mail from: "#{@site.config.dig('title')} <#{ENV.fetch('DEFAULT_FROM', 'sutty@kefir.red')}>", to: @invitadx.email, subject: t('.subject')
- end
-end
diff --git a/app/models/activity_pub.rb b/app/models/activity_pub.rb
new file mode 100644
index 00000000..7f8155cd
--- /dev/null
+++ b/app/models/activity_pub.rb
@@ -0,0 +1,152 @@
+# frozen_string_literal: true
+
+# = ActivityPub =
+#
+# El registro de actividades recibidas y su estado. Cuando recibimos
+# una actividad, puede estar destinada a varies actores dentro de Sutty,
+# con lo que generamos una cola para cada une.
+#
+#
+# @todo Ya que une actore puede hacer varias actividades sobre el mismo
+# objeto, lo correcto sería que la actividad a moderar sea una sola en
+# lugar de una lista acumulativa. Es decir cada ActivityPub representa
+# el estado del conjunto (Actor, Object, Activity)
+#
+# @see {https://www.w3.org/TR/activitypub/#client-to-server-interactions}
+class ActivityPub < ApplicationRecord
+ IGNORED_EVENTS = %i[pause remove].freeze
+ IGNORED_STATES = %i[removed].freeze
+
+ include AASM
+
+ belongs_to :instance
+ belongs_to :site
+ belongs_to :object, polymorphic: true
+ belongs_to :actor
+ belongs_to :remote_flag, optional: true, class_name: 'ActivityPub::RemoteFlag'
+ has_many :activities
+
+ validates :site_id, presence: true
+ validates :object_id, presence: true
+ validates :aasm_state, presence: true, inclusion: { in: %w[paused approved rejected reported removed] }
+
+ accepts_nested_attributes_for :remote_flag
+
+ # Encuentra la URI de un objeto
+ #
+ # @return [String, nil]
+ def self.uri_from_object(object)
+ case object
+ when Array then uri_from_object(object.first)
+ when String then object
+ when Hash then (object['id'] || object[:id])
+ end
+ end
+
+ # Obtiene el campo `url` de diversas formas. Si es una String, asumir
+ # que es una URL, si es un Hash, asumir que es un Link, si es un
+ # Array de Strings, obtener la primera, si es de Hash, obtener el
+ # primer link con rel=canonical y mediaType=text/html
+ #
+ # De lo contrario devolver el ID.
+ #
+ # @todo Refactorizar
+ # @param object [Hash]
+ # @return [String]
+ def self.url_from_object(object)
+ raise unless object.respond_to?(:[])
+
+ url =
+ case object['url']
+ when String then object['url']
+ when Hash then object['href']
+ # Esto es un lío porque queremos saber si es un Array o
+ # Array o mezcla y obtener el que más nos convenga o
+ # adivinar uno.
+ when Array
+ links = object['url'].map.with_index do |link, _i|
+ case link
+ when Hash then link
+ else { 'href' => link.to_s }
+ end
+ end
+
+ links.find do |link|
+ link['rel'] == 'canonical' && link['mediaType'] == 'text/html'
+ end&.[]('href') || links.first&.[]('href')
+ end
+
+ url || object['id']
+ end
+
+ aasm do
+ # Todavía no hay una decisión sobre el objeto
+ state :paused, initial: true
+ # Le usuarie aprobó el objeto
+ state :approved
+ # Le usuarie rechazó el objeto
+ state :rejected
+ # Le usuarie reportó el objeto
+ state :reported
+ # Le actore eliminó el objeto
+ state :removed
+
+ # Gestionar todos los errores
+ error_on_all_events do |e|
+ ExceptionNotifier.notify_exception(e,
+ data: { site: site.name, activity_pub: id, activity: activities.first.uri })
+ end
+
+ # Se puede volver a pausa en caso de actualización remota, para
+ # revisar los cambios.
+ event :pause do
+ transitions to: :paused
+ end
+
+ # Recibir una acción de eliminación, eliminar el contenido de la
+ # base de datos. Esto elimina el contenido para todos los sitios
+ # porque estamos respetando lo que pidió le actore.
+ event :remove do
+ transitions to: :removed
+
+ after do
+ next if object.blank?
+
+ object.update(content: {}) unless object.content.empty?
+ end
+ end
+
+ # La actividad se aprueba, informándole a la Social Inbox que está
+ # aprobada. También recibimos la aprobación via
+ # webhook a modo de confirmación.
+ event :approve do
+ transitions from: %i[paused], to: :approved
+
+ after do
+ ActivityPub::InboxJob.perform_later(site: site, activity: activities.first.uri, action: :accept)
+ end
+ end
+
+ # La actividad fue rechazada
+ event :reject do
+ transitions from: %i[paused approved], to: :rejected
+
+ after do
+ ActivityPub::InboxJob.perform_later(site: site, activity: activities.first.uri, action: :reject)
+ end
+ end
+
+ # Reportarla implica rechazarla
+ event :report do
+ transitions from: %i[paused approved rejected], to: :reported
+
+ after do
+ ActivityPub::InboxJob.perform_later(site: site, activity: activities.first.uri, action: :reject)
+ ActivityPub::RemoteFlagJob.perform_later(remote_flag: remote_flag) if remote_flag.waiting?
+ end
+ end
+ end
+
+ # Definir eventos en masa
+ include AasmEventsConcern
+end
diff --git a/app/models/activity_pub/activity.rb b/app/models/activity_pub/activity.rb
new file mode 100644
index 00000000..af005ff3
--- /dev/null
+++ b/app/models/activity_pub/activity.rb
@@ -0,0 +1,34 @@
+# frozen_string_literal: true
+
+# = Activity =
+#
+# Lleva un registro de las actividades que nos piden hacer remotamente.
+#
+# Las actividades pueden tener distintos destinataries (sitios/actores).
+#
+# @todo Obtener el contenido del objeto dinámicamente si no existe
+# localmente, por ejemplo cuando la actividad crea un objeto pero lo
+# envía como referencia en lugar de anidarlo.
+#
+# @see {https://www.w3.org/TR/activitypub/#client-to-server-interactions}
+class ActivityPub
+ class Activity < ApplicationRecord
+ include ActivityPub::Concerns::JsonLdConcern
+
+ belongs_to :activity_pub
+ belongs_to :actor, touch: true
+ has_one :object, through: :activity_pub
+
+ validates :activity_pub_id, presence: true
+ # Las actividades son únicas con respecto a su estado
+ validates :uri, presence: true, url: true, uniqueness: { scope: :activity_pub_id, message: 'estado duplicado' }
+
+ # Siempre en orden descendiente para saber el último estado
+ default_scope -> { order(created_at: :desc) }
+
+ # Cambia la máquina de estados según el tipo de actividad
+ def update_activity_pub_state!
+ nil
+ end
+ end
+end
diff --git a/app/models/activity_pub/activity/announce.rb b/app/models/activity_pub/activity/announce.rb
new file mode 100644
index 00000000..8ca58906
--- /dev/null
+++ b/app/models/activity_pub/activity/announce.rb
@@ -0,0 +1,8 @@
+# frozen_string_literal: true
+
+class ActivityPub
+ class Activity
+ # Boost
+ class Announce < ActivityPub::Activity; end
+ end
+end
diff --git a/app/models/activity_pub/activity/create.rb b/app/models/activity_pub/activity/create.rb
new file mode 100644
index 00000000..9cd32559
--- /dev/null
+++ b/app/models/activity_pub/activity/create.rb
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+class ActivityPub
+ class Activity
+ class Create < ActivityPub::Activity; end
+ end
+end
diff --git a/app/models/activity_pub/activity/delete.rb b/app/models/activity_pub/activity/delete.rb
new file mode 100644
index 00000000..640c7ce9
--- /dev/null
+++ b/app/models/activity_pub/activity/delete.rb
@@ -0,0 +1,38 @@
+# frozen_string_literal: true
+
+class ActivityPub
+ class Activity
+ class Delete < ActivityPub::Activity
+ # Los Delete se refieren a objetos. Al eliminar un objeto,
+ # cancelamos todas las actividades que tienen relacionadas.
+ #
+ # XXX: La actividad tiene una firma, pero la implementación no
+ # está recomendada
+ #
+ # @todo Validar que le Actor corresponda con los objetos. Esto ya
+ # lo haría la Social Inbox por nosotres.
+ # @see {https://docs.joinmastodon.org/spec/security/#ld}
+ def update_activity_pub_state!
+ ActiveRecord::Base.connection_pool.with_connection do
+ ActivityPub.transaction do
+ object = ActivityPub::Object.find_by(uri: ActivityPub.uri_from_object(content['object']))
+
+ if object.present?
+ object.activity_pubs.find_each do |activity_pub|
+ activity_pub.remove! if activity_pub.may_remove?
+ end
+
+ # Encontrar todas las acciones de moderación de le actore
+ # eliminade y moverlas a eliminar.
+ if (actor = ActivityPub::Actor.find_by(uri: object.uri)).present?
+ ActorModeration.where(actor_id: actor.id).remove_all!
+ end
+ end
+
+ activity_pub.remove! if activity_pub.may_remove?
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/app/models/activity_pub/activity/flag.rb b/app/models/activity_pub/activity/flag.rb
new file mode 100644
index 00000000..ffbc374b
--- /dev/null
+++ b/app/models/activity_pub/activity/flag.rb
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+class ActivityPub
+ class Activity
+ class Flag < ActivityPub::Activity; end
+ end
+end
diff --git a/app/models/activity_pub/activity/follow.rb b/app/models/activity_pub/activity/follow.rb
new file mode 100644
index 00000000..b4c34d7a
--- /dev/null
+++ b/app/models/activity_pub/activity/follow.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+# = Follow =
+#
+# Una actividad de seguimiento se refiere siempre a une actore (el
+# sitio) y proviene de otre actore.
+#
+# Por ahora las solicitudes de seguimiento se auto-aprueban.
+class ActivityPub
+ class Activity
+ class Follow < ActivityPub::Activity
+ # Auto-aprobar la solicitud de seguimiento
+ def update_activity_pub_state!
+ activity_pub.approve! if activity_pub.may_approve?
+ end
+ end
+ end
+end
diff --git a/app/models/activity_pub/activity/generic.rb b/app/models/activity_pub/activity/generic.rb
new file mode 100644
index 00000000..95fff3eb
--- /dev/null
+++ b/app/models/activity_pub/activity/generic.rb
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+class ActivityPub
+ class Activity
+ class Generic < ActivityPub::Activity; end
+ end
+end
diff --git a/app/models/activity_pub/activity/like.rb b/app/models/activity_pub/activity/like.rb
new file mode 100644
index 00000000..531cc32c
--- /dev/null
+++ b/app/models/activity_pub/activity/like.rb
@@ -0,0 +1,8 @@
+# frozen_string_literal: true
+
+class ActivityPub
+ class Activity
+ # Like
+ class Like < ActivityPub::Activity; end
+ end
+end
diff --git a/app/models/activity_pub/activity/undo.rb b/app/models/activity_pub/activity/undo.rb
new file mode 100644
index 00000000..ae78a0d3
--- /dev/null
+++ b/app/models/activity_pub/activity/undo.rb
@@ -0,0 +1,29 @@
+# frozen_string_literal: true
+
+# = Undo =
+#
+# Deshace una actividad, dependiendo de la actividad a la que se
+# refiere.
+class ActivityPub
+ class Activity
+ class Undo < ActivityPub::Activity
+ # Una actividad de deshacer tiene anidada como objeto la actividad
+ # a deshacer. Para respetar la voluntad de le actore remote,
+ # tendríamos que eliminar cualquier actividad pendiente sobre el
+ # objeto.
+ #
+ # Sin embargo, estas acciones nunca deberían llegar a nuestra
+ # Inbox.
+ #
+ # @todo Validar que le Actor corresponda con los objetos. Esto ya
+ # lo haría la Social Inbox por nosotres.
+ # @see {https://github.com/hyphacoop/social.distributed.press/issues/43}
+ def update_activity_pub_state!
+ ActivityPub.transaction do
+ ActivityPub::Activity.find_by(uri: content['object'])&.activity_pub&.remove!
+ activity_pub.remove!
+ end
+ end
+ end
+ end
+end
diff --git a/app/models/activity_pub/activity/update.rb b/app/models/activity_pub/activity/update.rb
new file mode 100644
index 00000000..19c95b68
--- /dev/null
+++ b/app/models/activity_pub/activity/update.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+class ActivityPub
+ class Activity
+ class Update < ActivityPub::Activity
+ # Si estamos actualizando el objeto, tenemos que devolverlo a estado
+ # de moderación
+ def update_activity_pub_state!
+ activity_pub.pause! if activity_pub.approved?
+ end
+ end
+ end
+end
diff --git a/app/models/activity_pub/actor.rb b/app/models/activity_pub/actor.rb
new file mode 100644
index 00000000..6a284025
--- /dev/null
+++ b/app/models/activity_pub/actor.rb
@@ -0,0 +1,43 @@
+# frozen_string_literal: true
+
+# = Actor =
+#
+# Actor es la entidad que realiza acciones en ActivityPub
+#
+# @todo Obtener el perfil dinámicamente
+class ActivityPub
+ class Actor < ApplicationRecord
+ include ActivityPub::Concerns::JsonLdConcern
+
+ belongs_to :instance
+ has_many :actor_moderation
+ has_many :activity_pubs, as: :object
+ has_many :activities
+ has_many :remote_flags
+
+ # Les actores son únicxs a toda la base de datos
+ validates :uri, presence: true, url: true, uniqueness: true
+
+ before_save :mentionize!
+
+ # Obtiene el nombre de la Actor como mención, solo si obtuvimos el
+ # contenido de antemano.
+ #
+ # @return [String, nil]
+ def mentionize!
+ return if mention.present?
+ return if content['preferredUsername'].blank?
+ return if instance.blank?
+
+ self.mention ||= "@#{content['preferredUsername']}@#{instance.hostname}"
+ end
+
+ def object
+ @object ||= ActivityPub::Object.lock.find_or_create_by(uri: uri)
+ end
+
+ def content
+ object.content
+ end
+ end
+end
diff --git a/app/models/activity_pub/concerns/json_ld_concern.rb b/app/models/activity_pub/concerns/json_ld_concern.rb
new file mode 100644
index 00000000..282027df
--- /dev/null
+++ b/app/models/activity_pub/concerns/json_ld_concern.rb
@@ -0,0 +1,32 @@
+# frozen_string_literal: true
+
+class ActivityPub
+ module Concerns
+ module JsonLdConcern
+ extend ActiveSupport::Concern
+
+ included do
+ # Cuando asignamos contenido, obtener la URI si no lo hicimos ya
+ before_save :uri_from_content!, unless: :uri?
+
+ # Obtiene un tipo de actividad a partir del tipo informado
+ #
+ # @param object [Hash]
+ # @return [Activity]
+ def self.type_from(object)
+ raise NameError unless object.is_a?(Hash)
+
+ "#{model_name.name}::#{object[:type].presence || 'Generic'}".constantize
+ rescue NameError
+ model_name.name.constantize::Generic
+ end
+
+ private
+
+ def uri_from_content!
+ self.uri = content[:id]
+ end
+ end
+ end
+ end
+end
diff --git a/app/models/activity_pub/fediblock.rb b/app/models/activity_pub/fediblock.rb
new file mode 100644
index 00000000..e66e6e60
--- /dev/null
+++ b/app/models/activity_pub/fediblock.rb
@@ -0,0 +1,82 @@
+# frozen_string_literal: true
+
+require 'httparty'
+
+# Listas de bloqueo y sus URLs de descarga
+class ActivityPub
+ class Fediblock < ApplicationRecord
+ class Client
+ include ::HTTParty
+
+ # @param url [String]
+ # @return [HTTParty::Response]
+ def get(url)
+ self.class.get(url, parser: csv_parser)
+ end
+
+ # Procesa el CSV
+ #
+ # @return [Proc]
+ def csv_parser
+ @csv_parser ||=
+ begin
+ require 'csv'
+
+ proc do |body, _|
+ CSV.parse(body, headers: true)
+ end
+ end
+ end
+ end
+
+ class FediblockDownloadError < ::StandardError; end
+
+ validates_presence_of :title, :url, :format
+ validates_inclusion_of :format, in: %w[mastodon fediblock none]
+
+ HOSTNAME_HEADERS = {
+ 'mastodon' => '#domain',
+ 'fediblock' => 'domain'
+ }.freeze
+
+ def client
+ @client ||= Client.new
+ end
+
+ # Todas las instancias de este fediblock
+ def instances
+ ActivityPub::Instance.where(hostname: hostnames)
+ end
+
+ # Descarga la lista y crea las instancias con el estado necesario
+ def process!
+ response = client.get(download_url)
+
+ raise FediblockDownloadError unless response.success?
+
+ Fediblock.transaction do
+ csv = response.parsed_response
+ process_csv! csv
+
+ update(hostnames: csv.map { |r| r[hostname_header] })
+ end
+ end
+
+ private
+
+ def hostname_header
+ HOSTNAME_HEADERS[format]
+ end
+
+ # Crea o encuentra instancias que ya existían y las bloquea
+ #
+ # @param csv [CSV::Table]
+ def process_csv!(csv)
+ csv.each do |row|
+ ActivityPub::Instance.find_or_create_by(hostname: row[hostname_header]).tap do |i|
+ i.block! if i.may_block?
+ end
+ end
+ end
+ end
+end
diff --git a/app/models/activity_pub/instance.rb b/app/models/activity_pub/instance.rb
new file mode 100644
index 00000000..cd14ef23
--- /dev/null
+++ b/app/models/activity_pub/instance.rb
@@ -0,0 +1,40 @@
+# frozen_string_literal: true
+
+# = Instance =
+#
+# Representa cada instancia del fediverso que interactúa con la Social
+# Inbox.
+class ActivityPub
+ class Instance < ApplicationRecord
+ include AASM
+
+ validates :aasm_state, presence: true, inclusion: { in: %w[paused allowed blocked] }
+ validates :hostname, uniqueness: true, hostname: { allow_numeric_hostname: true }
+
+ has_many :activity_pubs
+ has_many :actors
+ has_many :instance_moderations
+
+ # XXX: Mantenemos esto por si queremos bloquear una instancia a
+ # nivel general
+ aasm do
+ state :paused, initial: true
+ state :allowed
+ state :blocked
+
+ # Al pasar una instancia a bloqueo, quiere decir que todos los
+ # sitios adoptan esta lista
+ event :block do
+ transitions from: %i[paused allowed], to: :blocked
+ end
+ end
+
+ def list_name
+ "@*@#{hostname}"
+ end
+
+ def uri
+ @uri ||= "https://#{hostname}/"
+ end
+ end
+end
diff --git a/app/models/activity_pub/object.rb b/app/models/activity_pub/object.rb
new file mode 100644
index 00000000..b10b4431
--- /dev/null
+++ b/app/models/activity_pub/object.rb
@@ -0,0 +1,67 @@
+# frozen_string_literal: true
+
+# Almacena objetos de ActivityPub, como Note, Article, etc.
+class ActivityPub
+ class Object < ApplicationRecord
+ include ActivityPub::Concerns::JsonLdConcern
+
+ before_validation :type_from_content!, unless: :type?
+
+ # Los objetos son únicos a toda la base de datos
+ validates :uri, presence: true, url: true, uniqueness: true
+ validate :uri_is_content_id?, if: :content?
+
+ has_many :activity_pubs, as: :object
+
+ # Encontrar le Actor por su relación con el objeto
+ #
+ # @return [ActivityPub::Actor,nil]
+ def actor
+ ActivityPub::Actor.find_by(uri: actor_uri)
+ end
+
+ # @return [String]
+ def actor_uri
+ content['attributedTo']
+ end
+
+ def actor_type?
+ false
+ end
+
+ def object_type?
+ true
+ end
+
+ # Poder explorar propiedades remotas
+ #
+ # @return [DistributedPress::V1::Social::ReferencedObject]
+ def referenced(site)
+ require 'distributed_press/v1/social/referenced_object'
+
+ @referenced ||= DistributedPress::V1::Social::ReferencedObject.new(object: content,
+ dereferencer: site.social_inbox.dereferencer)
+ end
+
+ private
+
+ def uri_is_content_id?
+ return if uri == content['id']
+
+ errors.add(:activity_pub_objects, 'El ID del objeto no coincide con su URI')
+ end
+
+ # Encuentra el tipo a partir del contenido, si existe.
+ #
+ # XXX: Si el objeto es una actividad, esto siempre va a ser
+ # Generic
+ def type_from_content!
+ self.type =
+ begin
+ "ActivityPub::Object::#{content['type'].presence || 'Generic'}".constantize
+ rescue NameError
+ ActivityPub::Object::Generic
+ end
+ end
+ end
+end
diff --git a/app/models/activity_pub/object/application.rb b/app/models/activity_pub/object/application.rb
new file mode 100644
index 00000000..d26a7757
--- /dev/null
+++ b/app/models/activity_pub/object/application.rb
@@ -0,0 +1,12 @@
+# frozen_string_literal: true
+
+# = Application =
+#
+# Una aplicación o instancia
+class ActivityPub
+ class Object
+ class Application < ActivityPub::Object
+ include Concerns::ActorTypeConcern
+ end
+ end
+end
diff --git a/app/models/activity_pub/object/article.rb b/app/models/activity_pub/object/article.rb
new file mode 100644
index 00000000..126ba3f1
--- /dev/null
+++ b/app/models/activity_pub/object/article.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+# = Article =
+#
+# Representa artículos
+class ActivityPub
+ class Object
+ class Article < ActivityPub::Object; end
+ end
+end
diff --git a/app/models/activity_pub/object/audio.rb b/app/models/activity_pub/object/audio.rb
new file mode 100644
index 00000000..48caea44
--- /dev/null
+++ b/app/models/activity_pub/object/audio.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+# = Audio =
+#
+# Representa artículos
+class ActivityPub
+ class Object
+ class Audio < ActivityPub::Object; end
+ end
+end
diff --git a/app/models/activity_pub/object/concerns/actor_type_concern.rb b/app/models/activity_pub/object/concerns/actor_type_concern.rb
new file mode 100644
index 00000000..b2a643c7
--- /dev/null
+++ b/app/models/activity_pub/object/concerns/actor_type_concern.rb
@@ -0,0 +1,34 @@
+# frozen_string_literal: true
+
+class ActivityPub
+ class Object
+ module Concerns
+ module ActorTypeConcern
+ extend ActiveSupport::Concern
+
+ included do
+ # La URI de le Actor en este caso es la misma id
+ #
+ # @return [String]
+ def actor_uri
+ uri
+ end
+
+ # El objeto referencia a une Actor
+ #
+ # @see {https://www.w3.org/TR/activitystreams-vocabulary/#actor-types}
+ def actor_type?
+ true
+ end
+
+ # El objeto es un objeto
+ #
+ # @see {https://www.w3.org/TR/activitystreams-vocabulary/#object-types}
+ def object_type?
+ false
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/app/models/activity_pub/object/document.rb b/app/models/activity_pub/object/document.rb
new file mode 100644
index 00000000..d7444514
--- /dev/null
+++ b/app/models/activity_pub/object/document.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+# = Document =
+#
+# Representa artículos
+class ActivityPub
+ class Object
+ class Document < ActivityPub::Object; end
+ end
+end
diff --git a/app/models/activity_pub/object/event.rb b/app/models/activity_pub/object/event.rb
new file mode 100644
index 00000000..9fa1f6fc
--- /dev/null
+++ b/app/models/activity_pub/object/event.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+# = Event =
+#
+# Representa artículos
+class ActivityPub
+ class Object
+ class Event < ActivityPub::Object; end
+ end
+end
diff --git a/app/models/activity_pub/object/generic.rb b/app/models/activity_pub/object/generic.rb
new file mode 100644
index 00000000..3e5ff719
--- /dev/null
+++ b/app/models/activity_pub/object/generic.rb
@@ -0,0 +1,8 @@
+# frozen_string_literal: true
+
+# = Generic =
+class ActivityPub
+ class Object
+ class Generic < ActivityPub::Object; end
+ end
+end
diff --git a/app/models/activity_pub/object/group.rb b/app/models/activity_pub/object/group.rb
new file mode 100644
index 00000000..08d11d0d
--- /dev/null
+++ b/app/models/activity_pub/object/group.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+# = Group =
+class ActivityPub
+ class Object
+ class Group < ActivityPub::Object
+ include Concerns::ActorTypeConcern
+ end
+ end
+end
diff --git a/app/models/activity_pub/object/image.rb b/app/models/activity_pub/object/image.rb
new file mode 100644
index 00000000..9939a14b
--- /dev/null
+++ b/app/models/activity_pub/object/image.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+# = Image =
+#
+# Representa artículos
+class ActivityPub
+ class Object
+ class Image < ActivityPub::Object; end
+ end
+end
diff --git a/app/models/activity_pub/object/note.rb b/app/models/activity_pub/object/note.rb
new file mode 100644
index 00000000..ca113c15
--- /dev/null
+++ b/app/models/activity_pub/object/note.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+# = Note =
+#
+# Representa notas, el tipo más común de objeto del Fediverso.
+class ActivityPub
+ class Object
+ class Note < ActivityPub::Object; end
+ end
+end
diff --git a/app/models/activity_pub/object/organization.rb b/app/models/activity_pub/object/organization.rb
new file mode 100644
index 00000000..e820c305
--- /dev/null
+++ b/app/models/activity_pub/object/organization.rb
@@ -0,0 +1,12 @@
+# frozen_string_literal: true
+
+# = Organization =
+#
+# Una organización
+class ActivityPub
+ class Object
+ class Organization < ActivityPub::Object
+ include Concerns::ActorTypeConcern
+ end
+ end
+end
diff --git a/app/models/activity_pub/object/page.rb b/app/models/activity_pub/object/page.rb
new file mode 100644
index 00000000..f05503e2
--- /dev/null
+++ b/app/models/activity_pub/object/page.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+# = Page =
+#
+# Representa artículos
+class ActivityPub
+ class Object
+ class Page < ActivityPub::Object; end
+ end
+end
diff --git a/app/models/activity_pub/object/person.rb b/app/models/activity_pub/object/person.rb
new file mode 100644
index 00000000..5bcab596
--- /dev/null
+++ b/app/models/activity_pub/object/person.rb
@@ -0,0 +1,12 @@
+# frozen_string_literal: true
+
+# = Person =
+#
+# Una persona, el perfil de une actore
+class ActivityPub
+ class Object
+ class Person < ActivityPub::Object
+ include Concerns::ActorTypeConcern
+ end
+ end
+end
diff --git a/app/models/activity_pub/object/place.rb b/app/models/activity_pub/object/place.rb
new file mode 100644
index 00000000..f04032ed
--- /dev/null
+++ b/app/models/activity_pub/object/place.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+# = Place =
+#
+# Representa artículos
+class ActivityPub
+ class Object
+ class Place < ActivityPub::Object; end
+ end
+end
diff --git a/app/models/activity_pub/object/profile.rb b/app/models/activity_pub/object/profile.rb
new file mode 100644
index 00000000..8f7183a2
--- /dev/null
+++ b/app/models/activity_pub/object/profile.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+# = Profile =
+#
+# Representa artículos
+class ActivityPub
+ class Object
+ class Profile < ActivityPub::Object; end
+ end
+end
diff --git a/app/models/activity_pub/object/relationship.rb b/app/models/activity_pub/object/relationship.rb
new file mode 100644
index 00000000..ece995b4
--- /dev/null
+++ b/app/models/activity_pub/object/relationship.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+# = Relationship =
+#
+# Representa artículos
+class ActivityPub
+ class Object
+ class Relationship < ActivityPub::Object; end
+ end
+end
diff --git a/app/models/activity_pub/object/service.rb b/app/models/activity_pub/object/service.rb
new file mode 100644
index 00000000..a276ea5b
--- /dev/null
+++ b/app/models/activity_pub/object/service.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+# = Service =
+class ActivityPub
+ class Object
+ class Service < ActivityPub::Object
+ include Concerns::ActorTypeConcern
+ end
+ end
+end
diff --git a/app/models/activity_pub/object/tombstone.rb b/app/models/activity_pub/object/tombstone.rb
new file mode 100644
index 00000000..88f136b9
--- /dev/null
+++ b/app/models/activity_pub/object/tombstone.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+# = Tombstone =
+#
+# Representa artículos
+class ActivityPub
+ class Object
+ class Tombstone < ActivityPub::Object; end
+ end
+end
diff --git a/app/models/activity_pub/object/video.rb b/app/models/activity_pub/object/video.rb
new file mode 100644
index 00000000..fa4bbffb
--- /dev/null
+++ b/app/models/activity_pub/object/video.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+# = Video =
+#
+# Representa artículos
+class ActivityPub
+ class Object
+ class Video < ActivityPub::Object; end
+ end
+end
diff --git a/app/models/activity_pub/remote_flag.rb b/app/models/activity_pub/remote_flag.rb
new file mode 100644
index 00000000..d6348650
--- /dev/null
+++ b/app/models/activity_pub/remote_flag.rb
@@ -0,0 +1,60 @@
+# frozen_string_literal: true
+
+class ActivityPub
+ class RemoteFlag < ApplicationRecord
+ IGNORED_EVENTS = [].freeze
+ IGNORED_STATES = [].freeze
+
+ include AASM
+
+ aasm do
+ state :waiting, initial: true
+ state :queued
+ state :sent
+
+ event :queue do
+ transitions from: :waiting, to: :queued
+ end
+
+ event :report do
+ transitions from: :queued, to: :sent
+ end
+
+ event :resend do
+ transitions from: :sent, to: :waiting
+ end
+ end
+
+ # Definir eventos en masa
+ include AasmEventsConcern
+
+ belongs_to :actor
+ belongs_to :site
+
+ has_one :actor_moderation
+ has_many :activity_pubs
+ # XXX: source_type es obligatorio para el `through`
+ has_many :objects, through: :activity_pubs, source_type: 'ActivityPub::Object::Note'
+
+ # Genera la actividad a enviar
+ def content
+ {
+ '@context' => 'https://www.w3.org/ns/activitystreams',
+ 'id' => Rails.application.routes.url_helpers.v1_activity_pub_remote_flag_url(self,
+ host: site.social_inbox_hostname),
+ 'type' => 'Flag',
+ 'actor' => main_site.social_inbox.actor_id,
+ 'content' => message.to_s,
+ 'object' => [actor.uri] + objects.pluck(:uri)
+ }
+ end
+
+ # Este es el sitio principal que actúa como origen del reporte.
+ # Tiene que tener la Social Inbox habilitada al mismo tiempo.
+ #
+ # @return [Site]
+ def main_site
+ @main_site ||= Site.find(ENV.fetch('PANEL_ACTOR_SITE_ID', 1))
+ end
+ end
+end
diff --git a/app/models/actor_moderation.rb b/app/models/actor_moderation.rb
new file mode 100644
index 00000000..1c3cf83a
--- /dev/null
+++ b/app/models/actor_moderation.rb
@@ -0,0 +1,70 @@
+# frozen_string_literal: true
+
+# Mantiene la relación entre Site y Actor
+class ActorModeration < ApplicationRecord
+ IGNORED_EVENTS = %i[remove].freeze
+ IGNORED_STATES = %i[removed].freeze
+
+ include AASM
+
+ belongs_to :site
+ belongs_to :remote_flag, optional: true, class_name: 'ActivityPub::RemoteFlag'
+ belongs_to :actor, class_name: 'ActivityPub::Actor'
+
+ accepts_nested_attributes_for :remote_flag
+
+ aasm do
+ state :paused, initial: true
+ state :allowed
+ state :blocked
+ state :reported
+ state :removed
+
+ error_on_all_events do |e|
+ ExceptionNotifier.notify_exception(e, data: { site: site.name, actor: actor.uri, actor_moderation: id })
+ end
+
+ event :pause do
+ transitions from: %i[allowed blocked reported], to: :paused, after: :synchronize!
+ end
+
+ # Al permitir una cuenta no se permiten todos los comentarios
+ # pendientes de moderación que ya hizo.
+ event :allow do
+ transitions from: %i[paused blocked reported], to: :allowed, after: :synchronize!
+ end
+
+ # Al bloquear una cuenta no se bloquean todos los comentarios
+ # pendientes de moderación que hizo.
+ event :block do
+ transitions from: %i[paused allowed], to: :blocked, after: :synchronize!
+ end
+
+ # Al reportar, necesitamos asociar una RemoteFlag para poder
+ # enviarla.
+ event :report do
+ transitions from: %i[pause allowed blocked], to: :reported, after: :synchronize!
+
+ after do
+ ActivityPub::RemoteFlagJob.perform_later(remote_flag: remote_flag) if remote_flag.waiting?
+ end
+ end
+
+ # Si un perfil es eliminado remotamente, tenemos que dejar de
+ # mostrarlo y todas sus actividades.
+ event :remove do
+ transitions to: :removed
+
+ after do
+ site.activity_pubs.where(actor_id: actor_id).remove_all!
+ end
+ end
+ end
+
+ # Definir eventos en masa
+ include AasmEventsConcern
+
+ def synchronize!
+ ActivityPub::SyncListsJob.perform_later(site: site)
+ end
+end
diff --git a/app/models/application_record.rb b/app/models/application_record.rb
index 71fbba5b..6662ddeb 100644
--- a/app/models/application_record.rb
+++ b/app/models/application_record.rb
@@ -2,4 +2,28 @@
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
+
+ # Obtener una lista filtrada de atributos al momento de serializar
+ #
+ # @return [String]
+ def to_yaml(options = {})
+ pruned_attributes.to_yaml(options)
+ end
+
+ # Devuelve todos los atributos menos los filtrados
+ #
+ # @return [Hash]
+ def pruned_attributes
+ self.class.inspection_filter.filter(serializable_hash)
+ end
+
+ # @param coder [Psych::Coder]
+ # @return nil
+ def encode_with(coder)
+ pruned_attributes.each_pair do |attr, value|
+ coder[attr] = value
+ end
+
+ nil
+ end
end
diff --git a/app/models/concerns/aasm_events_concern.rb b/app/models/concerns/aasm_events_concern.rb
new file mode 100644
index 00000000..788e9e1a
--- /dev/null
+++ b/app/models/concerns/aasm_events_concern.rb
@@ -0,0 +1,61 @@
+# frozen_string_literal: true
+
+module AasmEventsConcern
+ extend ActiveSupport::Concern
+
+ included do
+ # Todos los eventos de la máquina de estados
+ #
+ # @return [Array]
+ def self.events
+ aasm.events.map(&:name) - self::IGNORED_EVENTS
+ end
+
+ # Encuentra todos los eventos que se pueden ejecutar con el filtro
+ # actual.
+ #
+ # @return [Array]
+ def self.transitionable_events(current_state)
+ events.select do |event|
+ aasm.events.find { |x| x.name == event }.transitions_from_state? current_state
+ end
+ end
+
+ # Todos los estados de la máquina de estados
+ #
+ # @return [Array]
+ def self.states
+ aasm.states.map(&:name) - self::IGNORED_STATES
+ end
+
+ # Define un método que cambia el estado para todos los objetos del
+ # scope actual.
+ #
+ # @return [Bool] Si hubo al menos un error, devuelve false.
+ aasm.events.map(&:name).each do |event|
+ define_singleton_method(:"#{event}_all!") do
+ successes = []
+
+ find_each do |object|
+ successes << (object.public_send(:"may_#{event}?") && object.public_send(:"#{event}!"))
+ end
+
+ successes.all?
+ end
+
+ # Ejecuta la transición del evento en la base de datos sin
+ # ejecutar los callbacks, sin modificar los items del scope que no
+ # pueden transicionar.
+ #
+ # @return [Integer] Registros modificados
+ define_singleton_method(:"#{event}_all_without_callbacks!") do
+ aasm_event = aasm.events.find { |e| e.name == event }
+ to_state = aasm_event.transitions.map(&:to).first
+ from_states = aasm_event.transitions.map(&:from)
+
+ unscope(where: :aasm_state).where(aasm_state: from_states).update_all(aasm_state: to_state,
+ updated_at: Time.now)
+ end
+ end
+ end
+end
diff --git a/app/models/concerns/tienda.rb b/app/models/concerns/tienda.rb
index cd09358e..a3e6007a 100644
--- a/app/models/concerns/tienda.rb
+++ b/app/models/concerns/tienda.rb
@@ -5,7 +5,7 @@ module Tienda
extend ActiveSupport::Concern
included do
- encrypts :tienda_api_key
+ has_encrypted :tienda_api_key
def tienda?
tienda_api_key.present? && tienda_url.present?
@@ -17,7 +17,7 @@ module Tienda
return t if new_record?
- t.blank? ? 'https://' + name + '.' + ENV.fetch('TIENDA', 'tienda.sutty.nl') : t
+ t.blank? ? "https://#{name}.#{ENV.fetch('TIENDA', 'tienda.sutty.nl')}" : t
end
end
end
diff --git a/app/models/deploy.rb b/app/models/deploy.rb
index a92708c0..77646034 100644
--- a/app/models/deploy.rb
+++ b/app/models/deploy.rb
@@ -10,10 +10,12 @@ require 'open3'
# :attributes`.
class Deploy < ApplicationRecord
belongs_to :site
+ belongs_to :rol
+
has_many :build_stats, dependent: :destroy
- DEPENDENCIES = []
- SOFT_DEPENDENCIES = []
+ DEPENDENCIES = [].freeze
+ SOFT_DEPENDENCIES = [].freeze
def deploy(**)
raise NotImplementedError
@@ -23,6 +25,11 @@ class Deploy < ApplicationRecord
raise NotImplementedError
end
+ # @return [Array]
+ def urls
+ [url].compact
+ end
+
def limit
raise NotImplementedError
end
@@ -55,6 +62,22 @@ class Deploy < ApplicationRecord
@gems_dir ||= Rails.root.join('_storage', 'gems', site.name)
end
+ # Un entorno que solo tiene lo que necesitamos
+ #
+ # @return [Hash]
+ def env
+ # XXX: This doesn't support Windows paths :B
+ paths = [File.dirname(`which bundle`), '/usr/local/bin', '/usr/bin', '/bin']
+
+ # Las variables de entorno extra no pueden superponerse al local.
+ extra_env.merge({
+ 'HOME' => home_dir,
+ 'PATH' => paths.join(':'),
+ 'JEKYLL_ENV' => Rails.env,
+ 'LANG' => ENV.fetch('LANG', nil)
+ })
+ end
+
# Corre un comando, lo registra en la base de datos y devuelve el
# estado.
#
@@ -65,22 +88,20 @@ class Deploy < ApplicationRecord
lines = []
time_start
- Dir.chdir(site.path) do
- Open3.popen2e(env, cmd, unsetenv_others: true) do |_, o, t|
- # TODO: Enviar a un websocket para ver el proceso en vivo?
- Thread.new do
- o.each do |line|
- lines << line
+ Open3.popen2e(env, cmd, unsetenv_others: true, chdir: site.path) do |_, o, t|
+ # TODO: Enviar a un websocket para ver el proceso en vivo?
+ Thread.new do
+ o.each do |line|
+ lines << line
- puts line if output
- end
- rescue IOError => e
- lines << e.message
- puts e.message if output
+ puts line if output
end
-
- r = t.value
+ rescue IOError => e
+ lines << e.message
+ puts e.message if output
end
+
+ r = t.value
end
time_stop
@@ -100,6 +121,11 @@ class Deploy < ApplicationRecord
@local_env ||= {}
end
+ # Devuelve opciones para jekyll build
+ #
+ # @return [String,nil]
+ def flags_for_build(**args); end
+
# Trae todas las dependencias
#
# @return [Array]
@@ -109,6 +135,21 @@ class Deploy < ApplicationRecord
private
+ # Escribe el contenido en un archivo temporal y ejecuta el bloque
+ # provisto con el archivo como parámetro
+ #
+ # @param :content [String]
+ def with_tempfile(content)
+ Tempfile.create(SecureRandom.hex) do |file|
+ file.write content.to_s
+ file.rewind
+ file.close
+
+ # @yieldparam :file [File]
+ yield file
+ end
+ end
+
# @param [String]
# @return [String]
def readable_cmd(cmd)
@@ -119,7 +160,14 @@ class Deploy < ApplicationRecord
@deploy_local ||= site.deploys.find_by(type: 'DeployLocal')
end
- def non_local_deploys
- @non_local_deploys ||= site.deploys.where.not(type: 'DeployLocal')
+ # Consigue todas las variables de entorno configuradas por otros
+ # deploys.
+ #
+ # @return [Hash]
+ def extra_env
+ @extra_env ||=
+ site.deployment_list.reduce({}) do |extra, deploy|
+ extra.merge deploy.local_env
+ end
end
end
diff --git a/app/models/deploy_distributed_press.rb b/app/models/deploy_distributed_press.rb
index 889d8e34..bbd5a9a0 100644
--- a/app/models/deploy_distributed_press.rb
+++ b/app/models/deploy_distributed_press.rb
@@ -1,7 +1,6 @@
# frozen_string_literal: true
require 'distributed_press/v1/client/site'
-require 'njalla/v1'
# Soportar Distributed Press APIv1
#
@@ -13,10 +12,10 @@ require 'njalla/v1'
# Al ser publicado, envía los archivos en un tarball y actualiza la
# información.
class DeployDistributedPress < Deploy
- store :values, accessors: %i[hostname remote_site_id remote_info], coder: JSON
+ store :values, accessors: %i[hostname remote_site_id remote_info distributed_press_publisher_id], coder: JSON
- before_create :create_remote_site!, :create_njalla_records!
- before_destroy :delete_remote_site!, :delete_njalla_records!
+ before_create :create_remote_site!
+ before_destroy :delete_remote_site!
DEPENDENCIES = %i[deploy_local]
@@ -31,17 +30,12 @@ class DeployDistributedPress < Deploy
time_start
create_remote_site! if remote_site_id.blank?
- create_njalla_records!
save
if remote_site_id.blank?
raise DeployJob::DeployException, 'El sitio no se creó en Distributed Press'
end
- if create_njalla_records? && remote_info[:njalla].blank?
- raise DeployJob::DeployException, 'No se pudieron crear los registros necesarios en Njalla'
- end
-
site_client.tap do |c|
stdout = Thread.new(publisher.logger_out) do |io|
until io.eof?
@@ -52,7 +46,12 @@ class DeployDistributedPress < Deploy
end
end
- status = c.publish(publishing_site, deploy_local.destination)
+ begin
+ status = c.publish(publishing_site, deploy_local.destination)
+ rescue DistributedPress::V1::Error => e
+ ExceptionNotifier.notify_exception(e, data: { site: site.name })
+ status = false
+ end
if status
self.remote_info[:distributed_press] = c.show(publishing_site).to_h
@@ -88,7 +87,7 @@ class DeployDistributedPress < Deploy
# @return [Array]
def gateway_urls
remote_info.dig(:distributed_press, :links)&.values&.map do |protocol|
- [ protocol[:link], protocol[:gateway] ]
+ [protocol[:link]]
end&.flatten&.compact&.select do |link|
link.include? '://'
end || []
@@ -96,12 +95,14 @@ class DeployDistributedPress < Deploy
# El cliente de la API
#
- # TODO: cuando soportemos más, tiene que haber una relación entre
- # DeployDistributedPress y DistributedPressPublisher.
- #
# @return [DistributedPressPublisher]
def publisher
- @publisher ||= DistributedPressPublisher.last
+ @publisher ||=
+ if distributed_press_publisher_id
+ DistributedPressPublisher.find(distributed_press_publisher_id)
+ else
+ DistributedPressPublisher.find_by_default(true)
+ end
end
# El cliente para actualizar el sitio
@@ -129,6 +130,8 @@ class DeployDistributedPress < Deploy
#
# @return [nil]
def create_remote_site!
+ self.hostname ||= site.hostname
+
created_site = site_client.create(create_site)
self.remote_site_id = created_site[:id]
@@ -140,29 +143,6 @@ class DeployDistributedPress < Deploy
nil
end
- # Crea los registros en Njalla
- #
- # XXX: Esto depende de nuestro DNS actual, cuando lo migremos hay
- # que eliminarlo.
- #
- # @return [nil]
- def create_njalla_records!
- return unless create_njalla_records?
-
- self.remote_info ||= {}
- self.remote_info[:njalla] ||= {}
- self.remote_info[:njalla][:a] ||= njalla.add_record(name: site.name, type: 'CNAME', content: "#{Site.domain}.").to_h
- self.remote_info[:njalla][:cname] ||= njalla.add_record(name: "www.#{site.name}", type: 'CNAME', content: "#{Site.domain}.").to_h
- self.remote_info[:njalla][:ns] ||= njalla.add_record(name: "_dnslink.#{site.name}", type: 'NS', content: "#{publisher.hostname}.").to_h
-
- nil
- rescue HTTParty::Error => e
- ExceptionNotifier.notify_exception(e, data: { site: site.name })
- self.remote_info.delete :njalla
- ensure
- nil
- end
-
# Registra lo que sucedió
#
# @param status [Bool]
@@ -180,31 +160,4 @@ class DeployDistributedPress < Deploy
ExceptionNotifier.notify_exception(e, data: { site: site.name })
nil
end
-
- def delete_njalla_records!
- return unless create_njalla_records?
-
- %w[a ns cname].each do |type|
- next if (id = remote_info.dig('njalla', type, 'id')).blank?
-
- njalla.remove_record(id: id.to_i)
- end
- end
-
- # Actualizar registros en Njalla
- #
- # @return [Njalla::V1::Domain]
- def njalla
- @njalla ||=
- begin
- client = Njalla::V1::Client.new(token: Rails.application.credentials.njalla)
-
- Njalla::V1::Domain.new(domain: Site.domain, client: client)
- end
- end
-
- # Detecta si tenemos que crear registros en Njalla
- def create_njalla_records?
- !site.name.end_with?('.')
- end
end
diff --git a/app/models/deploy_local.rb b/app/models/deploy_local.rb
index 75ea8b1c..29a31f8c 100644
--- a/app/models/deploy_local.rb
+++ b/app/models/deploy_local.rb
@@ -7,6 +7,20 @@ class DeployLocal < Deploy
before_destroy :remove_destination!
+ def bundle(output: false)
+ run %(bundle config set --local clean 'true'), output: output
+ run(%(bundle config set --local deployment 'true'), output: output) if site.gemfile_lock_path?
+ run %(bundle config set --local path '#{gems_dir}'), output: output
+ run %(bundle config set --local without 'test development'), output: output
+ run %(bundle config set --local cache_all 'false'), output: output
+ run %(bundle install), output: output
+ end
+
+ def git_lfs(output: false)
+ run %(git lfs fetch), output: output
+ run %(git lfs checkout), output: output
+ end
+
# Realizamos la construcción del sitio usando Jekyll y un entorno
# limpio para no pasarle secretos
#
@@ -55,41 +69,33 @@ class DeployLocal < Deploy
#
# @return [nil]
def cleanup!
- FileUtils.rm_rf(gems_dir)
+ FileUtils.rm_rf(site.bundle_path)
FileUtils.rm_rf(yarn_cache_dir)
FileUtils.rm_rf(File.join(site.path, 'node_modules'))
FileUtils.rm_rf(File.join(site.path, '.sass-cache'))
FileUtils.rm_rf(File.join(site.path, '.jekyll-cache'))
end
+ # Opciones necesarias para la compilación del sitio
+ #
+ # @return [Hash]
+ def local_env
+ @local_env ||= {
+ 'SPREE_API_KEY' => site.tienda_api_key,
+ 'SPREE_URL' => site.tienda_url,
+ 'AIRBRAKE_PROJECT_ID' => site.id.to_s,
+ 'AIRBRAKE_PROJECT_KEY' => site.airbrake_api_key,
+ 'YARN_CACHE_FOLDER' => yarn_cache_dir,
+ 'GEMS_SOURCE' => ENV['GEMS_SOURCE']
+ }
+ end
+
private
def mkdir
FileUtils.mkdir_p destination
end
- # Un entorno que solo tiene lo que necesitamos
- #
- # @return [Hash]
- def env
- # XXX: This doesn't support Windows paths :B
- paths = [File.dirname(`which bundle`), '/usr/local/bin', '/usr/bin', '/bin']
-
- # Las variables de entorno extra no pueden superponerse al local.
- extra_env.merge({
- 'HOME' => home_dir,
- 'PATH' => paths.join(':'),
- 'SPREE_API_KEY' => site.tienda_api_key,
- 'SPREE_URL' => site.tienda_url,
- 'AIRBRAKE_PROJECT_ID' => site.id.to_s,
- 'AIRBRAKE_PROJECT_KEY' => site.airbrake_api_key,
- 'JEKYLL_ENV' => Rails.env,
- 'LANG' => ENV['LANG'],
- 'YARN_CACHE_FOLDER' => yarn_cache_dir,
- 'GEMS_SOURCE' => ENV['GEMS_SOURCE']
- })
- end
-
def yarn_cache_dir
Rails.root.join('_yarn_cache').to_s
end
@@ -114,9 +120,11 @@ class DeployLocal < Deploy
File.exist? pnpm_lock
end
- def git_lfs(output: false)
- run %(git lfs fetch), output: output
- run %(git lfs checkout), output: output
+ def pnpm(output: false)
+ return true unless pnpm_lock?
+
+ run %(pnpm config set store-dir "#{pnpm_cache_dir}"), output: output
+ run 'pnpm install --production', output: output
end
def gem(output: false)
@@ -130,19 +138,12 @@ class DeployLocal < Deploy
run 'yarn install --production', output: output
end
- def pnpm(output: false)
- return true unless pnpm_lock?
-
- run %(pnpm config set store-dir "#{pnpm_cache_dir}"), output: output
- run 'pnpm install --production', output: output
- end
-
- def bundle(output: false)
- run %(bundle install --deployment --no-cache --path="#{gems_dir}" --clean --without test development), output: output
- end
-
def jekyll_build(output: false)
- run %(bundle exec jekyll build --trace --profile --destination "#{escaped_destination}"), output: output
+ with_tempfile(site.private_key_pem) do |file|
+ flags = extra_flags(private_key: file)
+
+ run %(bundle exec jekyll build --trace --profile #{flags} --destination "#{escaped_destination}"), output: output
+ end
end
# no debería haber espacios ni caracteres especiales, pero por si
@@ -156,17 +157,13 @@ class DeployLocal < Deploy
FileUtils.rm_rf destination
end
- # Consigue todas las variables de entorno configuradas por otros
- # deploys.
+ # Genera opciones extra desde los otros deploys
#
- # @deprecated Solo tenía sentido para Distributed Press v0
- # @return [Hash]
- def extra_env
- @extra_env ||=
- non_local_deploys.reduce({}) do |extra_env, deploy|
- extra_env.tap do |e|
- e.merge! deploy.local_env
- end
- end
+ # @param :args [Hash]
+ # @return [String]
+ def extra_flags(**args)
+ site.deployment_list.map do |deploy|
+ deploy.flags_for_build(**args)
+ end.compact.join(' ')
end
end
diff --git a/app/models/deploy_social_distributed_press.rb b/app/models/deploy_social_distributed_press.rb
new file mode 100644
index 00000000..e7f97406
--- /dev/null
+++ b/app/models/deploy_social_distributed_press.rb
@@ -0,0 +1,104 @@
+# frozen_string_literal: true
+
+require 'distributed_press/v1/social/client'
+
+# Publicar novedades al Fediverso
+class DeploySocialDistributedPress < Deploy
+ # Solo luego de publicar remotamente
+ DEPENDENCIES = %i[deploy_distributed_press deploy_rsync deploy_full_rsync].freeze
+
+ # Envía las notificaciones
+ def deploy(output: false)
+ with_tempfile(site.private_key_pem) do |file|
+ key = Shellwords.escape file.path
+ dest = Shellwords.escape destination
+
+ run(%(bundle exec jekyll notify --trace --key #{key} --destination "#{dest}"), output: output).tap do |_|
+ create_hooks!
+ enable_fediblocks!
+ end
+ end
+ end
+
+ # Igual que DeployLocal
+ #
+ # @return [String]
+ def destination
+ File.join(Rails.root, '_deploy', site.hostname)
+ end
+
+ # Solo uno
+ #
+ # @return [Integer]
+ def limit
+ 1
+ end
+
+ # Espacio ocupado, pero no podemos calcularlo
+ #
+ # @return [Integer]
+ def size
+ 0
+ end
+
+ # El perfil de actor
+ #
+ # @return [String,nil]
+ def url
+ site.data.dig('activity_pub', 'actor')
+ end
+
+ # Genera la opción de llave privada para jekyll build
+ #
+ # @params :args [Hash]
+ # @return [String]
+ def flags_for_build(**args)
+ "--key #{Shellwords.escape args[:private_key].path}"
+ end
+
+ private
+
+ # Crea los hooks en la Social Inbox para que nos avise de actividades
+ # nuevas
+ #
+ # @return [nil]
+ def create_hooks!
+ hook_client = site.social_inbox.hook
+ webhook_class = DistributedPress::V1::Social::Schemas::Webhook
+
+ hook_client.class::EVENTS.each do |event|
+ event_url = :"v1_site_webhooks_#{event}_url"
+
+ webhook =
+ webhook_class.new.call({
+ method: 'POST',
+ url: Rails.application.routes.url_helpers.public_send(
+ event_url, site_id: site.name, host: site.social_inbox_hostname
+ ),
+ headers: {
+ 'X-Social-Inbox': rol.token
+ }
+ })
+
+ raise ArgumentError, webhook.errors.messages if webhook.failure?
+
+ response = hook_client.put(event: event, hook: webhook)
+
+ raise ArgumentError, response.body unless response.success?
+ rescue ArgumentError => e
+ ExceptionNotifier.notify_exception(e, data: { site_id: site.name, usuarie_id: rol.usuarie_id })
+ end
+ end
+
+ # Habilita todos los fediblocks disponibles.
+ #
+ # @todo Hacer que algunos sean opcionales
+ # @todo Mover a un Job
+ def enable_fediblocks!
+ ActivityPub::Fediblock.find_each do |fediblock|
+ site.fediblock_states.find_or_create_by(fediblock: fediblock).tap do |state|
+ state.enable! if state.may_enable?
+ end
+ end
+ end
+end
diff --git a/app/models/distributed_press_publisher.rb b/app/models/distributed_press_publisher.rb
index 6139db93..4c3293e3 100644
--- a/app/models/distributed_press_publisher.rb
+++ b/app/models/distributed_press_publisher.rb
@@ -13,8 +13,8 @@ class DistributedPressPublisher < ApplicationRecord
# @return [IO]
attr_reader :logger_out
- # La instancia es única
- validates_uniqueness_of :instance
+ # La instancia es necesaria pero no única
+ validates_presence_of :instance
# El token es necesario
validates_presence_of :token
diff --git a/app/models/fediblock_state.rb b/app/models/fediblock_state.rb
new file mode 100644
index 00000000..02dee2d8
--- /dev/null
+++ b/app/models/fediblock_state.rb
@@ -0,0 +1,81 @@
+# frozen_string_literal: true
+
+# Relación entre Fediblocks y Sites.
+#
+# Cuando se habilita un Fediblock, tenemos que asociar todas sus
+# instancias con el sitio y bloquearlas. Cuando se deshabilita, la
+# relación ya está creada y se va actualizando.
+#
+# @see ActivityPub::FediblockUpdatedJob
+class FediblockState < ApplicationRecord
+ include AASM
+
+ belongs_to :site
+ belongs_to :fediblock, class_name: 'ActivityPub::Fediblock'
+
+ # El efecto secundario de esta máquina de estados es modificar el
+ # estado de moderación de cada instancia en el sitio. Nos salteamos
+ # los hooks de los eventos individuales.
+ aasm do
+ # Aunque queramos las listas habilitadas por defecto, tenemos que
+ # habilitarlas luego de crearlas para poder generar la lista de
+ # bloqueo en la Social Inbox.
+ state :disabled, initial: true, before_enter: :pause_unique_instances!
+ state :enabled, before_enter: :block_instances!
+
+ error_on_all_events do |e|
+ ExceptionNotifier.notify_exception(e, data: { site: site.name, fediblock: id })
+ end
+
+ event :enable do
+ transitions from: :disabled, to: :enabled
+ end
+
+ # Al deshabilitar, las listas pasan a modo pausa, a menos que estén
+ # activas en otros listados.
+ #
+ # @todo No cambiar el estado si se habían habilitado manualmente,
+ # pero esto implica que tenemos que encontrar las que sí y quitarlas
+ # de list_names
+ event :disable do
+ transitions from: :enabled, to: :disabled, after: :synchronize!
+ end
+ end
+
+ private
+
+ def block_instances!
+ ActivityPub::InstanceModerationJob.perform_later(site: site, hostnames: fediblock.hostnames,
+ perform_remotely: false)
+ end
+
+ # Pausar todas las moderaciones de las instancias que no estén
+ # bloqueadas por otros fediblocks.
+ def pause_unique_instances!
+ instance_ids = ActivityPub::Instance.where(hostname: unique_hostnames).ids
+ site.instance_moderations.where(instance_id: instance_ids).pause_all_without_callbacks!
+ end
+
+ def synchronize!
+ ActivityPub::SyncListsJob.perform_later(site: site)
+ end
+
+ # Devuelve los hostnames únicos a esta instancia.
+ #
+ # @return [Array]
+ def unique_hostnames
+ @unique_hostnames ||=
+ begin
+ other_enabled_fediblock_ids =
+ site.fediblock_states.enabled.where.not(id: id).pluck(:fediblock_id)
+ other_enabled_hostnames =
+ ActivityPub::Fediblock
+ .where(id: other_enabled_fediblock_ids)
+ .pluck(:hostnames)
+ .flatten
+ .uniq
+
+ fediblock.hostnames - other_enabled_hostnames
+ end
+ end
+end
diff --git a/app/models/indexed_post.rb b/app/models/indexed_post.rb
index 7f6865f6..184cd05f 100644
--- a/app/models/indexed_post.rb
+++ b/app/models/indexed_post.rb
@@ -36,6 +36,15 @@ class IndexedPost < ApplicationRecord
belongs_to :site
+ # Encuentra el post original
+ #
+ # @return [nil,Post]
+ def post
+ return if post_id.blank?
+
+ @post ||= site.posts(lang: locale).find(post_id, uuid: true)
+ end
+
# Convertir locale a direccionario de PG
#
# @param [String,Symbol]
diff --git a/app/models/instance_moderation.rb b/app/models/instance_moderation.rb
new file mode 100644
index 00000000..c1192615
--- /dev/null
+++ b/app/models/instance_moderation.rb
@@ -0,0 +1,49 @@
+# frozen_string_literal: true
+
+# Mantiene el registro de relaciones entre sitios e instancias
+class InstanceModeration < ApplicationRecord
+ IGNORED_EVENTS = [].freeze
+ IGNORED_STATES = [].freeze
+
+ include AASM
+
+ belongs_to :site
+ belongs_to :instance, class_name: 'ActivityPub::Instance'
+
+ aasm do
+ state :paused, initial: true
+ state :allowed
+ state :blocked
+
+ error_on_all_events do |e|
+ ExceptionNotifier.notify_exception(e,
+ data: { site: site.name, instance: instance.hostname,
+ instance_moderation: id })
+ end
+
+ after_all_events do
+ ActivityPub::SyncListsJob.perform_later(site: site)
+ end
+
+ # Al volver la instancia a pausa no cambiamos el estado de
+ # moderación de actores pre-existente.
+ event :pause do
+ transitions from: %i[allowed blocked], to: :paused
+ end
+
+ # Al permitir, solo bloqueamos la instancia, sin modificar el estado
+ # de les actores y comentarios retroactivamente.
+ event :allow do
+ transitions from: %i[paused blocked], to: :allowed
+ end
+
+ # Al bloquear, solo bloqueamos la instancia, sin modificar el estado
+ # de les actores y comentarios retroactivamente.
+ event :block do
+ transitions from: %i[paused allowed], to: :blocked
+ end
+ end
+
+ # Definir eventos en masa
+ include AasmEventsConcern
+end
diff --git a/app/models/log_entry.rb b/app/models/log_entry.rb
index 9685e0d0..7525177a 100644
--- a/app/models/log_entry.rb
+++ b/app/models/log_entry.rb
@@ -11,7 +11,7 @@ class LogEntry < ApplicationRecord
def resend
return if sent
- ContactJob.perform_later site_id, params[:form], params
+ ContactJob.perform_later site, params[:form], params
end
def params
diff --git a/app/models/metadata_boolean.rb b/app/models/metadata_boolean.rb
index 90c002a7..9932c6fd 100644
--- a/app/models/metadata_boolean.rb
+++ b/app/models/metadata_boolean.rb
@@ -4,8 +4,12 @@
#
# Esto es increíblemente difícil de lograr que salga bien!
class MetadataBoolean < MetadataTemplate
+ # El valor por defecto es una versión booleana de lo que diga (o no
+ # diga) el esquema
+ #
+ # @return [Boolean]
def default_value
- false
+ !!super
end
# Los checkboxes son especiales porque la especificación de HTML
diff --git a/app/models/metadata_content.rb b/app/models/metadata_content.rb
index 9516b907..444ee2fe 100644
--- a/app/models/metadata_content.rb
+++ b/app/models/metadata_content.rb
@@ -1,5 +1,7 @@
# frozen_string_literal: true
+require 'htmlbeautifier'
+
# Se encarga del contenido del artículo y quizás otros campos que
# requieran texto largo.
class MetadataContent < MetadataTemplate
@@ -24,7 +26,11 @@ class MetadataContent < MetadataTemplate
end
def to_s
- sanitizer.sanitize value, tags: [], attributes: []
+ Nokogiri::HTML5.fragment(value).tap do |html|
+ html.css('[src^="public/"]').each do |element|
+ element['src'] = convert_internal_path_to_src element['src']
+ end
+ end.to_s
end
private
@@ -42,21 +48,22 @@ class MetadataContent < MetadataTemplate
# TODO: En lugar de comprobar el Content Type acá, restringir los
# tipos de archivo a aceptar en ActiveStorage.
def sanitize(html_string)
- html = Nokogiri::HTML.fragment(super html_string)
+ html = Nokogiri::HTML5.fragment(super html_string)
elements = 'img,audio,video,iframe'
# Eliminar elementos sin src y comprobar su origen
html.css(elements).each do |element|
- unless element['src']
- element.remove
- next
- end
-
begin
+ raise URI::Error unless element['src'].present?
+
uri = URI element['src']
# No permitimos recursos externos
- element.remove unless uri.scheme == 'https' && uri.hostname.end_with?(Site.domain)
+ raise URI::Error unless Rails.application.config.hosts.include?(uri.hostname)
+
+ element['src'] = convert_src_to_internal_path uri
+
+ raise URI::Error if element['src'].blank?
rescue URI::Error
element.remove
end
@@ -73,16 +80,74 @@ class MetadataContent < MetadataTemplate
end
# Elimina los estilos salvo los que asigne el editor
- html.css('*').each do |element|
- next if elements_with_style.include? element.name.downcase
-
- element.remove_attribute('style')
+ html.css('[style]').each do |element|
+ if (style = sanitize_style(element['style'])).present?
+ element['style'] = style
+ else
+ element.remove_attribute('style')
+ end
end
- html.to_s.html_safe
+ HtmlBeautifier.beautify(html.to_s).html_safe
end
- def elements_with_style
- @elements_with_style ||= %w[div mark].freeze
+ # Limpia estilos en base a una lista de permitidos
+ #
+ # @param style [String]
+ # @return [String]
+ def sanitize_style(style)
+ style.split(';').reduce({}) do |style_hash, style_string|
+ key, value = style_string.split(':', 2)
+
+ style_hash[key] ||= value
+ style_hash
+ end.slice(*allowed_styles).map do |style_pair|
+ style_pair.join(':')
+ end.join(';')
+ end
+
+ # Estilos permitidos
+ #
+ # @return [Array]
+ def allowed_styles
+ @allowed_styles ||= %w[text-align color background-color]
+ end
+
+ # Convierte una ubicación local al sitio en una URL de ActiveStorage
+ #
+ # XXX: Por qué son tan díficiles de encontrar las rutas de AS
+ #
+ # @param path [String]
+ # @return [String]
+ def convert_internal_path_to_src(path)
+ key = path.split('/').second
+ blob = ActiveStorage::Blob.find_by(service_name: site.name, key: key)
+
+ return unless blob
+
+ "/rails/active_storage/blobs/#{blob.signed_id}/#{blob.filename}"
+ end
+
+ # Convierte una URI en una ruta interna del sitio actual
+ #
+ # XXX: No verifica si el archivo existe o no. Se supone que existe
+ # porque ya fue subido antes.
+ #
+ # @param uri [URI]
+ # @return [String,nil]
+ def convert_src_to_internal_path(uri)
+ signed_id = uri.path.split('/').fifth
+ blob = ActiveStorage::Blob.find_signed(signed_id)
+
+ return unless blob
+ return unless blob.service_name == site.name
+
+ blob_path = Pathname.new(blob.service.path_for(blob.key)).realpath
+ site_path = Pathname.new(site.path).realpath
+
+ blob_path.relative_path_from(site_path).to_s
+ rescue ActiveSupport::MessageVerifier::InvalidSignature => e
+ ExceptionNotifier.notify_exception(e, data: { site: site.name })
+ nil
end
end
diff --git a/app/models/metadata_created_at.rb b/app/models/metadata_created_at.rb
new file mode 100644
index 00000000..d31b3a1c
--- /dev/null
+++ b/app/models/metadata_created_at.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+# Fecha y hora de creación
+class MetadataCreatedAt < MetadataTemplate
+ # Por defecto la hora actual, pero por retrocompatibilidad, queremos
+ # la fecha de publicación
+ def default_value
+ if post.date.value.to_date < Time.now.to_date
+ post.date.value
+ else
+ Time.now
+ end
+ end
+
+ # Nunca cambia
+ def value=(new_value)
+ value
+ end
+end
diff --git a/app/models/metadata_new_content.rb b/app/models/metadata_new_content.rb
new file mode 100644
index 00000000..da5ee7ab
--- /dev/null
+++ b/app/models/metadata_new_content.rb
@@ -0,0 +1,4 @@
+# frozen_string_literal: true
+
+# Testear el nuevo editor
+class MetadataNewContent < MetadataContent; end
diff --git a/app/models/metadata_new_html.rb b/app/models/metadata_new_html.rb
new file mode 100644
index 00000000..e6163499
--- /dev/null
+++ b/app/models/metadata_new_html.rb
@@ -0,0 +1,4 @@
+# frozen_string_literal: true
+
+# Campos en HTML con el nuevo editor
+class MetadataNewHtml < MetadataHtml; end
diff --git a/app/models/metadata_path.rb b/app/models/metadata_path.rb
index 95fc7dbb..17085e07 100644
--- a/app/models/metadata_path.rb
+++ b/app/models/metadata_path.rb
@@ -6,7 +6,7 @@ class MetadataPath < MetadataTemplate
#
# @return [String]
def default_value
- File.join(site.path, "_#{lang}", "#{date}-#{slug}#{ext}")
+ File.join(site.path, "_#{lang}", "#{limited_name}#{ext}")
end
# La ruta del archivo según Jekyll
@@ -46,4 +46,12 @@ class MetadataPath < MetadataTemplate
def date
post.date.value.strftime('%F')
end
+
+ # Limita el nombre de archivo a 255 bytes, de forma que siempre
+ # podemos guardarlo
+ #
+ # @return [String]
+ def limited_name
+ "#{date}-#{slug}".mb_chars.limit(255 - ext.length)
+ end
end
diff --git a/app/models/metadata_related_posts.rb b/app/models/metadata_related_posts.rb
index 092f219a..42d1381b 100644
--- a/app/models/metadata_related_posts.rb
+++ b/app/models/metadata_related_posts.rb
@@ -34,7 +34,7 @@ class MetadataRelatedPosts < MetadataArray
end
def title(post)
- "#{post&.title&.value || post&.slug&.value} (#{post.layout.humanized_name})"
+ "#{post&.title&.value || post&.slug&.value} #{post&.date&.value.strftime('%F')} (#{post.layout.humanized_name})"
end
# Encuentra el filtro
diff --git a/app/models/metadata_template.rb b/app/models/metadata_template.rb
index 5de54be1..78989e15 100644
--- a/app/models/metadata_template.rb
+++ b/app/models/metadata_template.rb
@@ -134,7 +134,7 @@ MetadataTemplate = Struct.new(:site, :document, :name, :label, :type,
# En caso de que algún campo necesite realizar acciones antes de ser
# guardado
def save
- if !changed?
+ unless changed?
self[:value] = document_value if private?
return true
@@ -190,8 +190,8 @@ MetadataTemplate = Struct.new(:site, :document, :name, :label, :type,
sanitizer
.sanitize(string.tr("\r", '').unicode_normalize,
- tags: allowed_tags,
- attributes: allowed_attributes)
+ tags: Sutty::ALLOWED_TAGS,
+ attributes: Sutty::ALLOWED_ATTRIBUTES)
.strip
.html_safe
end
@@ -200,16 +200,6 @@ MetadataTemplate = Struct.new(:site, :document, :name, :label, :type,
@sanitizer ||= Rails::Html::Sanitizer.safe_list_sanitizer.new
end
- def allowed_attributes
- @allowed_attributes ||= %w[style href src alt controls data-align data-multimedia data-multimedia-inner id
- name].freeze
- end
-
- def allowed_tags
- @allowed_tags ||= %w[strong em del u mark p h1 h2 h3 h4 h5 h6 ul ol li img iframe audio video div figure blockquote
- figcaption a sub sup small].freeze
- end
-
# Decifra el valor
#
# XXX: Otros tipos de valores necesitan implementar su propio método
diff --git a/app/models/moderation_queue.rb b/app/models/moderation_queue.rb
new file mode 100644
index 00000000..31ca3c9b
--- /dev/null
+++ b/app/models/moderation_queue.rb
@@ -0,0 +1,3 @@
+# frozen_string_literal: true
+
+ModerationQueue = Struct.new(:site)
diff --git a/app/models/post.rb b/app/models/post.rb
index 5cc1c5ea..8885897f 100644
--- a/app/models/post.rb
+++ b/app/models/post.rb
@@ -12,7 +12,7 @@ class Post
DEFAULT_ATTRIBUTES = %i[site document layout].freeze
# Otros atributos que no vienen en los metadatos
PRIVATE_ATTRIBUTES = %i[path slug attributes errors].freeze
- PUBLIC_ATTRIBUTES = %i[lang date uuid].freeze
+ PUBLIC_ATTRIBUTES = %i[lang date uuid created_at].freeze
ATTR_SUFFIXES = %w[? =].freeze
attr_reader :attributes, :errors, :layout, :site, :document
@@ -103,8 +103,10 @@ class Post
src = element.attributes['src']
next unless src&.value&.start_with? 'public/'
+ file = MetadataFile.new(site: site, post: self, document: document, layout: layout)
+ file.value['path'] = src.value
- src.value = Rails.application.routes.url_helpers.site_static_file_url(site, file: src.value)
+ src.value = Rails.application.routes.url_helpers.url_for(file.static_file)
end
# Notificar a les usuaries que están viendo una previsualización
@@ -217,6 +219,11 @@ class Post
post: self, required: true)
end
+ # La fecha de creación inmodificable del post
+ def created_at
+ @metadata[:created_at] ||= MetadataCreatedAt.new(document: document, site: site, layout: layout, name: :created_at, type: :created_at, post: self, required: true)
+ end
+
# Detecta si es un atributo válido o no, a partir de la tabla de la
# plantilla
def attribute?(mid)
@@ -265,8 +272,9 @@ class Post
yaml['layout'] = layout.name.to_s
yaml['uuid'] = uuid.value
# Y que no se procese liquid
- yaml['liquid'] = false
+ yaml['render_with_liquid'] = false
yaml['usuaries'] = usuaries.map(&:id).uniq
+ yaml['created_at'] = created_at.value
yaml['last_modified_at'] = modified_at
"#{yaml.to_yaml}---\n\n#{body}"
diff --git a/app/models/que_job.rb b/app/models/que_job.rb
new file mode 100644
index 00000000..0bfffc92
--- /dev/null
+++ b/app/models/que_job.rb
@@ -0,0 +1,5 @@
+# frozen_string_literal: true
+
+require 'que/active_record/model'
+
+class QueJob < Que::ActiveRecord::Model; end
diff --git a/app/models/rol.rb b/app/models/rol.rb
index fcd07037..c9a92515 100644
--- a/app/models/rol.rb
+++ b/app/models/rol.rb
@@ -11,9 +11,12 @@ class Rol < ApplicationRecord
belongs_to :usuarie
belongs_to :site
+ has_many :deploys
validates_inclusion_of :rol, in: ROLES
+ before_save :add_token_if_missing!
+
def invitade?
rol == INVITADE
end
@@ -25,4 +28,11 @@ class Rol < ApplicationRecord
def self.role?(rol)
ROLES.include? rol
end
+
+ private
+
+ # Asegurarse que tenga un token
+ def add_token_if_missing!
+ self.token ||= SecureRandom.hex(64)
+ end
end
diff --git a/app/models/site.rb b/app/models/site.rb
index 24644b9c..9c94c31b 100644
--- a/app/models/site.rb
+++ b/app/models/site.rb
@@ -10,17 +10,17 @@ class Site < ApplicationRecord
include Site::DeployDependencies
include Site::BuildStats
include Site::LayoutOrdering
+ include Site::SocialDistributedPress
+ include Site::DefaultOptions
include Tienda
+ self.filter_attributes += [/_key/, /_ciphertext\z/]
+
# Cifrar la llave privada que cifra y decifra campos ocultos. Sutty
# tiene acceso pero los datos se guardan cifrados en el sitio. Esto
# protege información privada en repositorios públicos, pero no la
# protege de acceso al panel de Sutty!
- encrypts :private_key
-
- # TODO: Hacer que los diferentes tipos de deploy se auto registren
- # @see app/services/site_service.rb
- DEPLOYS = %i[local private www zip hidden_service distributed_press].freeze
+ has_encrypted :private_key
validates :name, uniqueness: true, hostname: {
allow_root_label: true
@@ -162,19 +162,19 @@ class Site < ApplicationRecord
# Traer la ruta del sitio
def path
- File.join(Site.site_path, name)
+ ::File.join(Site.site_path, name)
end
# La ruta anterior
def path_was
- File.join(Site.site_path, name_was)
+ ::File.join(Site.site_path, name_was)
end
# Limpiar la ruta y unirla con el separador de directorios del
# sistema operativo. Como si algún día fuera a cambiar o
# soportáramos Windows :P
def relative_path(suspicious_path)
- File.join(path, *suspicious_path.gsub('..', '/').gsub('./', '').squeeze('/').split('/'))
+ ::File.join(path, *suspicious_path.gsub('..', '/').gsub('./', '').squeeze('/').split('/'))
end
# Obtiene la lista de traducciones actuales
@@ -212,10 +212,8 @@ class Site < ApplicationRecord
# Trae los datos del directorio _data dentro del sitio
def data
unless jekyll.data.present?
- run_in_path do
- jekyll.reader.read_data
- jekyll.data['layouts'] ||= {}
- end
+ jekyll.reader.read_data
+ jekyll.data['layouts'] ||= {}
end
jekyll.data
@@ -225,9 +223,7 @@ class Site < ApplicationRecord
# colecciones.
def collections
unless @read
- run_in_path do
- jekyll.reader.read_collections
- end
+ jekyll.reader.read_collections
@read = true
end
@@ -293,15 +289,17 @@ class Site < ApplicationRecord
#
# @return [Hash] { post: Layout }
def layouts
+ return {} if data['layouts'].blank?
+
# Crea un Struct dinámico cuyas llaves son los nombres de todos los
# layouts. Si pasamos un layout que no existe, obtenemos un
# NoMethodError
@layouts_struct ||= Struct.new(*layout_keys, keyword_init: true)
- @layouts ||= @layouts_struct.new(**data['layouts'].map do |name, metadata|
+ @layouts ||= @layouts_struct.new(**data['layouts'].to_h do |name, metadata|
[name.to_sym,
Layout.new(site: self, name: name.to_sym, meta: metadata.delete('meta')&.with_indifferent_access,
metadata: metadata.with_indifferent_access)]
- end.to_h)
+ end)
end
# TODO: Si la estructura de datos no existe, vamos a producir una
@@ -322,9 +320,7 @@ class Site < ApplicationRecord
#
# @return [Hash]
def theme_layouts
- run_in_path do
- jekyll.reader.read_layouts
- end
+ jekyll.reader.read_layouts
end
# Trae todos los valores disponibles para un campo
@@ -367,7 +363,7 @@ class Site < ApplicationRecord
end
def jekyll?
- File.directory? path
+ ::File.directory? path
end
def jekyll
@@ -375,9 +371,7 @@ class Site < ApplicationRecord
begin
install_gems
- Jekyll::Site.new(configuration).tap do |site|
- site.reader = JekyllData::Reader.new(site) if site.theme
- end
+ Jekyll::Site.new(configuration)
end
end
@@ -387,7 +381,7 @@ class Site < ApplicationRecord
# documentos de Jekyll hacia Sutty para que podamos leer los datos que
# necesitamos.
def load_jekyll
- return unless name.present? && File.directory?(path)
+ return unless name.present? && ::File.directory?(path)
reload_jekyll!
end
@@ -398,8 +392,10 @@ class Site < ApplicationRecord
end
def reload
- super
- reload_jekyll!
+ super.tap do |_s|
+ reload_jekyll!
+ end
+ self
end
def configuration
@@ -415,7 +411,7 @@ class Site < ApplicationRecord
# metadatos de Document
@configuration =
::Jekyll.configuration('source' => path,
- 'destination' => File.join(path, '_site'),
+ 'destination' => ::File.join(path, '_site'),
'safe' => true, 'watch' => false,
'quiet' => true, 'excerpt_separator' => '')
@@ -440,13 +436,17 @@ class Site < ApplicationRecord
# El directorio donde se almacenan los sitios
def self.site_path
- @site_path ||= File.realpath(ENV.fetch('SITE_PATH', Rails.root.join('_sites')))
+ @site_path ||= ::File.realpath(ENV.fetch('SITE_PATH', Rails.root.join('_sites')))
end
def self.default
find_by(name: "#{Site.domain}.")
end
+ def self.one_at_a_time
+ @@one_at_a_time ||= Thread::Mutex.new
+ end
+
def reset
@read = false
@layouts = nil
@@ -461,6 +461,15 @@ class Site < ApplicationRecord
@docs = nil
end
+ # @return [Pathname]
+ def bundle_path
+ @bundle_path ||= Rails.root.join('_storage', 'gems', name)
+ end
+
+ def gemfile_lock_path?
+ ::File.exist? gemfile_lock_path
+ end
+
private
# Asegurarse que el sitio tenga una llave privada
@@ -473,7 +482,10 @@ class Site < ApplicationRecord
def clone_skel!
return if jekyll?
- Rugged::Repository.clone_at ENV['SKEL_SUTTY'], path
+ Rugged::Repository.clone_at(ENV.fetch('SKEL_SUTTY', nil), path, checkout_branch: design.gem)
+
+ # Necesita un bloque
+ repository.rugged.remotes.rename('origin', 'upstream') {}
end
# Elimina el directorio del sitio
@@ -497,8 +509,8 @@ class Site < ApplicationRecord
config.theme = design.gem unless design.no_theme?
config.description = description
config.title = title
- config.url = url(slash: false)
- config.hostname = hostname
+ config.url ||= url(slash: false)
+ config.hostname ||= hostname
config.locales = locales.map(&:to_s)
end
@@ -553,7 +565,9 @@ class Site < ApplicationRecord
end
def run_in_path(&block)
- Dir.chdir path, &block
+ Site.one_at_a_time.synchronize do
+ Dir.chdir path, &block
+ end
end
# Instala las gemas cuando es necesario:
@@ -565,26 +579,52 @@ class Site < ApplicationRecord
def install_gems
return unless persisted?
- deploys.find_by_type('DeployLocal').send(:git_lfs)
+ deploy_local = deploys.find_by_type('DeployLocal')
+ deploy_local.git_lfs
- if !gem_dir? || gemfile_updated? || gemfile_lock_updated?
- deploys.find_by_type('DeployLocal').send(:bundle)
- touch
- end
+ return unless !gems_installed? || gemfile_updated? || gemfile_lock_updated?
+
+ deploy_local.bundle
+ touch
+ FileUtils.touch(gemfile_path)
+ end
+
+ def gem_path
+ @gem_path ||=
+ begin
+ ruby_version = Gem::Version.new(RUBY_VERSION)
+ ruby_version.canonical_segments[2] = 0
+
+ bundle_path.join('ruby', ruby_version.canonical_segments.join('.'))
+ end
end
# Detecta si el repositorio de gemas existe
- def gem_dir?
- Rails.root.join('_storage', 'gems', name).directory?
+ def gems_installed?
+ gem_path.directory? && !gem_path.empty?
end
# Detecta si el Gemfile fue modificado
def gemfile_updated?
- updated_at < File.mtime(File.join(path, 'Gemfile'))
+ updated_at < ::File.mtime(gemfile_path)
end
- # Detecta si el Gemfile.lock fue modificado
+ def gemfile_path
+ @gemfile_path ||= ::File.join(path, 'Gemfile')
+ end
+
+ # @return [String]
+ def gemfile_lock_path
+ @gemfile_lock_path ||= ::File.join(path, 'Gemfile.lock')
+ end
+
+ # Detecta si el Gemfile.lock fue modificado con respecto al sitio o al
+ # Gemfile.
def gemfile_lock_updated?
- updated_at < File.mtime(File.join(path, 'Gemfile.lock'))
+ return false unless gemfile_lock_path?
+
+ [updated_at, ::File.mtime(::File.join(path, 'Gemfile'))].any? do |compare|
+ compare < ::File.mtime(gemfile_lock_path)
+ end
end
end
diff --git a/app/models/site/api.rb b/app/models/site/api.rb
index 73f8e710..6c6f0ece 100644
--- a/app/models/site/api.rb
+++ b/app/models/site/api.rb
@@ -5,7 +5,7 @@ class Site
extend ActiveSupport::Concern
included do
- encrypts :api_key
+ has_encrypted :api_key
before_save :add_api_key_if_missing!
# Genera mensajes secretos que podemos usar para la API de cada
diff --git a/app/models/site/config.rb b/app/models/site/config.rb
index fb9175c1..b300b40e 100644
--- a/app/models/site/config.rb
+++ b/app/models/site/config.rb
@@ -21,7 +21,7 @@ class Site
# Leer el archivo de configuración y setear los atributos en el
# objeto actual, creando los metodos de ostruct
def read
- data = YAML.safe_load(File.read(path))
+ data = YAML.safe_load(File.read(path), permitted_classes: [Time])
@hash = data.hash
data.each do |key, value|
diff --git a/app/models/site/default_options.rb b/app/models/site/default_options.rb
new file mode 100644
index 00000000..3e392782
--- /dev/null
+++ b/app/models/site/default_options.rb
@@ -0,0 +1,44 @@
+# frozen_string_literal: true
+
+require 'dry-schema'
+
+class Site
+ # Las opciones por defecto se aplican durante la creación del sitio y
+ # luego se permite a les usuaries modificarlas según quieran. Por el
+ # momento las opciones nuevas que aparezcan no modifican un sitio que
+ # ya existe.
+ module DefaultOptions
+ extend ActiveSupport::Concern
+
+ Schema = Dry::Schema.Params do
+ optional(:colaboracion_anonima).value(:bool)
+ optional(:contact).value(:bool)
+ optional(:acepta_invitades).value(:bool)
+ optional(:slugify_mode).value(included_in?: Jekyll::Utils::SLUGIFY_MODES)
+ optional(:pagination).value(:bool)
+ end
+
+ included do
+ validate :validate_options_from_theme!, if: :persisted?
+
+ # @return [Dry::Schema::Result]
+ def options_from_theme
+ @options_from_theme ||= Schema.call(data['sutty'])
+ end
+
+ def update_options_from_theme
+ return true if options_from_theme.to_h.blank?
+
+ update(**options_from_theme.to_h)
+ end
+
+ private
+
+ def validate_options_from_theme!
+ options_from_theme.errors.each do |error|
+ errors.add(:default_options, "#{error.path.map(&:to_s).join('/')} #{error} (#{error.input})")
+ end
+ end
+ end
+ end
+end
diff --git a/app/models/site/index.rb b/app/models/site/index.rb
index e11095e3..cfa4030a 100644
--- a/app/models/site/index.rb
+++ b/app/models/site/index.rb
@@ -1,22 +1,125 @@
# frozen_string_literal: true
-# Indexa todos los artículos de un sitio
-#
-# TODO: Hacer opcional
class Site
+ # Indexa todos los artículos de un sitio
+ #
+ # TODO: Hacer opcional
module Index
extend ActiveSupport::Concern
included do
- # TODO: Debería ser un Job?
- after_create :index_posts!
has_many :indexed_posts, dependent: :destroy
+ MODIFIED_STATUSES = %i[added modified].freeze
+ DELETED_STATUSES = %i[deleted].freeze
+ LOCALE_FROM_PATH = /\A_/.freeze
+
def index_posts!
Site.transaction do
docs.each(&:index!)
+
+ update(last_indexed_commit: repository.head_commit.oid)
end
end
+
+ # Encuentra los artículos modificados entre dos commits y los
+ # reindexa.
+ def reindex_changes!
+ return unless reindexable?
+
+ Site.transaction do
+ remove_deleted_posts!
+ reindex_modified_posts!
+
+ update(last_indexed_commit: repository.head_commit.oid)
+ end
+ end
+
+ # No hacer nada si el repositorio no cambió o no hubo cambios
+ # necesarios
+ def reindexable?
+ return false if last_indexed_commit.blank?
+ return false if last_indexed_commit == repository.head_commit.oid
+
+ !indexable_posts.empty?
+ end
+
+ private
+
+ # Trae el último commit indexado desde el repositorio
+ #
+ # @return [Rugged::Commit]
+ def indexed_commit
+ @indexed_commit ||= repository.rugged.lookup(last_indexed_commit)
+ end
+
+ # Calcula la diferencia entre el último commit indexado y el
+ # actual
+ #
+ # XXX: Esto no tiene en cuenta modificaciones en la historia como
+ # cambio de ramas, reverts y etc, solo asume que se mueve hacia
+ # adelante en la misma rama o las dos ramas están relacionadas.
+ #
+ # @return [Rugged::Diff]
+ def diff_with_head
+ @diff_with_head ||= indexed_commit.diff(repository.head_commit)
+ end
+
+ # Obtiene todos los archivos a reindexar
+ #
+ # @return [Array]
+ def indexable_posts
+ @indexable_posts ||=
+ diff_with_head.each_delta.select do |delta|
+ locales.any? do |locale|
+ delta.old_file[:path].start_with? "_#{locale}/"
+ end
+ end
+ end
+
+ # Elimina los artículos eliminados o que cambiaron de ubicación
+ # del índice
+ def remove_deleted_posts!
+ indexable_posts.select do |delta|
+ DELETED_STATUSES.include? delta.status
+ end.each do |delta|
+ locale, path = locale_and_path_from(delta.old_file[:path])
+
+ indexed_posts.destroy_by(locale: locale, path: path).tap do |destroyed_posts|
+ next unless destroyed_posts.empty?
+
+ Rails.logger.info I18n.t('indexed_posts.deleted', site: name, path: path, records: destroyed_posts.count)
+ end
+ end
+ end
+
+ # Reindexa artículos que cambiaron de ubicación, se agregaron
+ # o fueron modificados
+ def reindex_modified_posts!
+ indexable_posts.select do |delta|
+ MODIFIED_STATUSES.include? delta.status
+ end.each do |delta|
+ locale, path = locale_and_path_from(delta.new_file[:path])
+
+ posts(lang: locale).find(path).index!
+ end
+ end
+
+ # Obtiene el idioma y la ruta del post a partir de la ubicación en
+ # el disco.
+ #
+ # Las rutas vienen en ASCII-9BIT desde Rugged, pero en realidad
+ # son UTF-8
+ #
+ # @return [Array]
+ def locale_and_path_from(path)
+ locale, path = path.force_encoding('utf-8').split(File::SEPARATOR, 2)
+
+ [
+ locale.sub(LOCALE_FROM_PATH, ''),
+ File.basename(path, '.*')
+ ]
+ end
end
end
end
diff --git a/app/models/site/repository.rb b/app/models/site/repository.rb
index 9c435fb5..c7056eaa 100644
--- a/app/models/site/repository.rb
+++ b/app/models/site/repository.rb
@@ -29,7 +29,7 @@ class Site
# Obtiene el origin
#
- # @return [Rugged::Remote]
+ # @return [Rugged::Remote, nil]
def origin
@origin ||= rugged.remotes.find do |remote|
remote.name == 'origin'
@@ -54,7 +54,7 @@ class Site
# Incorpora los cambios en el repositorio actual
#
# @return [Rugged::Commit]
- def merge(usuarie)
+ def merge(usuarie, message = I18n.t('sites.fetch.merge.message'))
merge = rugged.merge_commits(head_commit, remote_head_commit)
# No hacemos nada si hay conflictos, pero notificarnos
@@ -69,12 +69,16 @@ class Site
.create(rugged, update_ref: 'HEAD',
parents: [head_commit, remote_head_commit],
tree: merge.write_tree(rugged),
- message: I18n.t('sites.fetch.merge.message'),
+ message: message,
author: author(usuarie), committer: committer)
# Forzamos el checkout para mover el HEAD al último commit y
# escribir los cambios
rugged.checkout 'HEAD', strategy: :force
+
+ git_sh("git", "lfs", "fetch", "origin", default_branch)
+ # reemplaza los pointers por los archivos correspondientes
+ git_sh("git", "lfs", "checkout")
commit
end
@@ -153,27 +157,60 @@ class Site
#
# @return [Boolean]
def gc
- env = { 'PATH' => '/usr/bin', 'LANG' => ENV['LANG'], 'HOME' => path }
- cmd = 'git gc'
+ git_sh("git", "gc")
+ end
- r = nil
- Open3.popen2e(env, cmd, unsetenv_others: true, chdir: path) do |_, _, t|
- r = t.value
- end
+ # Pushea cambios al repositorio remoto
+ #
+ # @param :remote [Rugged::Remote]
+ # @return [Boolean, nil]
+ def push(remote = origin)
+ remote.push(rugged.head.canonical_name, credentials: credentials_for(remote))
+ git_sh('git', 'lfs', 'push', remote.name, default_branch)
+ end
- r&.success?
+ # Hace limpieza de LFS
+ def lfs_cleanup
+ git_sh("git", "lfs", "prune")
+ git_sh("git", "lfs", "dedup")
end
private
+ # @deprecated
+ def credentials
+ @credentials ||= credentials_for(origin)
+ end
+
# Si Sutty tiene una llave privada de tipo ED25519, devuelve las
# credenciales necesarias para trabajar con repositorios remotos.
#
+ # @param :remote [Rugged::Remote]
# @return [Nil, Rugged::Credentials::SshKey]
- def credentials
+ def credentials_for(remote)
return unless File.exist? private_key
- @credentials ||= Rugged::Credentials::SshKey.new username: 'git', publickey: public_key, privatekey: private_key
+ Rugged::Credentials::SshKey.new username: username_for(remote), publickey: public_key, privatekey: private_key
+ end
+
+ # Obtiene el nombre de usuario para el repositorio remoto, por
+ # defecto git
+ #
+ # @param :remote [Rugged::Remote]
+ # @return [String]
+ def username_for(remote)
+ username = parse_url(remote.url)&.user if remote.respond_to? :url
+
+ username || 'git'
+ end
+
+ # @param :url [String]
+ # @return [URI, nil]
+ def parse_url(url)
+ GitCloneUrl.parse(url)
+ rescue URI::Error => e
+ ExceptionNotifier.notify_exception(e, data: { path: path, url: url })
+ nil
end
# @return [String]
@@ -189,5 +226,20 @@ class Site
def relativize(file)
Pathname.new(file).relative_path_from(Pathname.new(path)).to_s
end
+
+ # Ejecuta un comando de git
+ #
+ # @param :args [Array]
+ # @return [Boolean]
+ def git_sh(*args)
+ env = { 'PATH' => '/usr/bin', 'LANG' => ENV['LANG'], 'HOME' => path }
+
+ r = nil
+ Open3.popen2e(env, *args, unsetenv_others: true, chdir: path) do |_, _, t|
+ r = t.value
+ end
+
+ r&.success?
+ end
end
end
diff --git a/app/models/site/social_distributed_press.rb b/app/models/site/social_distributed_press.rb
new file mode 100644
index 00000000..8d8d60d4
--- /dev/null
+++ b/app/models/site/social_distributed_press.rb
@@ -0,0 +1,70 @@
+# frozen_string_literal: true
+
+require 'distributed_press/v1/social/client'
+
+class Site
+ # Agrega soporte para Social Distributed Press en los sitios
+ module SocialDistributedPress
+ extend ActiveSupport::Concern
+
+ included do
+ has_encrypted :private_key_pem
+
+ has_many :activity_pubs
+ has_many :instance_moderations
+ has_many :actor_moderations
+ has_many :fediblock_states
+ has_many :instances, through: :instance_moderations
+ has_many :remote_flags, class_name: 'ActivityPub::RemoteFlag'
+
+ before_save :generate_private_key_pem!, unless: :private_key_pem?
+
+ def moderation_enabled?
+ deploy_social_inbox.present?
+ end
+
+ def deploy_social_inbox
+ @deploy_social_inbox ||= deploys.find_by(type: 'DeploySocialDistributedPress')
+ end
+
+ def moderation_checked!
+ deploy_social_inbox.touch
+ end
+
+ # @return [Bool]
+ def moderation_needed?
+ return false unless moderation_enabled?
+
+ last_activity_pub = activity_pubs.order(updated_at: :desc).first&.updated_at
+
+ return false if last_activity_pub.blank?
+
+ last_activity_pub > deploy_social_inbox.updated_at
+ end
+
+ # @return [SocialInbox]
+ def social_inbox
+ @social_inbox ||= SocialInbox.new(site: self)
+ end
+
+ # Obtiene el hostname de la API de Sutty
+ #
+ # @return [String]
+ def social_inbox_hostname
+ Rails.application.routes.default_url_options[:host].sub('panel', 'api')
+ end
+
+ private
+
+ # Genera la llave privada y la almacena
+ #
+ # @return [nil]
+ def generate_private_key_pem!
+ self.private_key_pem ||= DistributedPress::V1::Social::Client.new(
+ public_key_url: nil,
+ key_size: 2048
+ ).private_key.export
+ end
+ end
+ end
+end
diff --git a/app/models/social_inbox.rb b/app/models/social_inbox.rb
new file mode 100644
index 00000000..adeedffc
--- /dev/null
+++ b/app/models/social_inbox.rb
@@ -0,0 +1,108 @@
+# frozen_string_literal: true
+
+require 'distributed_press/v1/social/client'
+require 'distributed_press/v1/social/allowlist'
+require 'distributed_press/v1/social/blocklist'
+require 'distributed_press/v1/social/hook'
+require 'distributed_press/v1/social/inbox'
+require 'distributed_press/v1/social/dereferencer'
+require 'httparty/cache/store/redis'
+
+# Gestiona la Social Inbox de un sitio
+class SocialInbox
+ # @return [Site]
+ attr_reader :site
+
+ # @param :site [Site]
+ def initialize(site:)
+ @site = site
+ end
+
+ # @return [String]
+ def actor
+ @actor ||=
+ begin
+ user = site.config.dig('activity_pub', 'username')
+ user ||= hostname.split('.', 2).first
+
+ "@#{user}@#{hostname}"
+ end
+ end
+
+ def actor_id
+ @actor_id ||= SocialInbox.generate_uri(hostname) do |uri|
+ uri.path = '/about.jsonld'
+ end
+ end
+
+ # @return [DistributedPress::V1::Social::Client]
+ def client
+ @client ||= client_for site.config.dig('activity_pub', 'url')
+ end
+
+ # Permite enviar mensajes directo a otro servidor
+ #
+ # @param url [String]
+ # @return [DistributedPress::V1::Social::Client]
+ def client_for(url)
+ raise 'Falló generar un cliente' if url.blank?
+
+ @client_for ||= {}
+ @client_for[url] ||=
+ DistributedPress::V1::Social::Client.new(
+ url: url,
+ public_key_url: public_key_url,
+ private_key_pem: site.private_key_pem,
+ logger: Rails.logger,
+ cache_store: HTTParty::Cache::Store::Redis.new(redis_url: ENV.fetch('REDIS_SERVER', nil))
+ )
+ end
+
+ # @return [DistributedPress::V1::Social::Inbox]
+ def inbox
+ @inbox ||= DistributedPress::V1::Social::Inbox.new(client: client, actor: actor)
+ end
+
+ # @return [DistributedPress::V1::Social::Dereferencer]
+ def dereferencer
+ @dereferencer ||= DistributedPress::V1::Social::Dereferencer.new(client: client)
+ end
+
+ # @return [DistributedPress::V1::Social::Hook]
+ def hook
+ @hook ||= DistributedPress::V1::Social::Hook.new(client: client, actor: actor)
+ end
+
+ # @return [DistributedPress::V1::Social::Allowlist]
+ def allowlist
+ @allowlist ||= DistributedPress::V1::Social::Allowlist.new(client: client, actor: actor)
+ end
+
+ # @return [DistributedPress::V1::Social::Blocklist]
+ def blocklist
+ @blocklist ||= DistributedPress::V1::Social::Blocklist.new(client: client, actor: actor)
+ end
+
+ # @return [String]
+ def public_key_url
+ @public_key_url ||= SocialInbox.generate_uri(hostname) do |uri|
+ uri.path = '/about.jsonld'
+ uri.fragment = 'main-key'
+ end
+ end
+
+ # El hostname puede estar en varios lados...
+ #
+ # @return [String]
+ def hostname
+ @hostname ||=
+ site.config.dig('activity_pub', 'hostname') || site.config['hostname'] || site.hostname
+ end
+
+ # Genera una URI dentro de este sitio
+ #
+ # @return [String]
+ def self.generate_uri(hostname, &block)
+ URI("https://#{hostname}").tap(&block).to_s
+ end
+end
diff --git a/app/models/usuarie.rb b/app/models/usuarie.rb
index 2bc7a1b5..4856f17f 100644
--- a/app/models/usuarie.rb
+++ b/app/models/usuarie.rb
@@ -10,6 +10,7 @@ class Usuarie < ApplicationRecord
validates_uniqueness_of :email
validates_with EmailAddress::ActiveRecordValidator, field: :email
+ validate :locale_available!
before_create :lang_from_locale!
before_update :remove_confirmation_invitation_inconsistencies!
@@ -20,6 +21,8 @@ class Usuarie < ApplicationRecord
has_many :blazer_audits, foreign_key: 'user_id', class_name: 'Blazer::Audit'
has_many :blazer_queries, foreign_key: 'creator_id', class_name: 'Blazer::Query'
+ self.filter_attributes += [/\Aemail\z/, /\Aencrypted_password\z/]
+
def name
email.split('@', 2).first
end
@@ -73,9 +76,20 @@ class Usuarie < ApplicationRecord
# Si le usuarie (re)confirma su cuenta con una invitación pendiente,
# considerarla aceptada también.
def accept_invitation_after_confirmation!
- if confirmed?
- self.invitation_token = nil
- self.invitation_accepted_at ||= Time.now.utc
- end
+ return unless confirmed?
+
+ self.invitation_token = nil
+ self.invitation_accepted_at ||= Time.now.utc
+ end
+
+ # Muestra un error si el idioma no está disponible al cambiar el
+ # idioma de la cuenta.
+ #
+ # @return [nil]
+ def locale_available!
+ return if I18n.locale_available? lang
+
+ errors.add(:lang, I18n.t('activerecord.errors.models.usuarie.attributes.lang.not_available'))
+ nil
end
end
diff --git a/app/policies/activity_pub_policy.rb b/app/policies/activity_pub_policy.rb
new file mode 100644
index 00000000..f5755840
--- /dev/null
+++ b/app/policies/activity_pub_policy.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+# Solo les usuaries pueden moderar comentarios
+ActivityPubPolicy = Struct.new(:usuarie, :activity_pub) do
+ ActivityPub.events.each do |event|
+ define_method(:"#{event}?") do
+ activity_pub.site.usuarie? usuarie
+ end
+ end
+
+ # En este paso tenemos varias instancias por moderar pero todas son
+ # del mismo sitio.
+ def action_on_several?
+ activity_pub.first.site.usuarie? usuarie
+ end
+end
diff --git a/app/policies/actor_moderation_policy.rb b/app/policies/actor_moderation_policy.rb
new file mode 100644
index 00000000..07a9a752
--- /dev/null
+++ b/app/policies/actor_moderation_policy.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+# Solo les usuaries pueden moderar actores
+ActorModerationPolicy = Struct.new(:usuarie, :actor_moderation) do
+ ActorModeration.events.each do |actor_event|
+ define_method(:"#{actor_event}?") do
+ actor_moderation.site.usuarie? usuarie
+ end
+ end
+
+ # En este paso tenemos varias cuentas por moderar pero todas son
+ # del mismo sitio.
+ def action_on_several?
+ actor_moderation.first.site.usuarie? usuarie
+ end
+end
diff --git a/app/policies/indexed_post_policy.rb b/app/policies/indexed_post_policy.rb
new file mode 100644
index 00000000..e0151c7a
--- /dev/null
+++ b/app/policies/indexed_post_policy.rb
@@ -0,0 +1,66 @@
+# frozen_string_literal: true
+
+# Política de acceso a artículos
+class IndexedPostPolicy
+ attr_reader :indexed_post, :usuarie, :site
+
+ def initialize(usuarie, indexed_post)
+ @usuarie = usuarie
+ @indexed_post = indexed_post
+ @site = indexed_post.site
+ end
+
+ def index?
+ true
+ end
+
+ # Les invitades solo pueden ver sus propios posts
+ def show?
+ site.usuarie?(usuarie) || site.indexed_posts.by_usuarie(usuarie.id).find_by_post_id(indexed_post.post_id).present?
+ end
+
+ def preview?
+ show?
+ end
+
+ def new?
+ create?
+ end
+
+ def create?
+ true
+ end
+
+ def edit?
+ update?
+ end
+
+ # Les invitades solo pueden modificar sus propios artículos
+ def update?
+ show?
+ end
+
+ # Solo las usuarias pueden eliminar artículos. Les invitades pueden
+ # borrar sus propios artículos
+ def destroy?
+ update?
+ end
+
+ # Las usuarias pueden ver todos los posts
+ #
+ # Les invitades solo pueden ver sus propios posts
+ class Scope
+ attr_reader :usuarie, :scope
+
+ def initialize(usuarie, scope)
+ @usuarie = usuarie
+ @scope = scope
+ end
+
+ def resolve
+ return scope if scope&.first&.site&.usuarie? usuarie
+
+ scope.by_usuarie(usuarie.id)
+ end
+ end
+end
diff --git a/app/policies/instance_moderation_policy.rb b/app/policies/instance_moderation_policy.rb
new file mode 100644
index 00000000..c6a229d3
--- /dev/null
+++ b/app/policies/instance_moderation_policy.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+# Solo les usuaries pueden moderar instancias
+InstanceModerationPolicy = Struct.new(:usuarie, :instance_moderation) do
+ InstanceModeration.events.each do |event|
+ define_method(:"#{event}?") do
+ instance_moderation.site.usuarie? usuarie
+ end
+ end
+
+ # En este paso tenemos varias instancias por moderar pero todas son
+ # del mismo sitio.
+ def action_on_several?
+ instance_moderation.first.presence && instance_moderation.first.site.usuarie?(usuarie)
+ end
+end
diff --git a/app/policies/moderation_queue_policy.rb b/app/policies/moderation_queue_policy.rb
new file mode 100644
index 00000000..75a4c45a
--- /dev/null
+++ b/app/policies/moderation_queue_policy.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+# Si la cola de moderación está activada y le usuarie tiene permisos de
+# usuarie.
+ModerationQueuePolicy = Struct.new(:usuarie, :moderation_queue) do
+ def index?
+ moderation_queue.site.moderation_enabled? && moderation_queue.site.usuarie?(usuarie)
+ end
+end
diff --git a/app/policies/site_policy.rb b/app/policies/site_policy.rb
index 2ca96256..ce56a2e7 100644
--- a/app/policies/site_policy.rb
+++ b/app/policies/site_policy.rb
@@ -14,6 +14,10 @@ class SitePolicy
true
end
+ def status?
+ true
+ end
+
# Puede ver la versión privada del sitio?
def private?
edit? && site.deploys.find_by_type('DeployPrivate')
@@ -57,6 +61,10 @@ class SitePolicy
show? && usuarie?
end
+ def button?
+ show?
+ end
+
def enqueue?
build?
end
diff --git a/app/policies/site_usuarie_policy.rb b/app/policies/site_usuarie_policy.rb
index f07dc1c9..31e98cfe 100644
--- a/app/policies/site_usuarie_policy.rb
+++ b/app/policies/site_usuarie_policy.rb
@@ -36,8 +36,7 @@ class SiteUsuariePolicy
end
def accept_invitation?
- su = site_usuarie
- (usuarie? || invitade?) && su.usuarie.rol_for_site(su.site).temporal
+ !!site_usuarie.usuarie.rol_for_site(site_usuarie.site)&.temporal
end
def reject_invitation?
diff --git a/app/processors/activity_pub_processor.rb b/app/processors/activity_pub_processor.rb
new file mode 100644
index 00000000..501b73a5
--- /dev/null
+++ b/app/processors/activity_pub_processor.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+# Gestiona los filtros de ActivityPub
+class ActivityPubProcessor < Rubanok::Processor
+ # En orden descendiente para encontrar la última actividad
+ #
+ # Por ahora solo queremos moderar comentarios.
+ prepare do
+ raw
+ .joins(:activities)
+ .where(
+ activity_pub_activities: {
+ type: %w[ActivityPub::Activity::Create ActivityPub::Activity::Update]
+ },
+ object_type: %w[ActivityPub::Object::Note ActivityPub::Object::Article]
+ ).order(updated_at: :desc)
+ end
+
+ map :activity_pub_state, activate_always: true do |activity_pub_state: 'paused'|
+ raw.where(aasm_state: activity_pub_state)
+ end
+end
diff --git a/app/processors/actor_moderation_processor.rb b/app/processors/actor_moderation_processor.rb
new file mode 100644
index 00000000..a3035654
--- /dev/null
+++ b/app/processors/actor_moderation_processor.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+# Gestiona los filtros de ActorModeration
+class ActorModerationProcessor < Rubanok::Processor
+ # En orden descendiente para encontrar le últime Actor
+ prepare do
+ raw.order(updated_at: :desc)
+ end
+
+ map :actor_state, activate_always: true do |actor_state: 'paused'|
+ raw.where(aasm_state: actor_state)
+ end
+end
diff --git a/app/processors/instance_moderation_processor.rb b/app/processors/instance_moderation_processor.rb
new file mode 100644
index 00000000..eb9a7c8b
--- /dev/null
+++ b/app/processors/instance_moderation_processor.rb
@@ -0,0 +1,12 @@
+# frozen_string_literal: true
+
+# Gestiona los filtros de InstanceModeration
+class InstanceModerationProcessor < Rubanok::Processor
+ prepare do
+ raw.includes(:instance).order('activity_pub_instances.hostname')
+ end
+
+ map :instance_state, activate_always: true do |instance_state: 'paused'|
+ raw.where(aasm_state: instance_state)
+ end
+end
diff --git a/app/services/cleanup_service.rb b/app/services/cleanup_service.rb
index ad87cf9a..e53fbcb4 100644
--- a/app/services/cleanup_service.rb
+++ b/app/services/cleanup_service.rb
@@ -23,12 +23,15 @@ class CleanupService
#
# @return [nil]
def cleanup_older_sites!
- Site.where('updated_at < ?', before).find_each do |site|
+ Site.where('updated_at < ?', before).order(updated_at: :desc).find_each do |site|
next unless File.directory? site.path
+ Rails.logger.info "Limpiando dependencias, archivos temporales y repositorio git de #{site.name}"
+
site.deploys.find_each(&:cleanup!)
site.repository.gc
+ site.repository.lfs_cleanup
site.touch
end
end
@@ -37,10 +40,13 @@ class CleanupService
#
# @return [nil]
def cleanup_newer_sites!
- Site.where('updated_at >= ?', before).find_each do |site|
+ Site.where('updated_at >= ?', before).order(updated_at: :desc).find_each do |site|
next unless File.directory? site.path
+ Rails.logger.info "Limpiando repositorio git de #{site.name}"
+
site.repository.gc
+ site.repository.lfs_cleanup
site.touch
end
end
diff --git a/app/services/post_service.rb b/app/services/post_service.rb
index 256a617d..49471d7c 100644
--- a/app/services/post_service.rb
+++ b/app/services/post_service.rb
@@ -107,6 +107,8 @@ PostService = Struct.new(:site, :usuarie, :post, :params, keyword_init: true) do
usuarie: usuarie,
message: I18n.t("post_service.#{action}",
title: post&.title&.value))
+
+ GitPushJob.perform_later(site)
end
# Solo permitir cambiar estos atributos de cada articulo
diff --git a/app/services/site_service.rb b/app/services/site_service.rb
index 0ce09c53..64158e4a 100644
--- a/app/services/site_service.rb
+++ b/app/services/site_service.rb
@@ -7,7 +7,7 @@ SiteService = Struct.new(:site, :usuarie, :params, keyword_init: true) do
def deploy
site.enqueue!
- DeployJob.perform_later site.id
+ DeployJob.perform_later site
end
# Crea un sitio, agrega un rol nuevo y guarda los cambios a la
@@ -15,7 +15,7 @@ SiteService = Struct.new(:site, :usuarie, :params, keyword_init: true) do
def create
self.site = Site.new params
- add_role temporal: false, rol: 'usuarie'
+ role = site.roles.build(usuarie: usuarie, temporal: false, rol: 'usuarie')
site.deploys.build type: 'DeployLocal'
# Los sitios de testing no se sincronizan
sync_nodes unless site.name.end_with? '.testing'
@@ -28,13 +28,17 @@ SiteService = Struct.new(:site, :usuarie, :params, keyword_init: true) do
# que no haya estados intermedios.
site.locales = [usuarie.lang] + I18n.available_locales
+ add_role_to_deploys! role
+
site.save &&
+ site.update_options_from_theme &&
site.config.write &&
commit_config(action: :create) &&
site.reset.nil? &&
add_licencias &&
add_code_of_conduct &&
add_privacy_policy &&
+ site.index_posts! &&
deploy
end
@@ -45,7 +49,10 @@ SiteService = Struct.new(:site, :usuarie, :params, keyword_init: true) do
# Actualiza el sitio y guarda los cambios en la configuración
def update
I18n.with_locale(usuarie&.lang&.to_sym || I18n.default_locale) do
- site.update(params) &&
+ site.assign_attributes(params)
+ add_role_to_deploys!
+
+ site.save &&
site.config.write &&
commit_config(action: :update) &&
site.reset.nil? &&
@@ -57,9 +64,8 @@ SiteService = Struct.new(:site, :usuarie, :params, keyword_init: true) do
# Genera los Deploy necesarios para el sitio a menos que ya los tenga.
def build_deploys
- Site::DEPLOYS.map { |deploy| "Deploy#{deploy.to_s.camelcase}" }
- .each do |deploy|
- next if site.deploys.find_by type: deploy
+ Deploy.subclasses.each do |deploy|
+ next if site.deploys.find_by type: deploy.name
site.deploys.build type: deploy
end
@@ -100,11 +106,8 @@ SiteService = Struct.new(:site, :usuarie, :params, keyword_init: true) do
add: [site.config.path],
message: I18n.t("site_service.#{action}",
name: site.name))
- end
- def add_role(temporal: true, rol: 'invitade')
- site.roles << Rol.new(site: site, usuarie: usuarie,
- temporal: temporal, rol: rol)
+ GitPushJob.perform_later(site)
end
# Crea la licencia del sitio para cada locale disponible en el sitio
@@ -223,9 +226,18 @@ SiteService = Struct.new(:site, :usuarie, :params, keyword_init: true) do
end
end
- private
+ # Asignar un rol a cada deploy si no lo tenía ya
+ def add_role_to_deploys!(role = current_role)
+ site.deploys.each do |deploy|
+ deploy.rol ||= role
+ end
+ end
- def with_all_locales(&block)
+ def current_role
+ @current_role ||= usuarie.rol_for_site(site)
+ end
+
+ def with_all_locales
site.locales.map do |locale|
next unless I18n.available_locales.include? locale
diff --git a/app/validators/url_validator.rb b/app/validators/url_validator.rb
new file mode 100644
index 00000000..8cfc5fcc
--- /dev/null
+++ b/app/validators/url_validator.rb
@@ -0,0 +1,20 @@
+# frozen_string_literal: true
+
+# Valida URLs
+#
+# @see {https://storck.io/posts/better-http-url-validation-in-ruby-on-rails/}
+class UrlValidator < ActiveModel::EachValidator
+ def validate_each(record, attribute, value)
+ if value.blank?
+ record.errors.add(attribute, :url_missing)
+ return
+ end
+
+ uri = URI.parse(value)
+
+ record.errors.add(attribute, :scheme_missing) if uri.scheme.blank?
+ record.errors.add(attribute, :host_missing) if uri.host.blank?
+ rescue URI::Error
+ record.errors.add(attribute, :invalid)
+ end
+end
diff --git a/app/views/actor_moderations/show.haml b/app/views/actor_moderations/show.haml
new file mode 100644
index 00000000..ca5764f4
--- /dev/null
+++ b/app/views/actor_moderations/show.haml
@@ -0,0 +1,8 @@
+.row.justify-content-center
+ .col-12.col-md-8
+ %h1= t('.profile')
+ = render 'components/actor', remote_profile: @remote_profile
+ .col-12.col-md-8
+ = render 'components/profiles_btn_box', actor_moderation: @actor_moderation
+ .col-12.col-md-8
+ = render 'moderation_queue/comments', site: @site, moderation_queue: @moderation_queue
diff --git a/app/views/build_stats/index.haml b/app/views/build_stats/index.haml
index 27c063f9..de04d84d 100644
--- a/app/views/build_stats/index.haml
+++ b/app/views/build_stats/index.haml
@@ -14,7 +14,7 @@
- row[:urls].each do |url|
%tr
%th{ scope: 'row' }= row[:title]
- %td= link_to_if url.present?, url, url, class: 'word-break-all'
+ %td= link_to_if (url.present? && url.scheme.present?), url.to_s, url.to_s, class: 'word-break-all'
%td
%time{ datetime: row[:seconds][:machine] }= row[:seconds][:human]
%td= row[:size]
diff --git a/app/views/collaborations/collaborate.haml b/app/views/collaborations/collaborate.haml
index 4d43ad7e..cc951b0c 100644
--- a/app/views/collaborations/collaborate.haml
+++ b/app/views/collaborations/collaborate.haml
@@ -25,4 +25,4 @@
class: 'form-control'
.form-group
- = f.submit t('.submit'), class: 'btn btn-lg btn-block'
+ = f.submit t('.submit'), class: 'btn btn-secondary btn-lg btn-block'
diff --git a/app/views/components/_actor.haml b/app/views/components/_actor.haml
new file mode 100644
index 00000000..c58beae0
--- /dev/null
+++ b/app/views/components/_actor.haml
@@ -0,0 +1,22 @@
+-# Componente Remote_Profile
+
+- uri = text_plain(remote_profile['id'])
+
+.py-2
+ %dl
+ %dt= t('.profile_name')
+ %dd= text_plain remote_profile['name']
+
+ %dt= t('.preferred_name')
+ %dd= text_plain remote_profile['preferredUsername']
+
+ %dt= t('.profile_id')
+ %dd
+ = link_to uri, uri
+
+ - if remote_profile['published'].present?
+ %dt= t('.profile_published')
+ %dd
+ = render 'layouts/time', time: text_plain(remote_profile['published'])
+ %dt= t('.profile_summary')
+ %dd= sanitize remote_profile['summary']
diff --git a/app/views/components/_block_list.haml b/app/views/components/_block_list.haml
new file mode 100644
index 00000000..27e44cac
--- /dev/null
+++ b/app/views/components/_block_list.haml
@@ -0,0 +1,13 @@
+-# Componente Listas de bloqueo de Instancias
+- know_more = t('.know_more')
+- instances_blocked = t('.instances_blocked')
+.card.mt-3.mb-3
+ .card-body
+ = render 'components/checkbox', id: state.id, name: 'fediblock_states_ids[]', value: state.id, checked: state.enabled? do
+ %span.h4.mb-0= blocklist.title
+
+ %dl.mb-0
+ %dt.d-inline= instances_blocked
+ %dd.d-inline.font-weight-normal= blocklist.hostnames.count
+ %p.mb-0.font-weight-normal
+ %a{ href: blocklist.url }= know_more
diff --git a/app/views/components/_block_lists.haml b/app/views/components/_block_lists.haml
new file mode 100644
index 00000000..b6dc0afa
--- /dev/null
+++ b/app/views/components/_block_lists.haml
@@ -0,0 +1,2 @@
+- blocklists.each do |blocklist|
+ = render 'components/block_list', blocklist: blocklist.fediblock, state: blocklist
diff --git a/app/views/components/_btn_base.haml b/app/views/components/_btn_base.haml
new file mode 100644
index 00000000..fed3254c
--- /dev/null
+++ b/app/views/components/_btn_base.haml
@@ -0,0 +1,8 @@
+-# Componente Botón general Moderación
+
+- local_assigns[:method] ||= 'patch'
+- local_assigns[:class] = "btn #{local_assigns[:class]}"
+- local_assigns.delete(:text)
+
+= button_to(path, **local_assigns.compact) do
+ = text
diff --git a/app/views/components/_checkbox.haml b/app/views/components/_checkbox.haml
new file mode 100644
index 00000000..a58c85b7
--- /dev/null
+++ b/app/views/components/_checkbox.haml
@@ -0,0 +1,6 @@
+-# Componente Checkbox
+- local_assigns[:name] ||= id
+
+.custom-control.custom-checkbox
+ %input.custom-control-input{ type: 'checkbox', id: id, **local_assigns.compact }
+ %label.custom-control-label{ for: id }= yield
diff --git a/app/views/components/_comments_btn_box.haml b/app/views/components/_comments_btn_box.haml
new file mode 100644
index 00000000..578f6662
--- /dev/null
+++ b/app/views/components/_comments_btn_box.haml
@@ -0,0 +1,14 @@
+-# Componente Botonera de Comentarios
+
+- local = { reject: { data: { confirm: t('.confirm_reject') } }, report: { class: 'ml-auto', data: { confirm: t('.confirm_report') } } }
+
+.d-flex.flex-row
+ - ActivityPub.events.each do |event|
+ - possible = activity_pub.public_send(:"may_#{event}?")
+ %div{ class: local.dig(event, :class) }
+ = render 'components/btn_base',
+ text: t(".text_#{event}"),
+ path: public_send(:"site_activity_pub_#{event}_path", activity_pub_id: activity_pub),
+ class: ('btn-secondary' if possible),
+ disabled: !possible,
+ data: local.dig(event, :data)
diff --git a/app/views/components/_comments_checked_submenu.haml b/app/views/components/_comments_checked_submenu.haml
new file mode 100644
index 00000000..d94e12a9
--- /dev/null
+++ b/app/views/components/_comments_checked_submenu.haml
@@ -0,0 +1,9 @@
+-#
+ @param form [String]
+
+- current_state = params[:activity_pub_state]&.to_sym || ActivityPub.states.first
+
+- ActivityPub.aasm.events.each do |event|
+ - next if ActivityPub::IGNORED_EVENTS.include? event.name
+ - next unless event.transitions_from_state?(current_state)
+ = render 'components/dropdown_button', form: form, text: t(".submenu_#{event.name}"), name: 'activity_pub_action', value: event.name
diff --git a/app/views/components/_comments_filters.haml b/app/views/components/_comments_filters.haml
new file mode 100644
index 00000000..b2870c5a
--- /dev/null
+++ b/app/views/components/_comments_filters.haml
@@ -0,0 +1,12 @@
+-#
+ @params form [String]
+
+- current_state = params[:activity_pub_state]&.to_sym || ActivityPub.states.first
+
+.d-flex.flex-row.justify-content-between.py-2
+ - if ActivityPub.transitionable_events(current_state).present?
+ = render 'components/dropdown', text: t('.text_checked') do
+ = render 'components/comments_checked_submenu', form: form
+
+ = render 'components/dropdown', text: t('.text_show') do
+ = render 'components/comments_show_submenu', activity_pubs: activity_pubs
diff --git a/app/views/components/_comments_show_submenu.haml b/app/views/components/_comments_show_submenu.haml
new file mode 100644
index 00000000..9964a62a
--- /dev/null
+++ b/app/views/components/_comments_show_submenu.haml
@@ -0,0 +1,5 @@
+- ActivityPub.states.each do |state|
+ = render 'components/dropdown_item',
+ text: t(".submenu_#{state}", count: activity_pubs.unscope(where: :aasm_state).public_send(state).count),
+ path: filter_states(activity_pub_state: state),
+ class: ('active' if active?(ActivityPub.states, :activity_pub_state, state))
diff --git a/app/views/components/_dropdown.haml b/app/views/components/_dropdown.haml
new file mode 100644
index 00000000..6f34950b
--- /dev/null
+++ b/app/views/components/_dropdown.haml
@@ -0,0 +1,34 @@
+-#
+ @param :text [String] Contenido del botón
+ @param :button_classes [Array] Clases para el botón
+ @param :dropdown_classes [Array] Clases para el listado
+ @yield Un bloque que renderiza components/dropdown_item
+- button_classes = local_assigns[:button_classes]&.join(' ')
+- dropdown_classes = local_assigns[:dropdown_classes]&.join(' ')
+
+.btn-group{
+ data: {
+ controller: 'dropdown'
+ }
+ }
+ %button.btn.btn-outline-secondary.dropdown-toggle{
+ type: 'button',
+ class: button_classes,
+ data: {
+ toggle: 'true',
+ display: 'static',
+ action: 'dropdown#toggle',
+ target: 'dropdown.button'
+ },
+ aria: {
+ expanded: 'false'
+ }
+ }
+ = text
+ .dropdown-menu{
+ class: dropdown_classes,
+ data: {
+ target: 'dropdown.dropdown'
+ }
+ }
+ = yield
diff --git a/app/views/components/_dropdown_button.haml b/app/views/components/_dropdown_button.haml
new file mode 100644
index 00000000..d6de6c8e
--- /dev/null
+++ b/app/views/components/_dropdown_button.haml
@@ -0,0 +1,6 @@
+-#
+ @param name [String]
+ @param value [String]
+ @param text [String]
+- local_assigns.delete(:text)
+%button.dropdown-item{type: 'submit', data: { target: 'dropdown.item' }, name: name, value: value, **local_assigns.compact }= text
diff --git a/app/views/components/_dropdown_item.haml b/app/views/components/_dropdown_item.haml
new file mode 100644
index 00000000..a4d363a8
--- /dev/null
+++ b/app/views/components/_dropdown_item.haml
@@ -0,0 +1,5 @@
+-#
+ @param :text [String] Contenido del link
+ @param :path [String,Hash] Link
+- local_assigns[:class] = "dropdown-item #{local_assigns[:class]}"
+= link_to text, path, class: local_assigns[:class], data: { target: 'dropdown.item' }
diff --git a/app/views/components/_instances_btn_box.haml b/app/views/components/_instances_btn_box.haml
new file mode 100644
index 00000000..8c3a5f88
--- /dev/null
+++ b/app/views/components/_instances_btn_box.haml
@@ -0,0 +1,11 @@
+-# Componente botonera de moderación de Instancias
+
+- local_data = {}
+- InstanceModeration.events.each do |event|
+ - possible = instance_moderation.public_send(:"may_#{event}?")
+ = render 'components/btn_base',
+ path: public_send(:"site_instance_moderation_#{event}_path", instance_moderation_id: instance_moderation),
+ text: t(".text_#{event}"),
+ class: ('btn-secondary' if possible),
+ disabled: !possible,
+ data: local_data[event]
diff --git a/app/views/components/_instances_checked_submenu.haml b/app/views/components/_instances_checked_submenu.haml
new file mode 100644
index 00000000..7c9dbd87
--- /dev/null
+++ b/app/views/components/_instances_checked_submenu.haml
@@ -0,0 +1,5 @@
+-#
+ @params form [String]
+
+- InstanceModeration.transitionable_events(current_state).each do |event|
+ = render 'components/dropdown_button', text: t(".submenu_#{event}"), name: 'instance_moderation_action', value: event, form: form
diff --git a/app/views/components/_instances_filters.haml b/app/views/components/_instances_filters.haml
new file mode 100644
index 00000000..f2296c7b
--- /dev/null
+++ b/app/views/components/_instances_filters.haml
@@ -0,0 +1,12 @@
+-#
+ @params form [String]
+
+- current_state = params[:state]&.to_sym || InstanceModeration.states.first
+
+.d-flex.flex-row.justify-content-between.py-2
+ - if InstanceModeration.transitionable_events(current_state).present?
+ = render 'components/dropdown', text: t('.text_checked') do
+ = render 'components/instances_checked_submenu', form: form, current_state: current_state
+
+ = render 'components/dropdown', text: t('.text_show') do
+ = render 'components/instances_show_submenu', instance_moderations: instance_moderations
diff --git a/app/views/components/_instances_show_submenu.haml b/app/views/components/_instances_show_submenu.haml
new file mode 100644
index 00000000..6b9b747e
--- /dev/null
+++ b/app/views/components/_instances_show_submenu.haml
@@ -0,0 +1,5 @@
+- InstanceModeration.states.each do |state|
+ = render 'components/dropdown_item',
+ text: t(".submenu_#{state}", count: instance_moderations.unscope(where: :aasm_state).public_send(state).count),
+ path: filter_states(instance_state: state),
+ class: ('active' if active?(InstanceModeration.states, :instance_state, state))
diff --git a/app/views/components/_profiles_btn_box.haml b/app/views/components/_profiles_btn_box.haml
new file mode 100644
index 00000000..2023de96
--- /dev/null
+++ b/app/views/components/_profiles_btn_box.haml
@@ -0,0 +1,12 @@
+-# Componente Botonera de Moderación de Cuentas (Remote_profile)
+.d-flex.flex-row.w-100
+ - local = { report: { class: 'ml-auto', data: { confirm: t('.confirm_report') } } }
+ - ActorModeration.events.each do |actor_event|
+ - possible = actor_moderation.public_send(:"may_#{actor_event}?")
+ %div{ class: local.dig(actor_event, :class) }
+ = render 'components/btn_base',
+ text: t(".text_#{actor_event}"),
+ path: public_send(:"site_actor_moderation_#{actor_event}_path", actor_moderation_id: actor_moderation),
+ class: ('btn-secondary' if possible),
+ disabled: !possible,
+ data: local.dig(actor_event, :data)
diff --git a/app/views/components/_profiles_checked_submenu.haml b/app/views/components/_profiles_checked_submenu.haml
new file mode 100644
index 00000000..04c86fd4
--- /dev/null
+++ b/app/views/components/_profiles_checked_submenu.haml
@@ -0,0 +1,5 @@
+-#
+ @params form [String]
+
+- ActorModeration.transitionable_events(current_state).each do |actor_event|
+ = render 'components/dropdown_button', text: t(".submenu_#{actor_event}"), name: 'actor_moderation_action', value: actor_event, form: form
diff --git a/app/views/components/_profiles_filters.haml b/app/views/components/_profiles_filters.haml
new file mode 100644
index 00000000..c2670944
--- /dev/null
+++ b/app/views/components/_profiles_filters.haml
@@ -0,0 +1,12 @@
+-#
+ @params form [String]
+
+- current_state = params[:actor_state]&.to_sym || ActorModeration.states.first
+
+.d-flex.flex-row.justify-content-between.py-2
+ - if ActorModeration.transitionable_events(current_state).present?
+ = render 'components/dropdown', text: t('.text_checked') do
+ = render 'components/profiles_checked_submenu', form: form, current_state: current_state
+
+ = render 'components/dropdown', text: t('.text_show') do
+ = render 'components/profiles_show_submenu', actor_moderations: actor_moderations
diff --git a/app/views/components/_profiles_show_submenu.haml b/app/views/components/_profiles_show_submenu.haml
new file mode 100644
index 00000000..bebfbe20
--- /dev/null
+++ b/app/views/components/_profiles_show_submenu.haml
@@ -0,0 +1,5 @@
+- ActorModeration.states.each do |actor_state|
+ = render 'components/dropdown_item',
+ text: t(".submenu_#{actor_state}", count: actor_moderations.unscope(where: :aasm_state).public_send(actor_state).count),
+ path: filter_states(actor_state: actor_state),
+ class: ('active' if active?(ActorModeration.states, :actor_state, actor_state))
diff --git a/app/views/components/_select_all.haml b/app/views/components/_select_all.haml
new file mode 100644
index 00000000..9778cd13
--- /dev/null
+++ b/app/views/components/_select_all.haml
@@ -0,0 +1,4 @@
+-#
+ @param id [String]
+= render 'components/checkbox', id: id, data: { action: 'select-all#toggle', target: 'select-all.toggle', **local_assigns.compact } do
+ %span.sr-only= t('.label')
diff --git a/app/views/components/_select_all_container.haml b/app/views/components/_select_all_container.haml
new file mode 100644
index 00000000..8c8d9426
--- /dev/null
+++ b/app/views/components/_select_all_container.haml
@@ -0,0 +1,13 @@
+-#
+ Contenedor para las acciones en masa.
+
+ Es un formulario auto-contenido, que permite colocar los elementos
+ fuera del formulario para evitar anidarlos. Mientras los elementos
+ tengan el atributo `form` con el mismo parámetro `form_id`, el
+ navegador los va a asignar a este formulario.
+
+ @param path [String]
+ @param form [String]
+
+= form_tag path, id: form, method: :patch do
+ -# nada
diff --git a/app/views/deploy_mailer/deployed.html.haml b/app/views/deploy_mailer/deployed.html.haml
index f5afe5de..762bf4db 100644
--- a/app/views/deploy_mailer/deployed.html.haml
+++ b/app/views/deploy_mailer/deployed.html.haml
@@ -13,7 +13,7 @@
%tr
%td= row[:title]
%td= row[:status]
- %td= link_to_if url.present?, url, url
+ %td= link_to_if (url.present? && url.scheme.present?), url.to_s, url.to_s
%td
%time{ datetime: row[:seconds][:machine] }= row[:seconds][:human]
%td= row[:size]
diff --git a/app/views/deploys/_deploy_social_distributed_press.haml b/app/views/deploys/_deploy_social_distributed_press.haml
new file mode 100644
index 00000000..5c73b262
--- /dev/null
+++ b/app/views/deploys/_deploy_social_distributed_press.haml
@@ -0,0 +1,21 @@
+-# Publicar a la web distribuida
+
+.row
+ .col
+ = deploy.hidden_field :id
+ = deploy.hidden_field :type
+ .custom-control.custom-switch
+ -#
+ El checkbox invierte la lógica de destrucción porque queremos
+ crear el deploy si está activado y destruirlo si está
+ desactivado.
+ = deploy.check_box :_destroy,
+ { checked: deploy.object.persisted?, class: 'custom-control-input' },
+ '0', '1'
+ = deploy.label :_destroy, class: 'custom-control-label' do
+ %h3= t('.title')
+ = sanitize_markdown t('.help'),
+ tags: %w[p strong em a]
+
+
+%hr/
diff --git a/app/views/devise/confirmations/new.haml b/app/views/devise/confirmations/new.haml
index bc2f77bb..c934edc5 100644
--- a/app/views/devise/confirmations/new.haml
+++ b/app/views/devise/confirmations/new.haml
@@ -30,5 +30,5 @@
placeholder: t('activerecord.attributes.usuarie.email')
.actions
= f.submit t('.resend_confirmation_instructions'),
- class: 'btn btn-lg btn-block'
+ class: 'btn btn-secondary btn-lg btn-block'
= render 'devise/shared/links'
diff --git a/app/views/devise/invitations/edit.haml b/app/views/devise/invitations/edit.haml
index ed4980ef..3d2f8d76 100644
--- a/app/views/devise/invitations/edit.haml
+++ b/app/views/devise/invitations/edit.haml
@@ -32,4 +32,4 @@
placeholder: t('activerecord.attributes.usuarie.password')
.actions
= f.submit t('devise.invitations.edit.submit_button'),
- class: 'btn btn-lg btn-block'
+ class: 'btn btn-secondary btn-lg btn-block'
diff --git a/app/views/devise/invitations/new.haml b/app/views/devise/invitations/new.haml
index 4ebb8fa7..b8b097d0 100644
--- a/app/views/devise/invitations/new.haml
+++ b/app/views/devise/invitations/new.haml
@@ -16,4 +16,4 @@
= f.text_field field, class: 'form-control'
.actions
= f.submit t('devise.invitations.new.submit_button'),
- class: 'btn btn-lg btn-block'
+ class: 'btn btn-secondary btn-lg btn-block'
diff --git a/app/views/devise/passwords/edit.haml b/app/views/devise/passwords/edit.haml
index 3a8843c0..cd8ab8ad 100644
--- a/app/views/devise/passwords/edit.haml
+++ b/app/views/devise/passwords/edit.haml
@@ -39,6 +39,6 @@
.actions
= f.submit t('.change_my_password'),
- class: 'btn btn-lg btn-block'
+ class: 'btn btn-secondary btn-lg btn-block'
= render 'devise/shared/links'
diff --git a/app/views/devise/passwords/new.haml b/app/views/devise/passwords/new.haml
index 08dd8d2e..4bf7c990 100644
--- a/app/views/devise/passwords/new.haml
+++ b/app/views/devise/passwords/new.haml
@@ -20,5 +20,5 @@
placeholder: t('activerecord.attributes.usuarie.email')
.actions
= f.submit t('.send_me_reset_password_instructions'),
- class: 'btn btn-lg btn-block'
+ class: 'btn btn-secondary btn-lg btn-block'
= render 'devise/shared/links'
diff --git a/app/views/devise/registrations/edit.haml b/app/views/devise/registrations/edit.haml
index 92699ab8..8bdc55d9 100644
--- a/app/views/devise/registrations/edit.haml
+++ b/app/views/devise/registrations/edit.haml
@@ -55,7 +55,7 @@
= t('.we_need_your_current_password_to_confirm_your_changes')
.actions
= f.submit t('.update'),
- class: 'btn btn-lg btn-block'
+ class: 'btn btn-secondary btn-lg btn-block'
%hr/
.sr-only
@@ -63,4 +63,4 @@
= button_to t('.cancel_my_account'),
registration_path(resource_name),
data: { confirm: t('.are_you_sure') },
- method: :delete, class: 'btn btn-block'
+ method: :delete, class: 'btn btn-secondary btn-block'
diff --git a/app/views/devise/registrations/new.haml b/app/views/devise/registrations/new.haml
index 26fc8e18..aabc0487 100644
--- a/app/views/devise/registrations/new.haml
+++ b/app/views/devise/registrations/new.haml
@@ -56,6 +56,6 @@
.actions
= f.submit t('.sign_up'),
- class: 'btn btn-lg btn-block'
+ class: 'btn btn-secondary btn-lg btn-block'
= render 'devise/shared/links'
diff --git a/app/views/devise/sessions/new.haml b/app/views/devise/sessions/new.haml
index 9b396187..03c3974b 100644
--- a/app/views/devise/sessions/new.haml
+++ b/app/views/devise/sessions/new.haml
@@ -35,5 +35,5 @@
remember_for: distance_of_time_in_words(Usuarie.remember_for))
.actions
= f.submit t('.sign_in'),
- class: 'btn btn-lg btn-block'
+ class: 'btn btn-secondary btn-lg btn-block'
= render 'devise/shared/links'
diff --git a/app/views/devise/shared/_links.haml b/app/views/devise/shared/_links.haml
index b4b89175..5d5c0b67 100644
--- a/app/views/devise/shared/_links.haml
+++ b/app/views/devise/shared/_links.haml
@@ -4,12 +4,12 @@
- if controller_name != 'sessions'
= link_to t('.sign_in'), new_session_path(resource_name, params: locale),
- class: 'btn btn-lg btn-block btn-success'
+ class: 'btn btn-lg btn-block btn-secondary'
%br/
- if devise_mapping.registerable? && controller_name != 'registrations'
= link_to t('.sign_up'), new_registration_path(resource_name, params: locale),
- class: 'btn btn-lg btn-block btn-success'
+ class: 'btn btn-lg btn-block btn-secondary'
%br/
- if devise_mapping.recoverable?
diff --git a/app/views/devise/unlocks/new.haml b/app/views/devise/unlocks/new.haml
index 09468a52..34253f44 100644
--- a/app/views/devise/unlocks/new.haml
+++ b/app/views/devise/unlocks/new.haml
@@ -20,5 +20,5 @@
placeholder: t('activerecord.attributes.usuarie.email')
.actions
= f.submit t('.resend_unlock_instructions'),
- class: 'btn btn-lg btn-block'
+ class: 'btn btn-secondary btn-lg btn-block'
= render 'devise/shared/links'
diff --git a/app/views/env/index.js.haml b/app/views/env/index.js.haml
index 597ba53f..8627fa4f 100644
--- a/app/views/env/index.js.haml
+++ b/app/views/env/index.js.haml
@@ -2,7 +2,7 @@
= cache @site do
:plain
window.env = {
- AIRBRAKE_SITE_ID: #{@site.id},
- AIRBRAKE_API_KEY: "#{@site.airbrake_api_key}",
+ AIRBRAKE_PROJECT_ID: #{@site.id},
+ AIRBRAKE_PROJECT_KEY: "#{@site.airbrake_api_key}",
PANEL_URL: "#{ENV['PANEL_URL']}"
}
diff --git a/app/views/i18n/_form.haml b/app/views/i18n/_form.haml
index c88e8616..31b76932 100644
--- a/app/views/i18n/_form.haml
+++ b/app/views/i18n/_form.haml
@@ -11,7 +11,7 @@
= select_tag 'to',
options_for_select(@options, @lang_to),
class: 'form-control'
- = submit_tag t('i18n.translate'), class: 'btn', name: nil
+ = submit_tag t('i18n.translate'), class: 'btn btn-secondary', name: nil
- else
= t('i18n.translating.from')
= select_tag 'from',
@@ -21,7 +21,7 @@
= select_tag 'to',
options_for_select(@options, @lang_to),
class: 'form-control'
- = submit_tag t('i18n.change'), class: 'btn', name: nil
+ = submit_tag t('i18n.change'), class: 'btn btn-secondary', name: nil
= render 'layouts/help', help: t('help.i18n.index')
@@ -33,16 +33,16 @@
= hidden_field 'i18n', 'lang_to', value: @lang_to
.form-group
.dropdown.inline
- %button.btn.dropdown-toggle{type: 'button',
+ %button.btn.btn-secondary.dropdown-toggle{type: 'button',
data: { toggle: 'dropdown' },
aria: { haspopup: 'true', expanded: 'false' }}
= t('i18n.jump')
.dropdown-menu{aria: { labelledby: t('i18n.jump') }}
- @site.data.dig(@lang_from).each_pair do |section, content|
%a.dropdown-item{href: "##{section}"}= t("help.i18n.#{section}")
- = submit_tag t('i18n.save'), class: 'btn'
+ = submit_tag t('i18n.save'), class: 'btn btn-secondary'
= render 'i18n/recursive', data: @site.data.dig(@lang_from), superkeys: []
.form-group
- = submit_tag t('i18n.save'), class: 'btn'
+ = submit_tag t('i18n.save'), class: 'btn btn-secondary'
diff --git a/app/views/layouts/_breadcrumb.haml b/app/views/layouts/_breadcrumb.haml
index 11f7f005..a946243a 100644
--- a/app/views/layouts/_breadcrumb.haml
+++ b/app/views/layouts/_breadcrumb.haml
@@ -13,19 +13,19 @@
%span.line-clamp-1= link_to crumb.name, crumb.url
- if @current_usuarie || current_usuarie
- %ul.navbar-nav
+ %ul.navbar-nav.flex-row
- if @site&.tienda?
%li.nav-item
= link_to t('.tienda'), @site.tienda_url,
- role: 'button', class: 'btn'
+ role: 'button', class: 'btn btn-secondary'
%li.nav-item
= link_to t('.contact_us'), t('.contact_us_href'),
- class: 'btn', rel: 'me', target: '_blank'
+ class: 'btn btn-secondary', rel: 'me', target: '_blank'
%li.nav-item
= link_to t('.logout'), main_app.destroy_usuarie_session_path,
- method: :delete, role: 'button', class: 'btn'
+ method: :delete, role: 'button', class: 'btn btn-secondary'
- else
- params.permit!
- I18n.available_locales.each do |locale|
diff --git a/app/views/layouts/_btn_with_tooltip.haml b/app/views/layouts/_btn_with_tooltip.haml
index 27eda3c1..9651eae0 100644
--- a/app/views/layouts/_btn_with_tooltip.haml
+++ b/app/views/layouts/_btn_with_tooltip.haml
@@ -1,2 +1,2 @@
-= link_to text, link, class: 'btn',
+= link_to text, link, class: 'btn btn-secondary',
data: { toggle: 'tooltip' }, 'aria-role': 'button', title: tooltip
diff --git a/app/views/layouts/_details.haml b/app/views/layouts/_details.haml
new file mode 100644
index 00000000..a21f46c1
--- /dev/null
+++ b/app/views/layouts/_details.haml
@@ -0,0 +1,16 @@
+-#
+ Detail Cola de Moderación
+
+ @param :id [String] El ID opcional sirve para mantener el historial de
+ cuál estaba abierto y recuperarlo al cargar la página
+ @param :summary [String] El resumen
+ @param :summary_class [String] Clases para el summary
+
+- local_assigns[:summary_class] ||= 'h3'
+
+%details.details.py-2{ id: local_assigns[:id], data: { controller: 'details', action: 'toggle->details#store' } }
+ %summary.d-flex.flex-row.align-items-center.justify-content-between{ class: local_assigns[:summary_class] }
+ %span= summary
+ %span.hide-when-open ▶
+ %span.show-when-open ▼
+ = yield
diff --git a/app/views/layouts/_flash.haml b/app/views/layouts/_flash.haml
index 7bd7ec0b..2d65ff78 100644
--- a/app/views/layouts/_flash.haml
+++ b/app/views/layouts/_flash.haml
@@ -1,4 +1,4 @@
- flash.each do |type, message|
- unless type == 'js'
= render 'bootstrap/alert' do
- = message
+ = sanitize_markdown message, tags: %w[a strong em]
diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml
index d2113398..eaa15eb4 100644
--- a/app/views/layouts/application.html.haml
+++ b/app/views/layouts/application.html.haml
@@ -14,7 +14,8 @@
%script{ type: 'text/javascript', src: '/env.js' }
= csrf_meta_tags
= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload'
- = javascript_pack_tag 'application', 'data-turbolinks-track': 'reload'
+ = stylesheet_link_tag 'dark', rel: 'alternate stylesheet', media: 'all', 'data-turbolinks-track': 'reload', title: t('dark')
+ = javascript_pack_tag 'application', 'data-turbolinks-track': 'reload', defer: true
= stylesheet_pack_tag 'application', 'data-turbolinks-track': 'reload'
= favicon_link_tag 'sutty_cuadrada.png', rel: 'apple-touch-icon', type: 'image/png'
= render 'layouts/link_rel_alternate'
diff --git a/app/views/moderation_queue/_account.haml b/app/views/moderation_queue/_account.haml
new file mode 100644
index 00000000..498d78f4
--- /dev/null
+++ b/app/views/moderation_queue/_account.haml
@@ -0,0 +1,16 @@
+-#
+ @params form [String]
+
+.row.no-gutters.pt-2
+ .col-1
+ = render 'components/checkbox', id: actor_moderation.id, form: form, name: 'actor_moderation[]', value: actor_moderation.id, data: { target: 'select-all.input' }
+ .col-11
+ - cache [actor_moderation, profile] do
+ %h4
+ = link_to text_plain(profile['name']), site_actor_moderation_path(id: actor_moderation)
+ .mb-3
+ = sanitize profile['summary']
+
+ -# Botones de Moderación
+ .d-flex.pb-4
+ = render 'components/profiles_btn_box', actor_moderation: actor_moderation
diff --git a/app/views/moderation_queue/_accounts.haml b/app/views/moderation_queue/_accounts.haml
new file mode 100644
index 00000000..257b0fbf
--- /dev/null
+++ b/app/views/moderation_queue/_accounts.haml
@@ -0,0 +1,17 @@
+- form_id = 'actor_moderations_action_on_several'
+
+= render 'components/select_all_container', path: site_actor_moderations_action_on_several_path, form: form_id
+
+.row.no-gutters.pt-2{ data: { controller: 'select-all' } }
+ .col-1.d-flex.align-items-center
+ = render 'components/select_all', id: 'actors', form: form_id
+ .col-11
+ -# Filtros
+ = render 'components/profiles_filters', actor_moderations: actor_moderations, form: form_id
+ .col-12
+ - if actor_moderations.count.zero?
+ %h4= t('moderation_queue.nothing')
+ - actor_moderations.find_each do |actor_moderation|
+ - next if actor_moderation.actor.content.empty?
+ %hr
+ = render 'account', actor_moderation: actor_moderation, profile: actor_moderation.actor.content, form: form_id
diff --git a/app/views/moderation_queue/_block_instances_textarea.haml b/app/views/moderation_queue/_block_instances_textarea.haml
new file mode 100644
index 00000000..7daf0410
--- /dev/null
+++ b/app/views/moderation_queue/_block_instances_textarea.haml
@@ -0,0 +1,3 @@
+.form-group
+ = label_tag 'custom_blocklist', t('moderation_queue.instances.custom_block')
+ = text_area_tag 'custom_blocklist', nil, class: 'form-control', placeholder: t('moderation_queue.instances.custom_block_placeholder')
diff --git a/app/views/moderation_queue/_comment.haml b/app/views/moderation_queue/_comment.haml
new file mode 100644
index 00000000..a80bd27c
--- /dev/null
+++ b/app/views/moderation_queue/_comment.haml
@@ -0,0 +1,47 @@
+-#
+ Componente Comentario
+
+ @param site [Site]
+ @param form [String]
+ @param profile [Hash]
+ @param comment [Hash]
+ @param activity_pub [ActivityPub]
+
+- in_reply_to = text_plain comment['inReplyTo']
+:ruby
+ begin
+ if in_reply_to && (remote_object = object.referenced(site)['inReplyTo'])
+ in_reply_to = ActivityPub.url_from_object(remote_object)
+ end
+ rescue Exception => e
+ ExceptionNotifier.notify_exception(e, data: { site: site.name, object: comment })
+ end
+- summary = text_plain comment['summary']
+-# @todo Generar un desplegable con todas las opciones
+- url = text_plain ActivityPub.url_from_object(comment)
+
+.row.no-gutters
+ .col-1
+ = render 'components/checkbox', id: activity_pub.id, name: 'activity_pub[]', value: activity_pub.id, data: { target: 'select-all.input' }, form: form
+ .col-11
+ - cache [activity_pub, comment] do
+ .d-flex.flex-row.align-items-center.justify-content-between
+ %h4.mb-0
+ %a{ href: text_plain(comment['attributedTo']) }= text_plain profile['preferredUsername']
+ %a{ href: url }
+ %small
+ = render 'layouts/time', time: text_plain(comment['published'])
+ - if in_reply_to.present?
+ %dl
+ %dt.d-inline
+ %small= t('.reply_to')
+ %dd.d-inline
+ %small
+ %a{ href: in_reply_to }= in_reply_to
+ .content.mb-3
+ - if summary.present?
+ = render 'layouts/details', summary: summary, summary_class: 'h5' do
+ = sanitize comment['content']
+ - else
+ = sanitize comment['content']
+ = render 'components/comments_btn_box', activity_pub: activity_pub
diff --git a/app/views/moderation_queue/_comments.haml b/app/views/moderation_queue/_comments.haml
new file mode 100644
index 00000000..a7523517
--- /dev/null
+++ b/app/views/moderation_queue/_comments.haml
@@ -0,0 +1,18 @@
+- form_id = 'activity_pub_action_on_several'
+
+= render 'components/select_all_container', path: site_activity_pubs_action_on_several_path, form: form_id
+
+.row.no-gutters.pt-2{ data: { controller: 'select-all' } }
+ .col-1.d-flex.align-items-center
+ = render 'components/select_all', id: 'select-all-comments', form: form_id
+ .col-11
+ -# Filtros
+ = render 'components/comments_filters', activity_pubs: moderation_queue, form: form_id
+ .col-12
+ - if moderation_queue.count.zero?
+ %h4= t('moderation_queue.nothing')
+ - moderation_queue.each do |activity_pub|
+ - next if activity_pub.object.content.empty?
+ - next if activity_pub.actor.content.empty?
+ %hr
+ = render 'moderation_queue/comment', comment: activity_pub.object.content, profile: activity_pub.actor.content, activity_pub: activity_pub, form: form_id, site: site, object: activity_pub.object
diff --git a/app/views/moderation_queue/_instance.haml b/app/views/moderation_queue/_instance.haml
new file mode 100644
index 00000000..c380089a
--- /dev/null
+++ b/app/views/moderation_queue/_instance.haml
@@ -0,0 +1,23 @@
+- usuaries = instance.content.dig('usage', 'users', 'active_month')
+- usuaries ||= instance.content.dig('stats', 'user_count')
+- title = sanitize(instance.content['title'])
+
+.row.no-gutters.pt-2
+ .col-1
+ = render 'components/checkbox', id: instance.hostname, form: form, name: 'instance_moderation[]', value: instance_moderation.id, data: { target: 'select-all.input' }
+ .col-11
+ - cache [instance_moderation, instance] do
+ %h4
+ %a{ href: instance.uri }= title || instance.hostname
+ - if title.present?
+ = " (#{instance.hostname})".html_safe
+ .content
+ = sanitize instance.content['description']
+ - if usuaries.present?
+ %dl
+ %dt.d-inline= t('.users')
+ %dd.d-inline= text_plain usuaries.to_s
+
+ -# Botones moderación
+ .d-flex.pb-4
+ = render 'components/instances_btn_box', instance_moderation: instance_moderation
diff --git a/app/views/moderation_queue/_instances.haml b/app/views/moderation_queue/_instances.haml
new file mode 100644
index 00000000..6bc08b95
--- /dev/null
+++ b/app/views/moderation_queue/_instances.haml
@@ -0,0 +1,30 @@
+- form_id = 'instance_moderation_action_on_several'
+
+%section
+ = render 'components/select_all_container', path: site_instance_moderations_action_on_several_path, form: form_id
+ .row.no-gutters.pt-2{ data: { controller: 'select-all' } }
+ .col-1.d-flex.align-items-center
+ = render 'components/select_all', id: 'instances', form: form_id
+ .col-11
+ -# Filtros
+ = render 'components/instances_filters', instance_moderations: instance_moderations, form: form_id
+
+ .col-12
+ - if instance_moderations.count.zero?
+ %h4= t('moderation_queue.nothing')
+
+ - instance_moderations.each do |instance_moderation|
+ %hr
+ = render 'moderation_queue/instance', instance_moderation: instance_moderation, instance: instance_moderation.instance, form: form_id
+
+ %hr
+ %div
+ %h3.mt-5= t('moderation_queue.instances.title')
+ %lead= t('moderation_queue.instances.description')
+
+ = form_tag site_fediblock_states_action_on_several_path, method: :patch do
+ = render 'components/block_lists', blocklists: fediblock_states
+ = render 'moderation_queue/block_instances_textarea'
+
+ .form-group
+ %button.btn.btn-secondary.mt-3{ type: 'submit' }= t('moderation_queue.instances.submit')
diff --git a/app/views/moderation_queue/index.haml b/app/views/moderation_queue/index.haml
new file mode 100644
index 00000000..80f0bd7c
--- /dev/null
+++ b/app/views/moderation_queue/index.haml
@@ -0,0 +1,13 @@
+.row.justify-content-center
+ .col-md-8
+ %h1= t('.title')
+ .row
+ .col
+ = render 'layouts/details', id: 'summary', summary: t('.instances') do
+ = render 'moderation_queue/instances', site: @site, instance_moderations: @instance_moderations, fediblock_states: @site.fediblock_states
+ %hr
+ = render 'layouts/details', id: 'accounts', summary: t('.accounts') do
+ = render 'moderation_queue/accounts', site: @site, actor_moderations: @actor_moderations
+ %hr
+ = render 'layouts/details', id: 'comments', summary: t('.comments') do
+ = render 'moderation_queue/comments', site: @site, moderation_queue: @moderation_queue
diff --git a/app/views/posts/_moderation_queue.haml b/app/views/posts/_moderation_queue.haml
new file mode 100644
index 00000000..a72e8abd
--- /dev/null
+++ b/app/views/posts/_moderation_queue.haml
@@ -0,0 +1,14 @@
+.row.no-gutters.pt-2
+ .col-1
+ = render 'components/checkbox', id: moderation_queue.first['id']
+ .col-11
+ -# Filtros
+ = render 'components/comments_filters'
+
+- moderation_queue.each do |comment|
+ %hr
+ = render 'moderation_queue/comment', comment: comment, profile: comment['attributedTo']
+
+ -# Botones moderación
+ .d-flex
+ = render 'components/comments_btn_box'
diff --git a/app/views/posts/_submit.haml b/app/views/posts/_submit.haml
index 944694c1..c6c0a68a 100644
--- a/app/views/posts/_submit.haml
+++ b/app/views/posts/_submit.haml
@@ -1,7 +1,7 @@
- invalid_help = site.config.fetch('invalid_help', t('.invalid_help'))
- sending_help = site.config.fetch('sending_help', t('.sending_help'))
.form-group
- = submit_tag t('.save'), class: 'btn submit-post'
+ = submit_tag t('.save'), class: 'btn btn-secondary submit-post'
= render 'bootstrap/alert', class: 'invalid-help d-none' do
= invalid_help
= render 'bootstrap/alert', class: 'sending-help d-none' do
diff --git a/app/views/posts/attribute_ro/_created_at.haml b/app/views/posts/attribute_ro/_created_at.haml
new file mode 100644
index 00000000..04f6d716
--- /dev/null
+++ b/app/views/posts/attribute_ro/_created_at.haml
@@ -0,0 +1,4 @@
+%tr{ id: attribute }
+ %th= post_label_t(attribute, post: post)
+ %td{ dir: dir, lang: locale }
+ %time{ datetime: metadata.value.xmlschema }= l metadata.value
diff --git a/app/views/posts/attribute_ro/_new_content.haml b/app/views/posts/attribute_ro/_new_content.haml
new file mode 100644
index 00000000..e6d9a274
--- /dev/null
+++ b/app/views/posts/attribute_ro/_new_content.haml
@@ -0,0 +1,3 @@
+%tr{ id: attribute }
+ %th= post_label_t(attribute, post: post)
+ %td{ lang: locale, dir: dir }= metadata.value
diff --git a/app/views/posts/attribute_ro/_new_html.haml b/app/views/posts/attribute_ro/_new_html.haml
new file mode 100644
index 00000000..97931960
--- /dev/null
+++ b/app/views/posts/attribute_ro/_new_html.haml
@@ -0,0 +1,3 @@
+%tr{ id: attribute }
+ %th= post_label_t(attribute, post: post)
+ %td{ lang: locale, dir: dir }= metadata.value.html_safe
diff --git a/app/views/posts/attributes/_content.haml b/app/views/posts/attributes/_content.haml
index 5db023fb..872422af 100644
--- a/app/views/posts/attributes/_content.haml
+++ b/app/views/posts/attributes/_content.haml
@@ -3,7 +3,7 @@
= render 'posts/attribute_feedback',
post: post, attribute: attribute, metadata: metadata
- .editor{ id: attribute, data: { editor: '' } }
+ .old.editor{ id: attribute, data: { editor: '' } }
-# Esto es para luego decirle al navegador que se olvide estas cosas.
= hidden_field_tag 'storage_keys[]', "#{request.original_url}##{attribute}", data: { target: 'storage-key' }
= render 'bootstrap/alert' do
@@ -20,82 +20,82 @@
TODO: Eliminar todo el espacio en blanco para minificar HTML
.editor-toolbar{ style: 'z-index: 1' }
.editor-primary-toolbar.scrollbar-black
- %button.btn{ type: 'button', title: t('editor.multimedia'), data: { editor_button: 'multimedia' } }>
+ %button.btn.btn-secondary{ type: 'button', title: t('editor.multimedia'), data: { editor_button: 'multimedia' } }>
%i.fa.fa-fw.fa-upload>
%span.sr-only>= t('editor.multimedia')
- %button.btn{ type: 'button', title: t('editor.bold'), data: { editor_button: 'mark-bold' } }>
+ %button.btn.btn-secondary{ type: 'button', title: t('editor.bold'), data: { editor_button: 'mark-bold' } }>
%i.fa.fa-fw.fa-bold>
%span.sr-only>= t('editor.bold')
- %button.btn{ type: 'button', title: t('editor.italic'), data: { editor_button: 'mark-italic' } }>
+ %button.btn.btn-secondary{ type: 'button', title: t('editor.italic'), data: { editor_button: 'mark-italic' } }>
%i.fa.fa-fw.fa-italic>
%span.sr-only>= t('editor.italic')
- %button.btn{ type: 'button', title: t('editor.mark'), data: { editor_button: 'mark-mark' } }>
+ %button.btn.btn-secondary{ type: 'button', title: t('editor.mark'), data: { editor_button: 'mark-mark' } }>
%i.fa.fa-fw.fa-tint>
%span.sr-only>= t('editor.mark')
- %button.btn{ type: 'button', title: t('editor.link'), data: { editor_button: 'mark-link' } }>
+ %button.btn.btn-secondary{ type: 'button', title: t('editor.link'), data: { editor_button: 'mark-link' } }>
%i.fa.fa-fw.fa-link>
%span.sr-only>= t('editor.link')
- %button.btn{ type: 'button', title: t('editor.deleted'), data: { editor_button: 'mark-deleted' } }>
+ %button.btn.btn-secondary{ type: 'button', title: t('editor.deleted'), data: { editor_button: 'mark-deleted' } }>
%i.fa.fa-fw.fa-strikethrough>
%span.sr-only>= t('editor.deleted')
- %button.btn{ type: 'button', title: t('editor.underline'), data: { editor_button: 'mark-underline' } }>
+ %button.btn.btn-secondary{ type: 'button', title: t('editor.underline'), data: { editor_button: 'mark-underline' } }>
%i.fa.fa-fw.fa-underline>
%span.sr-only>= t('editor.underline')
- %button.btn{ type: 'button', title: t('editor.super'), data: { editor_button: 'mark-super' } }>
+ %button.btn.btn-secondary{ type: 'button', title: t('editor.super'), data: { editor_button: 'mark-super' } }>
%i.fa.fa-fw.fa-superscript>
%span.sr-only>= t('editor.super')
- %button.btn{ type: 'button', title: t('editor.sub'), data: { editor_button: 'mark-sub' } }>
+ %button.btn.btn-secondary{ type: 'button', title: t('editor.sub'), data: { editor_button: 'mark-sub' } }>
%i.fa.fa-fw.fa-subscript>
%span.sr-only>= t('editor.sub')
- %button.btn{ type: 'button', title: t('editor.small'), data: { editor_button: 'mark-small' } }>
+ %button.btn.btn-secondary{ type: 'button', title: t('editor.small'), data: { editor_button: 'mark-small' } }>
%i.fa.fa-fw.fa-subscript>
%span.sr-only>= t('editor.small')
- %button.btn.mr-0{ type: 'button', title: t('editor.h1'), data: { editor_button: 'block-h1' } }>
+ %button.btn.btn-secondary.mr-0{ type: 'button', title: t('editor.h1'), data: { editor_button: 'block-h1' } }>
%i.fa.fa-fw.fa-heading>
1
%span.sr-only>= t('editor.h1')
%details.d-inline>
%summary.d-inline>
- %span.btn.ml-0{ role: 'button', title: t('editor.more') }>
+ %span.btn.btn-secondary.ml-0{ role: 'button', title: t('editor.more') }>
%i.fa.fa-caret-right>
%span.sr-only= t('editor.more')
.d-inline>
- %button.btn{ type: 'button', title: t('editor.h2'), data: { editor_button: 'block-h2' } }>
+ %button.btn.btn-secondary{ type: 'button', title: t('editor.h2'), data: { editor_button: 'block-h2' } }>
%i.fa.fa-fw.fa-heading>
2
%span.sr-only>= t('editor.h2')
- %button.btn{ type: 'button', title: t('editor.h3'), data: { editor_button: 'block-h3' } }>
+ %button.btn.btn-secondary{ type: 'button', title: t('editor.h3'), data: { editor_button: 'block-h3' } }>
%i.fa.fa-fw.fa-heading>
3
%span.sr-only>= t('editor.h3')
- %button.btn{ type: 'button', title: t('editor.h4'), data: { editor_button: 'block-h4' } }>
+ %button.btn.btn-secondary{ type: 'button', title: t('editor.h4'), data: { editor_button: 'block-h4' } }>
%i.fa.fa-fw.fa-heading>
4
%span.sr-only>= t('editor.h4')
- %button.btn{ type: 'button', title: t('editor.h5'), data: { editor_button: 'block-h5' } }>
+ %button.btn.btn-secondary{ type: 'button', title: t('editor.h5'), data: { editor_button: 'block-h5' } }>
%i.fa.fa-fw.fa-heading>
5
%span.sr-only>= t('editor.h5')
- %button.btn{ type: 'button', title: t('editor.h6'), data: { editor_button: 'block-h6' } }>
+ %button.btn.btn-secondary{ type: 'button', title: t('editor.h6'), data: { editor_button: 'block-h6' } }>
%i.fa.fa-fw.fa-heading>
6
%span.sr-only>= t('editor.h6')
- %button.btn{ type: 'button', title: t('editor.ul'), data: { editor_button: 'block-unordered_list' } }>
+ %button.btn.btn-secondary{ type: 'button', title: t('editor.ul'), data: { editor_button: 'block-unordered_list' } }>
%i.fa.fa-fw.fa-list-ul>
%span.sr-only>= t('editor.ul')
- %button.btn{ type: 'button', title: t('editor.ol'), data: { editor_button: 'block-ordered_list' } }>
+ %button.btn.btn-secondary{ type: 'button', title: t('editor.ol'), data: { editor_button: 'block-ordered_list' } }>
%i.fa.fa-fw.fa-list-ol>
%span.sr-only>= t('editor.ol')
- %button.btn{ type: 'button', title: t('editor.left'), data: { editor_button: 'parentBlock-left' } }>
+ %button.btn.btn-secondary{ type: 'button', title: t('editor.left'), data: { editor_button: 'parentBlock-left' } }>
%i.fa.fa-fw.fa-align-left>
%span.sr-only>= t('editor.left')
- %button.btn{ type: 'button', title: t('editor.center'), data: { editor_button: 'parentBlock-center' } }>
+ %button.btn.btn-secondary{ type: 'button', title: t('editor.center'), data: { editor_button: 'parentBlock-center' } }>
%i.fa.fa-fw.fa-align-center>
%span.sr-only>= t('editor.center')
- %button.btn{ type: 'button', title: t('editor.right'), data: { editor_button: 'parentBlock-right' } }>
+ %button.btn.btn-secondary{ type: 'button', title: t('editor.right'), data: { editor_button: 'parentBlock-right' } }>
%i.fa.fa-fw.fa-align-right>
%span.sr-only>= t('editor.right')
- %button.btn{ type: 'button', title: t('editor.blockquote'), data: { editor_button: 'block-blockquote' } }>
+ %button.btn.btn-secondary{ type: 'button', title: t('editor.blockquote'), data: { editor_button: 'block-blockquote' } }>
%i.fa.fa-fw.fa-quote-left>
%span.sr-only>= t('editor.blockquote')
@@ -116,8 +116,8 @@
%label{ for: 'multimedia-alt' }= t('editor.description')
%input.form-control{ type: 'text', id: 'multimedia-alt', name: 'multimedia-alt' }/
.form-group
- %button.btn{ type: 'button', id: 'multimedia-file-upload', name: 'multimedia-file-upload' }= t('editor.multimedia-upload')
- %button.btn{ type: 'button', id: 'multimedia-remove', name: 'multimedia-remove' }= t('editor.multimedia-remove')
+ %button.btn.btn-secondary{ type: 'button', id: 'multimedia-file-upload', name: 'multimedia-file-upload' }= t('editor.multimedia-upload')
+ %button.btn.btn-secondary{ type: 'button', id: 'multimedia-remove', name: 'multimedia-remove' }= t('editor.multimedia-remove')
.form-group{ data: { editor_auxiliary: 'link' } }
%label{ for: 'link-url' }= t('editor.url')
@@ -127,4 +127,4 @@
%p= t('editor.word')
.editor-content.form-control.h-auto.mt-1{ contenteditable: 'true' }
- = metadata.value.html_safe
+ = metadata.to_s.html_safe
diff --git a/app/views/posts/attributes/_created_at.haml b/app/views/posts/attributes/_created_at.haml
new file mode 100644
index 00000000..0aab9802
--- /dev/null
+++ b/app/views/posts/attributes/_created_at.haml
@@ -0,0 +1 @@
+-# nada
diff --git a/app/views/posts/attributes/_file.haml b/app/views/posts/attributes/_file.haml
index 54f9f81a..20c27399 100644
--- a/app/views/posts/attributes/_file.haml
+++ b/app/views/posts/attributes/_file.haml
@@ -1,12 +1,14 @@
-.form-group
+.form-group{ data: { controller: 'file-preview' } }
- if metadata.static_file
- case metadata.static_file.blob.content_type
- when %r{\Avideo/}
= video_tag url_for(metadata.static_file),
- controls: true, class: 'img-fluid'
+ controls: true, class: 'img-fluid',
+ data: { target: 'file-preview.preview' }
- when %r{\Aaudio/}
= audio_tag url_for(metadata.static_file),
- controls: true, class: 'img-fluid'
+ controls: true, class: 'img-fluid',
+ data: { target: 'file-preview.preview' }
- when 'application/pdf'
%iframe{ src: url_for(metadata.static_file) }
- else
@@ -24,7 +26,7 @@
= file_field(*field_name_for(base, attribute, :path),
**field_options(attribute, metadata, required: (metadata.required && !metadata.path?)),
class: "custom-file-input #{invalid(post, attribute)}",
- data: { preview: "#{attribute}-preview" })
+ data: { target: 'file-preview.input', action: 'file-preview#update' })
= label_tag "#{base}_#{attribute}_path",
post_label_t(attribute, :path, post: post), class: 'custom-file-label'
= render 'posts/attribute_feedback',
diff --git a/app/views/posts/attributes/_image.haml b/app/views/posts/attributes/_image.haml
index 84fe56fd..241a78e8 100644
--- a/app/views/posts/attributes/_image.haml
+++ b/app/views/posts/attributes/_image.haml
@@ -1,9 +1,9 @@
-.form-group
+.form-group{ data: { controller: 'file-preview' } }
- if metadata.static_file
= image_tag url_for(metadata.static_file),
alt: metadata.value['description'],
class: 'img-fluid',
- id: "#{attribute}-preview"
+ data: { target: 'file-preview.preview' }
-# Mantener el valor si no enviamos ninguna imagen
= hidden_field_tag "#{base}[#{attribute}][path]", metadata.value['path']
@@ -16,13 +16,14 @@
= image_tag '',
alt: metadata.value['description'],
class: 'img-fluid',
- id: "#{attribute}-preview"
+ data: { target: 'file-preview.preview' }
.custom-file
= file_field(*field_name_for(base, attribute, :path),
**field_options(attribute, metadata, required: (metadata.required && !metadata.path?)),
class: "custom-file-input #{invalid(post, attribute)}",
- accept: ActiveStorage.web_image_content_types.join(','), data: { preview: "#{attribute}-preview" })
+ accept: ActiveStorage.web_image_content_types.join(','),
+ data: { target: 'file-preview.input', action: 'file-preview#update' })
= label_tag "#{base}_#{attribute}_path",
post_label_t(attribute, :path, post: post), class: 'custom-file-label'
= render 'posts/attribute_feedback',
diff --git a/app/views/posts/attributes/_new_content.haml b/app/views/posts/attributes/_new_content.haml
new file mode 100644
index 00000000..cbdf8f94
--- /dev/null
+++ b/app/views/posts/attributes/_new_content.haml
@@ -0,0 +1,9 @@
+.form-group
+ = label_tag "#{base}_#{attribute}", post_label_t(attribute, post: post)
+ = render 'posts/attribute_feedback',
+ post: post, attribute: attribute, metadata: metadata
+
+ .new-editor.content{ id: attribute }
+ = text_area_tag "#{base}[#{attribute}]", metadata.to_s.html_safe,
+ dir: dir, lang: locale,
+ **field_options(attribute, metadata), class: 'd-none'
diff --git a/app/views/posts/attributes/_new_html.haml b/app/views/posts/attributes/_new_html.haml
new file mode 100644
index 00000000..629342b3
--- /dev/null
+++ b/app/views/posts/attributes/_new_html.haml
@@ -0,0 +1,6 @@
+-# Editor de contenido
+= render 'posts/attributes/new_content',
+ base: 'post', post: post, attribute: attribute,
+ metadata: metadata, site: site,
+ dir: dir, locale: locale,
+ autofocus: (post.attributes.first == attribute)
diff --git a/app/views/posts/edit.haml b/app/views/posts/edit.haml
index 6ec252fe..e7e0260d 100644
--- a/app/views/posts/edit.haml
+++ b/app/views/posts/edit.haml
@@ -1,3 +1,9 @@
.row.justify-content-center
.col-md-8
- = render 'posts/form', site: @site, post: @post
+ - if policy(@site).edit?
+ = render 'layouts/details', summary: t('posts.edit.post') do
+ = render 'posts/form', site: @site, post: @post
+ = render 'layouts/details', summary: t('posts.edit.moderation_queue') do
+ = render 'posts/moderation_queue', site: @site, post: @post, moderation_queue: @moderation_queue
+ - else
+ = render 'posts/form', site: @site, post: @post
diff --git a/app/views/posts/index.haml b/app/views/posts/index.haml
index e8c3dea7..3de30aa3 100644
--- a/app/views/posts/index.haml
+++ b/app/views/posts/index.haml
@@ -1,10 +1,17 @@
+- reorder_allowed = policy(@site).reorder?
+- if reorder_allowed
+ - reorder_controller = { controller: 'reorder' }
+ - reorder_target = { target: 'reorder.row' }
+- else
+ - reorder_target = reorder_controller = {}
+
%main.row
%aside.menu.col-md-3
- = render 'sites/header', site: @site
-
- = render 'sites/status', site: @site
-
- = render 'sites/build', site: @site, class: 'btn-block'
+ .mb-3
+ = render 'sites/header', site: @site
+ = render 'sites/status', site: @site
+ = render 'sites/build', site: @site, class: 'btn-block'
+ = render 'sites/moderation_queue', site: @site, class: 'btn-block'
%h3= t('posts.new')
%table.table.table-sm.mb-3
@@ -15,13 +22,13 @@
= render 'schemas/row', site: @site, schema: schema, filter: @filter_params
- if policy(@site_stat).index?
- = link_to t('stats.index.title'), site_stats_path(@site), class: 'btn'
+ = link_to t('stats.index.title'), site_stats_path(@site), class: 'btn btn-secondary'
- if policy(@site).edit?
- = link_to t('sites.edit.btn', site: @site.title), edit_site_path(@site), class: 'btn'
+ = link_to t('sites.edit.btn', site: @site.title), edit_site_path(@site), class: 'btn btn-secondary'
- if policy(@site).private?
- = link_to t('sites.private'), '../private/' + @site.name, class: 'btn', target: '_blank', rel: 'noopener'
+ = link_to t('sites.private'), '../private/' + @site.name, class: 'btn btn-secondary', target: '_blank', rel: 'noopener'
- if policy(SiteUsuarie.new(@site, current_usuarie)).index?
= render 'layouts/btn_with_tooltip',
@@ -33,9 +40,9 @@
- if @site.design.credits
= render 'bootstrap/alert' do
= sanitize_markdown @site.design.credits
- = link_to t('sites.donations.text'), t('sites.donations.url'), class: 'btn'
+ = link_to t('sites.donations.text'), t('sites.donations.url'), class: 'btn btn-secondary'
- if @site.design.designer_url
- = link_to t('sites.designer_url'), @site.design.designer_url, class: 'btn'
+ = link_to t('sites.designer_url'), @site.design.designer_url, class: 'btn btn-secondary'
%section.col
.d-flex.justify-content-between.align-items-center.pl-2-plus.pr-2-plus.mb-2
@@ -67,24 +74,27 @@
%h2= t('posts.empty')
- else
= form_tag site_posts_reorder_path, method: :post do
- %input{ type: 'hidden', name: 'post[lang]', value: @locale }
- %table.table{ data: { controller: 'reorder' } }
+ %table.table{ data: reorder_controller }
%caption.sr-only= t('posts.caption')
%thead
%tr.sticky-top
%th.border-0{ colspan: '4' }
.d-flex.flex-row.justify-content-between
%div
- = submit_tag t('posts.reorder.submit'), class: 'btn'
- %button.btn{ data: { action: 'reorder#unselect' } }
- = t('posts.reorder.unselect')
- %span.badge{ data: { target: 'reorder.counter' } } 0
- %button.btn{ data: { action: 'reorder#up' } }= t('posts.reorder.up')
- %button.btn{ data: { action: 'reorder#down' } }= t('posts.reorder.down')
- %button.btn{ data: { action: 'reorder#top' } }= t('posts.reorder.top')
- %button.btn{ data: { action: 'reorder#bottom' } }= t('posts.reorder.bottom')
+ - if reorder_allowed
+ = submit_tag t('posts.reorder.submit'), class: 'btn btn-secondary'
+ %button.btn.btn-secondary{ data: { action: 'reorder#unselect' } }
+ = t('posts.reorder.unselect')
+ %span.badge{ data: { target: 'reorder.counter' } } 0
+ %button.btn.btn-secondary{ data: { action: 'reorder#up' } }= t('posts.reorder.up')
+ %button.btn.btn-secondary{ data: { action: 'reorder#down' } }= t('posts.reorder.down')
+ %button.btn.btn-secondary{ data: { action: 'reorder#top' } }= t('posts.reorder.top')
+ %button.btn.btn-secondary{ data: { action: 'reorder#bottom' } }= t('posts.reorder.bottom')
- %div
+ - if @site.pagination
+ %div
+ = link_to_prev_page @posts, t('posts.prev'), class: 'btn btn-secondary'
+ = link_to_next_page @posts, t('posts.next'), class: 'btn btn-secondary'
%tbody
- dir = @site.data.dig(params[:locale], 'dir')
- size = @posts.size
@@ -94,16 +104,17 @@
les botones por permisos.
- cache_if @usuarie, [post, I18n.locale] do
- checkbox_id = "checkbox-#{post.post_id}"
- %tr{ id: post.post_id, data: { target: 'reorder.row' } }
- %td
- .custom-control.custom-checkbox
- %input.custom-control-input{ id: checkbox_id, type: 'checkbox', autocomplete: 'off', data: { action: 'reorder#select' } }
- %label.custom-control-label{ for: checkbox_id }
- %span.sr-only= t('posts.reorder.select')
- -# Orden más alto es mayor prioridad
- = hidden_field 'post[reorder]', post.post_id,
- value: size - i,
- data: { reorder: true }
+ %tr{ id: post.post_id, data: reorder_target }
+ - if reorder_allowed
+ %td
+ .custom-control.custom-checkbox
+ %input.custom-control-input{ id: checkbox_id, type: 'checkbox', autocomplete: 'off', data: { action: 'reorder#select' } }
+ %label.custom-control-label{ for: checkbox_id }
+ %span.sr-only= t('posts.reorder.select')
+ -# Orden más alto es mayor prioridad
+ = hidden_field 'post[reorder]', post.post_id,
+ value: size - i,
+ data: { reorder: true }
%td.w-100{ class: dir }
= link_to site_post_path(@site, post.path) do
%span{ lang: post.locale, dir: dir }= post.title
@@ -122,10 +133,11 @@
%br/
= post.order
%td.text-nowrap
- - if @usuarie || policy(post).edit?
- = link_to t('posts.edit'), edit_site_post_path(@site, post.path), class: 'btn btn-block'
- - if @usuarie || policy(post).destroy?
- = link_to t('posts.destroy'), site_post_path(@site, post.path), class: 'btn btn-block', method: :delete, data: { confirm: t('posts.confirm_destroy') }
+ .d-flex.flex-row.align-items-start
+ - if @usuarie || policy(post).edit?
+ = link_to t('posts.edit_post'), edit_site_post_path(@site, post.path), class: 'btn btn-secondary'
+ - if @usuarie || policy(post).destroy?
+ = link_to t('posts.destroy'), site_post_path(@site, post.path), class: 'btn btn-secondary', method: :delete, data: { confirm: t('posts.confirm_destroy') }
#footnotes{ hidden: true }
- @filter_params.each do |param, value|
diff --git a/app/views/posts/show.haml b/app/views/posts/show.haml
index 9ef91888..10fe64e3 100644
--- a/app/views/posts/show.haml
+++ b/app/views/posts/show.haml
@@ -2,9 +2,9 @@
.row.justify-content-center
.col-md-8
%article.content.table-responsive-md
- = link_to t('posts.edit'),
+ = link_to t('posts.edit_post'),
edit_site_post_path(@site, @post.id),
- class: 'btn btn-block'
+ class: 'btn btn-secondary btn-block'
%table.table.table-condensed
%thead
@@ -20,7 +20,6 @@
post: @post, attribute: attr,
metadata: metadata,
site: @site,
- tags: all_html_tags,
locale: @locale,
dir: dir)
@@ -30,5 +29,5 @@
- next if metadata.front_matter?
- cache [metadata, I18n.locale] do
- %section.editor{ id: attr, dir: dir }
- = @post.public_send(attr).value.html_safe
+ %section.content.pb-3{ id: attr, dir: dir }
+ = @post.public_send(attr).to_s.html_safe
diff --git a/app/views/schemas/_row.haml b/app/views/schemas/_row.haml
index 1d1fca87..ece07727 100644
--- a/app/views/schemas/_row.haml
+++ b/app/views/schemas/_row.haml
@@ -10,4 +10,6 @@
-# XXX: Solo un nivel de recursividad
- unless local_assigns[:parent_schema]
- schema.schemas.each do |s|
+ - next if s.hidden?
= render 'schemas/row', schema: s, site: site, filter: filter, parent_schema: schema
+
diff --git a/app/views/sites/_build.haml b/app/views/sites/_build.haml
index 5911e908..8db4d370 100644
--- a/app/views/sites/_build.haml
+++ b/app/views/sites/_build.haml
@@ -1,9 +1,10 @@
- if policy(site).build?
- = form_tag site_enqueue_path(site),
- method: :post,
- class: 'form-inline inline' do
- = submit_tag site.enqueued? ? t('sites.enqueued') : t('sites.enqueue'),
- class: "btn no-border-radius #{local_assigns[:class]}",
- title: site.enqueued? ? t('help.sites.enqueued') : t('help.sites.enqueue'),
- data: { disable_with: t('sites.enqueued') },
- disabled: site.enqueued?
+ %div{ 'hx-get': site_button_path(site, class: local_assigns[:class]), 'hx-trigger': 'every 10s', 'hx-swap': 'outerHTML' }
+ = form_tag site_enqueue_path(site),
+ method: :post,
+ class: 'form-inline inline' do
+ = submit_tag site.enqueued? ? t('sites.enqueued') : t('sites.enqueue'),
+ class: "btn btn-secondary #{local_assigns[:class]}",
+ title: site.enqueued? ? t('help.sites.enqueued') : t('help.sites.enqueue'),
+ data: { disable_with: t('sites.enqueued') },
+ disabled: !site.waiting?
diff --git a/app/views/sites/_form.haml b/app/views/sites/_form.haml
index 69997ffa..8d909d79 100644
--- a/app/views/sites/_form.haml
+++ b/app/views/sites/_form.haml
@@ -23,7 +23,7 @@
= f.text_field :name,
class: form_control(site, :name),
required: true,
- pattern: '^([a-z0-9][a-z0-9\-]*)?[a-z0-9\.]$',
+ pattern: '^([a-z0-9][a-z0-9\-]*)?[a-z0-9\.](\.testing)?$',
minlength: 1,
maxlength: 63
- if invalid? site, :name
@@ -46,36 +46,37 @@
.invalid-feedback= site.errors.messages[:description].join(', ')
%hr/
- .form-group#design_id
- %h2= t('.design.title')
- %p.lead= t('.help.design')
- - if invalid? site, :design_id
- = render 'bootstrap/alert' do
- = t('activerecord.errors.models.site.attributes.design_id.layout_incompatible.help',
- layouts: site.incompatible_layouts.to_sentence)
- .row.row-cols-1.row-cols-md-2.designs
- -# Demasiado complejo para un f.collection_radio_buttons
- - Design.all.order(priority: :desc).each do |design|
- .design.col.d-flex.flex-column
- .custom-control.custom-radio
- = f.radio_button :design_id, design.id,
- checked: design.id == site.design_id,
- disabled: design.disabled,
- required: true, class: 'custom-control-input'
- = f.label "design_id_#{design.id}", design.name,
- class: 'custom-control-label'
- .flex-fill
- = sanitize_markdown design.description,
- tags: %w[p a strong em]
+ - unless site.persisted?
+ .form-group#design_id
+ %h2= t('.design.title')
+ %p.lead= t('.help.design')
+ - if invalid? site, :design_id
+ = render 'bootstrap/alert' do
+ = t('activerecord.errors.models.site.attributes.design_id.layout_incompatible.help',
+ layouts: site.incompatible_layouts.to_sentence)
+ .row.row-cols-1.row-cols-md-2.designs
+ -# Demasiado complejo para un f.collection_radio_buttons
+ - Design.all.order(priority: :desc).each do |design|
+ .design.col.d-flex.flex-column
+ .custom-control.custom-radio
+ = f.radio_button :design_id, design.id,
+ checked: design.id == site.design_id,
+ disabled: design.disabled,
+ required: true, class: 'custom-control-input'
+ = f.label "design_id_#{design.id}", design.name,
+ class: 'custom-control-label'
+ .flex-fill
+ = sanitize_markdown design.description,
+ tags: %w[p a strong em]
- .btn-group{ role: 'group', 'aria-label': t('.design.actions') }
- - if design.url
- = link_to t('.design.url'), design.url,
- target: '_blank', class: 'btn'
- - if design.license
- = link_to t('.design.license'), design.license,
- target: '_blank', class: 'btn'
- %hr/
+ .btn-group{ role: 'group', 'aria-label': t('.design.actions') }
+ - if design.url
+ = link_to t('.design.url'), design.url,
+ target: '_blank', class: 'btn btn-secondary'
+ - if design.license
+ = link_to t('.design.license'), design.license,
+ target: '_blank', class: 'btn btn-secondary'
+ %hr/
.form-group.licenses#license_id
%h2= t('.licencia.title')
@@ -98,7 +99,7 @@
tags: %w[p a strong em ul ol li h1 h2 h3 h4 h5 h6]
- unless licencia.custom?
- = link_to t('.licencia.url'), licencia.url, target: '_blank', class: 'btn', rel: 'noopener'
+ = link_to t('.licencia.url'), licencia.url, target: '_blank', class: 'btn btn-secondary', rel: 'noopener'
%hr/
@@ -162,4 +163,4 @@
deploy: deploy, site: site
.form-group
- = f.submit submit, class: 'btn btn-lg btn-block'
+ = f.submit submit, class: 'btn btn-secondary btn-lg btn-block'
diff --git a/app/views/sites/_moderation_queue.haml b/app/views/sites/_moderation_queue.haml
new file mode 100644
index 00000000..6b39d797
--- /dev/null
+++ b/app/views/sites/_moderation_queue.haml
@@ -0,0 +1,9 @@
+- if policy(ModerationQueue.new(site)).index?
+ - moderation_needed = site.moderation_needed?
+
+ - local_assigns[:class] = "btn btn-secondary #{local_assigns[:class]}"
+ = link_to site_moderation_queue_path(site), class: local_assigns[:class], title: (t('.moderation_needed') if moderation_needed) do
+ = t('moderation_queue.index.title')
+ - if moderation_needed
+ %span.primary ⏺
+ %span.sr-only= t('.moderation_needed')
diff --git a/app/views/sites/_status.haml b/app/views/sites/_status.haml
index 6a610e73..a3dfd4ad 100644
--- a/app/views/sites/_status.haml
+++ b/app/views/sites/_status.haml
@@ -1,21 +1,24 @@
-- link = nil
-- if site.not_published_yet?
- - message = t('.not_published_yet')
-- elsif site.awaiting_publication?
- - message = t('.awaiting_publication')
-- elsif site.building?
- - if site.average_publication_time_calculable?
- - average_building_time = site.average_publication_time
- - elsif !site.similar_sites?
- - average_building_time = 60
+- cache site do
+ - link = nil
+ - if site.not_published_yet?
+ - message = t('.not_published_yet')
+ - elsif site.awaiting_publication?
+ - message = t('.awaiting_publication')
+ - elsif site.building?
+ - if site.average_publication_time_calculable?
+ - average_building_time = site.average_publication_time
+ - elsif !site.similar_sites?
+ - average_building_time = 60
+ - else
+ - average_building_time = site.average_publication_time_for_similar_sites
+
+ - average_publication_time_human = distance_of_time_in_words average_building_time
+ - message = t('.building', average_time: average_publication_time_human, seconds: average_building_time)
- else
- - average_building_time = site.average_publication_time_for_similar_sites
+ - message = t('.available')
+ - link = true
- - average_publication_time_human = distance_of_time_in_words average_building_time
- - message = t('.building', average_time: average_publication_time_human, seconds: average_building_time)
-- else
- - message = t('.available')
- - link = true
-
-= render 'bootstrap/alert' do
- = link_to_if link, message.html_safe, site_build_stats_path(site), class: 'alert-link'
+ -# TODO: Calcular cada cuánto sería óptimo recargar
+ %div{ 'hx-get': site_status_path(site), 'hx-trigger': 'every 10s', 'hx-swap': 'outerHTML' }
+ = render 'bootstrap/alert' do
+ = link_to_if link, message.html_safe, site_build_stats_path(site), class: 'alert-link'
diff --git a/app/views/sites/build.haml b/app/views/sites/build.haml
new file mode 100644
index 00000000..c2becec0
--- /dev/null
+++ b/app/views/sites/build.haml
@@ -0,0 +1 @@
+= render 'sites/build', site: @site, class: params.permit(:class)[:class]
diff --git a/app/views/sites/fetch.haml b/app/views/sites/fetch.haml
index f5d049c8..6d670d6f 100644
--- a/app/views/sites/fetch.haml
+++ b/app/views/sites/fetch.haml
@@ -27,4 +27,4 @@
.row.justify-content-center
.col-md-8
= link_to t('.merge.request'), site_pull_path(@site),
- method: 'post', class: 'btn btn-lg'
+ method: 'post', class: 'btn btn-secondary btn-lg'
diff --git a/app/views/sites/index.haml b/app/views/sites/index.haml
index 56178775..1befa2d0 100644
--- a/app/views/sites/index.haml
+++ b/app/views/sites/index.haml
@@ -4,7 +4,7 @@
%p.lead= t('.help')
- if policy(Site).new?
= link_to t('sites.new.title'), new_site_path,
- class: 'btn'
+ class: 'btn btn-secondary'
%section.col
- if @sites.empty?
@@ -15,49 +15,42 @@
%tbody
- @sites.each do |site|
- next unless site.jekyll?
- - rol = current_usuarie.rol_for_site(site)
- -#
- TODO: Solo les usuaries cachean porque tenemos que separar
- les botones por permisos.
- - cache_if (rol.usuarie? && !rol.temporal), [site, I18n.locale] do
- %tr
- %td
- %h2
- - if policy(site).show?
- = link_to site.title, site_posts_path(site, locale: site.default_locale)
- - else
- = site.title
- %p.lead= site.description
- %br
- = link_to t('.visit'), site.url, class: 'btn'
- - if rol.temporal
- = button_to t('sites.invitations.accept'),
- site_usuaries_accept_invitation_path(site),
- method: :patch,
- title: t('help.sites.invitations.accept'),
- class: 'btn'
- = button_to t('sites.invitations.reject'),
- site_usuaries_reject_invitation_path(site),
- method: :patch,
- title: t('help.sites.invitations.reject'),
- class: 'btn'
+
+ %tr
+ %td
+ %h2
+ - if policy(site).show?
+ = link_to site.title,
+ site_posts_path(site,
+ locale: site.default_locale)
+ - else
+ = site.title
+ %p.lead= site.description
+ .d-flex.flex-row
+ = link_to t('.visit'), site.url, class: 'btn btn-secondary'
+ - if current_usuarie.rol_for_site(site).temporal?
+ = render 'components/btn_base',
+ text: t('sites.invitations.accept'),
+ path: site_usuaries_accept_invitation_path(site),
+ title: t('help.sites.invitations.accept'),
+ class: 'btn-secondary'
+ = render 'components/btn_base',
+ text: t('sites.invitations.reject'),
+ path: site_usuaries_reject_invitation_path(site),
+ title: t('help.sites.invitations.reject'),
+ class: 'btn-secondary'
- else
- if policy(site).show?
= render 'layouts/btn_with_tooltip',
- tooltip: t('help.sites.edit_posts'),
- type: 'success',
- link: site_path(site),
- text: t('sites.posts')
+ tooltip: t('help.sites.edit_posts'),
+ type: 'success',
+ link: site_path(site),
+ text: t('sites.posts')
+ = render 'sites/build', site: site
+ = render 'sites/moderation_queue', site: site
- if policy(SiteUsuarie.new(site, current_usuarie)).index?
= render 'layouts/btn_with_tooltip',
- tooltip: t('usuaries.index.help.self'),
- text: t('usuaries.index.title'),
- type: 'info',
- link: site_usuaries_path(site)
- - if policy(site).pull? && site.repository.needs_pull?
- = render 'layouts/btn_with_tooltip',
- tooltip: t('help.sites.pull'),
- text: t('.pull'),
- type: 'info',
- link: site_pull_path(site)
- = render 'sites/build', site: site
+ tooltip: t('usuaries.index.help.self'),
+ text: t('usuaries.index.title'),
+ type: 'info',
+ link: site_usuaries_path(site)
diff --git a/app/views/sites/status.haml b/app/views/sites/status.haml
new file mode 100644
index 00000000..3d9793a5
--- /dev/null
+++ b/app/views/sites/status.haml
@@ -0,0 +1 @@
+= render 'sites/status', site: @site
diff --git a/app/views/stats/index.haml b/app/views/stats/index.haml
index 88e86aa3..1c1a31f1 100644
--- a/app/views/stats/index.haml
+++ b/app/views/stats/index.haml
@@ -11,11 +11,11 @@
%form.mb-5.form-inline{ method: 'get' }
- Stat::INTERVALS.each do |interval|
- = link_to t(".#{interval}"), site_stats_path(interval: interval, urls: params[:urls], period_start: params[:period_start].to_date.try(:"beginning_of_#{interval}").to_date, period_end: params[:period_end]), class: "mb-0 btn #{'btn-primary active' if @interval == interval}"
+ = link_to t(".#{interval}"), site_stats_path(interval: interval, urls: params[:urls], period_start: params[:period_start].to_date.try(:"beginning_of_#{interval}").to_date, period_end: params[:period_end]), class: "mb-0 btn #{@interval == interval ? 'btn-primary active' : 'btn-secondary' }"
%input.form-control{ type: 'date', name: :period_start, value: params[:period_start] }
%input.form-control{ type: 'date', name: :period_end, value: params[:period_end] }
- %button.btn.mb-0{ type: 'submit' }= t('.filter')
+ %button.btn.btn-secondary.mb-0{ type: 'submit' }= t('.filter')
.mb-5
%h2= t('.host.title', count: @hostnames.size)
@@ -34,7 +34,7 @@
%textarea#urls.form-control{ name: 'urls', autocomplete: 'on', required: true, rows: @normalized_urls.size + 1, aria_describedby: 'help-urls' }= @normalized_urls.join("\n")
%small#help-urls.feedback.form-text.text-muted= t('.urls.help')
.form-group
- %button.btn{ type: 'submit' }= t('.urls.submit')
+ %button.btn.btn-secondary{ type: 'submit' }= t('.urls.submit')
- if @normalized_urls.present?
= line_chart site_stats_uris_path(urls: @normalized_urls, **@chart_params), **@chart_options
diff --git a/app/views/usuaries/index.haml b/app/views/usuaries/index.haml
index 124fb04b..f972a91f 100644
--- a/app/views/usuaries/index.haml
+++ b/app/views/usuaries/index.haml
@@ -9,13 +9,13 @@
- if @policy.invite?
= link_to t('.invite'),
site_usuaries_invite_path(@site, invite_as: u.to_s),
- class: 'btn',
+ class: 'btn btn-secondary',
data: { toggle: 'tooltip' },
title: t('.help.invite', invite_as: u.to_s)
- if policy(Collaboration.new(@site)).collaborate?
= link_to t('.public_invite'),
site_collaborate_path(@site),
- class: 'btn',
+ class: 'btn btn-secondary',
data: { toggle: 'tooltip' },
title: t('.help.public_invite')
%p.lead= t(".help.#{u}")
@@ -38,7 +38,7 @@
- if @policy.demote? && @site.usuarie?(cuenta)
= link_to t('.demote.text'),
site_usuarie_demote_path(@site, cuenta),
- class: 'btn',
+ class: 'btn btn-secondary',
data: { toggle: 'tooltip',
confirm: t('.demote.confirm') },
title: t('.help.demote'),
@@ -46,7 +46,7 @@
- if @policy.promote? && @site.invitade?(cuenta)
= link_to t('.promote.text'),
site_usuarie_promote_path(@site, cuenta),
- class: 'btn',
+ class: 'btn btn-secondary',
data: { toggle: 'tooltip',
confirm: t('.promote.confirm') },
title: t('.help.promote'),
@@ -54,7 +54,7 @@
- if @policy.destroy?
= link_to t('.destroy.text'),
site_usuarie_path(@site, cuenta),
- class: 'btn',
+ class: 'btn btn-secondary',
data: { toggle: 'tooltip',
confirm: t('.destroy.confirm') },
title: t('.help.destroy'),
diff --git a/app/views/usuaries/invite.haml b/app/views/usuaries/invite.haml
index 26eb5039..2698fb8f 100644
--- a/app/views/usuaries/invite.haml
+++ b/app/views/usuaries/invite.haml
@@ -13,4 +13,4 @@
invite_as: invite_as)
= f.text_area :invitaciones, class: 'form-control'
.form-group
- = f.submit t('.submit'), class: 'btn'
+ = f.submit t('.submit'), class: 'btn btn-secondary'
diff --git a/bin/modified_files b/bin/modified_files
new file mode 100755
index 00000000..4d06b4c5
--- /dev/null
+++ b/bin/modified_files
@@ -0,0 +1,8 @@
+#!/bin/sh
+set -e
+
+CI_MERGE_REQUEST_DIFF_BASE_SHA="${CI_MERGE_REQUEST_DIFF_BASE_SHA:-origin/rails}"
+
+git diff --name-status ${CI_MERGE_REQUEST_DIFF_BASE_SHA} \
+ | grep -v "^D" \
+ | cut -f 2
diff --git a/bin/with_extension b/bin/with_extension
new file mode 100755
index 00000000..129122dc
--- /dev/null
+++ b/bin/with_extension
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+grep "\.${1}$"
+exit 0
diff --git a/config/application.rb b/config/application.rb
index 057a22d3..ed7e5a78 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -2,6 +2,10 @@
require_relative 'boot'
+require 'aasm'
+require 'redis-client'
+require 'hiredis-client'
+require 'brs'
require 'rails'
# Pick the frameworks you want:
require 'active_model/railtie'
@@ -21,7 +25,23 @@ require 'rails/test_unit/railtie'
# you've limited to :test, :development, or :production.
Bundler.require(*Rails.groups)
+if %w[development test].include? ENV['RAILS_ENV']
+ # https://github.com/bkeepers/dotenv/pull/453
+ Dotenv::Railtie.class_eval do
+ def overload
+ Dotenv.overload(*dotenv_files.reverse)
+ end
+ end
+
+ Dotenv::Railtie.overload
+end
+
module Sutty
+ ALLOWED_ATTRIBUTES = %w[style href src alt controls data-align data-multimedia data-multimedia-inner id name rel
+ target referrerpolicy class colspan rowspan role data-turbo start type reversed].freeze
+ ALLOWED_TAGS = %w[strong em del u mark p h1 h2 h3 h4 h5 h6 ul ol li img iframe audio video div figure blockquote
+ figcaption a sub sup small table thead tbody tfoot tr th td br code].freeze
+
# Sutty!
class Application < Rails::Application
# Initialize configuration defaults for originally generated Rails
@@ -45,6 +65,8 @@ module Sutty
config.active_storage.queues.purge = :default
config.active_job.queue_adapter = :que
+ config.active_record.schema_format = :sql
+
config.to_prepare do
# Load application's model / class decorators
Dir.glob(File.join(File.dirname(__FILE__), '..', 'app', '**', '*_decorator.rb')).sort.each do |c|
diff --git a/config/brakeman.ignore b/config/brakeman.ignore
new file mode 100644
index 00000000..2f987772
--- /dev/null
+++ b/config/brakeman.ignore
@@ -0,0 +1,252 @@
+{
+ "ignored_warnings": [
+ {
+ "warning_type": "Redirect",
+ "warning_code": 18,
+ "fingerprint": "0ae5c3990d49dfbfd4fd61874451f7a576d5056aca913068adf58c314625f810",
+ "check_name": "Redirect",
+ "message": "Possible unprotected redirect",
+ "file": "app/controllers/api/v1/posts_controller.rb",
+ "line": 20,
+ "link": "https://brakemanscanner.org/docs/warning_types/redirect/",
+ "code": "redirect_to((params[:redirect_to] or origin.to_s))",
+ "render_path": null,
+ "location": {
+ "type": "method",
+ "class": "Api::V1::PostsController",
+ "method": "create"
+ },
+ "user_input": "params[:redirect_to]",
+ "confidence": "High",
+ "cwe_id": [
+ 601
+ ],
+ "note": "https://0xacab.org/sutty/sutty/-/issues/14957"
+ },
+ {
+ "warning_type": "Denial of Service",
+ "warning_code": 76,
+ "fingerprint": "1947d1a2ae6e4bf718d0cc563e660efca96897165e9a8dd18186c1d7abe6ddf6",
+ "check_name": "RegexDoS",
+ "message": "Model attribute used in regular expression",
+ "file": "app/controllers/api/v1/base_controller.rb",
+ "line": 20,
+ "link": "https://brakemanscanner.org/docs/warning_types/denial_of_service/",
+ "code": "/\\.#{Site.domain}\\z/",
+ "render_path": null,
+ "location": {
+ "type": "method",
+ "class": "Api::V1::BaseController",
+ "method": "site_id"
+ },
+ "user_input": "Site.domain",
+ "confidence": "Medium",
+ "cwe_id": [
+ 20,
+ 185
+ ],
+ "note": "No es un atributo, es una variable de entorno"
+ },
+ {
+ "warning_type": "Cross-Site Scripting",
+ "warning_code": 4,
+ "fingerprint": "28d98d08a15c4b3ad94a2cfa20a12573de12d99f1a30b3ca51074ee1f1886592",
+ "check_name": "LinkToHref",
+ "message": "Potentially unsafe model attribute in `link_to` href",
+ "file": "app/views/layouts/_breadcrumb.haml",
+ "line": 19,
+ "link": "https://brakemanscanner.org/docs/warning_types/link_to_href",
+ "code": "link_to(t(\".tienda\"), Site.find(params[:site_id]).tienda_url, :role => \"button\", :class => \"btn\")",
+ "render_path": [
+ {
+ "type": "controller",
+ "class": "Api::V1::NoticesController",
+ "method": "site",
+ "line": 31,
+ "file": "app/controllers/api/v1/notices_controller.rb",
+ "rendered": {
+ "name": "layouts/application",
+ "file": "app/views/layouts/application.html.haml"
+ }
+ },
+ {
+ "type": "template",
+ "name": "layouts/application",
+ "line": 25,
+ "file": "app/views/layouts/application.html.haml",
+ "rendered": {
+ "name": "layouts/_breadcrumb",
+ "file": "app/views/layouts/_breadcrumb.haml"
+ }
+ }
+ ],
+ "location": {
+ "type": "template",
+ "template": "layouts/_breadcrumb"
+ },
+ "user_input": "Site.find(params[:site_id]).tienda_url",
+ "confidence": "Weak",
+ "cwe_id": [
+ 79
+ ],
+ "note": ""
+ },
+ {
+ "warning_type": "Redirect",
+ "warning_code": 18,
+ "fingerprint": "5034e51aaa1bac06d15fdde5956edffbfd65f94f5620a409526bbea896dc7b5f",
+ "check_name": "Redirect",
+ "message": "Possible unprotected redirect",
+ "file": "app/controllers/api/v1/contact_controller.rb",
+ "line": 26,
+ "link": "https://brakemanscanner.org/docs/warning_types/redirect/",
+ "code": "redirect_to((params[:redirect] or origin.to_s))",
+ "render_path": null,
+ "location": {
+ "type": "method",
+ "class": "Api::V1::ContactController",
+ "method": "receive"
+ },
+ "user_input": "params[:redirect]",
+ "confidence": "High",
+ "cwe_id": [
+ 601
+ ],
+ "note": "https://0xacab.org/sutty/sutty/-/issues/14957"
+ },
+ {
+ "warning_type": "Mass Assignment",
+ "warning_code": 70,
+ "fingerprint": "50582f39f8dfa900d3f2b5b9908b1592f8b8bd9e2d0b9d1cc05d77e5ede2d94e",
+ "check_name": "MassAssignment",
+ "message": "Specify exact keys allowed for mass assignment instead of using `permit!` which allows any keys",
+ "file": "app/views/layouts/_link_rel_alternate.haml",
+ "line": 2,
+ "link": "https://brakemanscanner.org/docs/warning_types/mass_assignment/",
+ "code": "params.permit!",
+ "render_path": [
+ {
+ "type": "controller",
+ "class": "Api::V1::BaseController",
+ "method": "site_id",
+ "line": 20,
+ "file": "app/controllers/api/v1/base_controller.rb",
+ "rendered": {
+ "name": "layouts/application",
+ "file": "app/views/layouts/application.html.haml"
+ }
+ },
+ {
+ "type": "template",
+ "name": "layouts/application",
+ "line": 21,
+ "file": "app/views/layouts/application.html.haml",
+ "rendered": {
+ "name": "layouts/_link_rel_alternate",
+ "file": "app/views/layouts/_link_rel_alternate.haml"
+ }
+ }
+ ],
+ "location": {
+ "type": "template",
+ "template": "layouts/_link_rel_alternate"
+ },
+ "user_input": null,
+ "confidence": "Medium",
+ "cwe_id": [
+ 915
+ ],
+ "note": "https://0xacab.org/sutty/sutty/-/issues/14958"
+ },
+ {
+ "warning_type": "Mass Assignment",
+ "warning_code": 70,
+ "fingerprint": "b8e0aa898288bebb614ccc1340d169caa196d315c6ac2e4744081cc892c2ae97",
+ "check_name": "MassAssignment",
+ "message": "Specify exact keys allowed for mass assignment instead of using `permit!` which allows any keys",
+ "file": "app/views/layouts/_breadcrumb.haml",
+ "line": 30,
+ "link": "https://brakemanscanner.org/docs/warning_types/mass_assignment/",
+ "code": "params.permit!",
+ "render_path": [
+ {
+ "type": "controller",
+ "class": "Api::V1::BaseController",
+ "method": "site_id",
+ "line": 20,
+ "file": "app/controllers/api/v1/base_controller.rb",
+ "rendered": {
+ "name": "layouts/application",
+ "file": "app/views/layouts/application.html.haml"
+ }
+ },
+ {
+ "type": "template",
+ "name": "layouts/application",
+ "line": 25,
+ "file": "app/views/layouts/application.html.haml",
+ "rendered": {
+ "name": "layouts/_breadcrumb",
+ "file": "app/views/layouts/_breadcrumb.haml"
+ }
+ }
+ ],
+ "location": {
+ "type": "template",
+ "template": "layouts/_breadcrumb"
+ },
+ "user_input": null,
+ "confidence": "Medium",
+ "cwe_id": [
+ 915
+ ],
+ "note": "https://0xacab.org/sutty/sutty/-/issues/14958"
+ },
+ {
+ "warning_type": "Cross-Site Scripting",
+ "warning_code": 4,
+ "fingerprint": "c051421c7cf4c2706b8e27bfd2f3b0661ec6a6df873da322a6b634b59e80351b",
+ "check_name": "LinkToHref",
+ "message": "Potentially unsafe model attribute in `link_to` href",
+ "file": "app/views/sites/_form.haml",
+ "line": 74,
+ "link": "https://brakemanscanner.org/docs/warning_types/link_to_href",
+ "code": "link_to(t(\".design.url\"), (Unresolved Model).new.url, :target => \"_blank\", :class => \"btn\")",
+ "render_path": [
+ {
+ "type": "controller",
+ "class": "SitesController",
+ "method": "new",
+ "line": 31,
+ "file": "app/controllers/sites_controller.rb",
+ "rendered": {
+ "name": "sites/new",
+ "file": "app/views/sites/new.haml"
+ }
+ },
+ {
+ "type": "template",
+ "name": "sites/new",
+ "line": 6,
+ "file": "app/views/sites/new.haml",
+ "rendered": {
+ "name": "sites/_form",
+ "file": "app/views/sites/_form.haml"
+ }
+ }
+ ],
+ "location": {
+ "type": "template",
+ "template": "sites/_form"
+ },
+ "user_input": "(Unresolved Model).new.url",
+ "confidence": "Weak",
+ "cwe_id": [
+ 79
+ ],
+ "note": ""
+ }
+ ],
+ "updated": "2024-01-11 18:12:14 -0300",
+ "brakeman_version": "5.4.1"
+}
diff --git a/config/environments/production.rb b/config/environments/production.rb
index 4cc1cb39..5b0667a5 100644
--- a/config/environments/production.rb
+++ b/config/environments/production.rb
@@ -62,7 +62,7 @@ Rails.application.configure do
config.log_tags = %i[request_id]
# Use a different cache store in production.
- config.cache_store = :redis_cache_store, { url: ENV['REDIS_SERVER'] }
+ config.cache_store = :redis_cache_store, { url: ENV.fetch('REDIS_SERVER', nil) }
config.action_mailer.perform_caching = false
@@ -87,7 +87,7 @@ Rails.application.configure do
config.lograge.enabled = true
# Use default logging formatter so that PID and timestamp are not
# suppressed.
- config.log_formatter = ::Logger::Formatter.new
+ config.log_formatter = Logger::Formatter.new
# Use a different logger for distributed setups.
require 'syslog/logger'
@@ -140,9 +140,10 @@ Rails.application.configure do
domain: ENV.fetch('SUTTY', 'sutty.nl'),
enable_starttls_auto: false
}
- config.action_mailer.default_options = { from: ENV.fetch('DEFAULT_FROM', "noreply@sutty.nl") }
+ config.action_mailer.default_options = { from: ENV.fetch('DEFAULT_FROM', 'noreply@sutty.nl') }
- config.middleware.use ExceptionNotification::Rack, gitlab: {}, ignore_exceptions: (['DeployJob::DeployAlreadyRunningException'] + ExceptionNotifier.ignored_exceptions)
+ config.middleware.use ExceptionNotification::Rack, gitlab: {}, error_grouping: true,
+ ignore_exceptions: ['DeployJob::DeployAlreadyRunningException']
Rails.application.routes.default_url_options[:host] = "panel.#{ENV.fetch('SUTTY', 'sutty.nl')}"
Rails.application.routes.default_url_options[:protocol] = 'https'
diff --git a/config/initializers/content_security_policy.rb b/config/initializers/content_security_policy.rb
index 91d287e0..c07c7751 100644
--- a/config/initializers/content_security_policy.rb
+++ b/config/initializers/content_security_policy.rb
@@ -7,7 +7,7 @@
# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy
Rails.application.config.content_security_policy do |policy|
- policy.default_src :self
+ policy.default_src :self, :blob
# XXX: Varios scripts generan estilos en línea
policy.style_src :self, :unsafe_inline, :https
# Repetimos la default para poder saber cuál es la política en falta
diff --git a/config/initializers/core_extensions.rb b/config/initializers/core_extensions.rb
index 1516a43a..7d1eab9e 100644
--- a/config/initializers/core_extensions.rb
+++ b/config/initializers/core_extensions.rb
@@ -2,6 +2,7 @@
String.include CoreExtensions::String::StripTags
Jekyll::Document.include CoreExtensions::Jekyll::Document::Path
+Jekyll::DataReader.include Jekyll::Readers::DataReaderDecorator
# Definir tags de Liquid que provienen de complementos para que siempre
# devuelvan contenido vacío.
@@ -37,6 +38,19 @@ end
#
# TODO: Aplicar monkey patches en otro lado...
module Jekyll
+ Configuration.class_eval do
+ # No agregar colecciones por defecto, solo las que digamos en base a
+ # los idiomas. Esto remueve la colección "posts".
+ #
+ # Las colecciones de idiomas son agregadas por Site.
+ #
+ # @see Site#configuration
+ # @return [Jekyll::Configuration]
+ def add_default_collections
+ self
+ end
+ end
+
Site.class_eval do
def configure_theme
self.theme = nil
@@ -57,9 +71,27 @@ module Jekyll
# No necesitamos los archivos estáticos
def retrieve_static_files(_, _); end
- # Solo lee los datos
+ # Solo lee los datos, desde la plantilla y luego desde el sitio,
+ # usando rutas absolutas, para evitar el uso confuso de Dir.chdir.
+ #
+ # Reemplaza jekyll-data también!
+ #
+ # @return [Hash]
def read_data
- @site.data = DataReader.new(site).read(site.config['data_dir'])
+ @site.data =
+ begin
+ reader = DataReader.new(site)
+ theme_dir = site.in_theme_dir('_data')
+ data_dir = site.in_source_dir(site.config['data_dir'])
+
+ if theme_dir
+ reader.read_data_to(theme_dir, reader.content)
+ reader.read_data_to(data_dir, reader.content)
+ reader.content
+ else
+ reader.read data_dir
+ end
+ end
end
# Lee los layouts
@@ -91,6 +123,15 @@ module Jekyll
spec.name == name
end
+ unless spec
+ I18n.with_locale(locale) do
+ raise Jekyll::Errors::InvalidThemeName, I18n.t('activerecord.errors.models.site.attributes.design_id.missing_gem', theme: name)
+ rescue Jekyll::Errors::InvalidThemeName => e
+ ExceptionNotifier.notify_exception(e, data: { theme: name, site: File.basename(site.source) })
+ raise
+ end
+ end
+
ruby_version = Gem::Version.new(RUBY_VERSION)
ruby_version.canonical_segments[2] = 0
base_path = Rails.root.join('_storage', 'gems', File.basename(site.source), 'ruby',
@@ -114,6 +155,11 @@ module Jekyll
private
def gemspec; end
+
+ # @return [Symbol]
+ def locale
+ @locale ||= (site.config['locale'] || site.config['lang'] || I18n.locale).to_sym
+ end
end
# No necesitamos los archivos de la plantilla
@@ -161,14 +207,3 @@ module PgSearch
end
end
end
-
-# JekyllData::Reader del plugin jekyll-data modifica Jekyll::Site#reader
-# para también leer los datos que vienen en el theme.
-module JekyllData
- Reader.class_eval do
- def read_data
- super
- read_theme_data
- end
- end
-end
diff --git a/config/initializers/device_detector.rb b/config/initializers/device_detector.rb
new file mode 100644
index 00000000..e6f6118a
--- /dev/null
+++ b/config/initializers/device_detector.rb
@@ -0,0 +1,3 @@
+DeviceDetector.configure do |config|
+ config.max_cache_keys = 5_000 # to check if not too much
+end
\ No newline at end of file
diff --git a/config/initializers/filter_parameter_logging.rb b/config/initializers/filter_parameter_logging.rb
index 2fc446ff..b1d9f2b0 100644
--- a/config/initializers/filter_parameter_logging.rb
+++ b/config/initializers/filter_parameter_logging.rb
@@ -5,4 +5,5 @@
# Configure sensitive parameters which will be filtered from the log file.
Rails.application.config.filter_parameters += %i[
password passw secret token _key crypt salt certificate otp ssn key
+ _pem _ciphertext email
]
diff --git a/config/initializers/hosts.rb b/config/initializers/hosts.rb
index 58ee2e39..49d0b333 100644
--- a/config/initializers/hosts.rb
+++ b/config/initializers/hosts.rb
@@ -1,11 +1,11 @@
# frozen_string_literal: true
Rails.application.configure do
- next unless ENV['RAILS_ENV'] == 'development'
+ next if Rails.env.test?
domain = ENV.fetch('SUTTY', 'sutty.nl')
- config.hosts << domain
config.hosts << "panel.#{domain}"
config.hosts << "api.#{domain}"
+ config.hosts << /\Aapi\./
end
diff --git a/config/initializers/que_web.rb b/config/initializers/que_web.rb
new file mode 100644
index 00000000..a6b87cf8
--- /dev/null
+++ b/config/initializers/que_web.rb
@@ -0,0 +1,5 @@
+# frozen_string_literal: true
+
+Que::Web.use(Rack::Auth::Basic) do |user, password|
+ [user, password] == [ENV.fetch('HTTP_BASIC_USER', nil), ENV.fetch('HTTP_BASIC_PASSWORD', nil)]
+end
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 5f97a8b9..5e9a2377 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -1,4 +1,195 @@
en:
+ date:
+ format: '%m/%d/%Y'
+ published_at: "Published at"
+ last_modified_at: "Last modification"
+ abbr_day_names:
+ - Mon
+ - Tue
+ - Wed
+ - Thu
+ - Fri
+ - Sat
+ - Sun
+ day_names:
+ - Monday
+ - Tuesday
+ - Wednesday
+ - Thursday
+ - Friday
+ - Saturday
+ - Sunday
+ abbr_month_names:
+ - Jan
+ - Feb
+ - Mar
+ - Apr
+ - May
+ - Jun
+ - Jul
+ - Aug
+ - Sep
+ - Oct
+ - Nov
+ - Dec
+ month_names:
+ - January
+ - February
+ - March
+ - April
+ - May
+ - June
+ - July
+ - August
+ - September
+ - October
+ - November
+ - December
+ time:
+ am: am
+ pm: pm
+ format: '%-I:%M %p'
+ components:
+ actor:
+ user: Username
+ profile: Profile
+ profile_name: Profile name
+ preferred_name: Name in Fediverse
+ profile_id: ID
+ profile_published: Published
+ profile_summary: Summary
+ block_list:
+ know_more: Know more
+ instances_blocked: Instances blocked
+ instances_filters:
+ text_show: Show
+ text_checked: With selected...
+ instances_checked_submenu:
+ submenu_pause: Moderate
+ submenu_allow: Allow
+ submenu_block: Block
+ instances_show_submenu:
+ submenu_paused: "Moderated (%{count})"
+ submenu_allowed: "Allowed (%{count})"
+ submenu_blocked: "Blocked (%{count})"
+ comments_filters:
+ text_show: Show
+ text_checked: With selected...
+ comments_checked_submenu:
+ submenu_pause: Pause
+ submenu_approve: Approve
+ submenu_reject: Reject
+ submenu_report: Report
+ comments_show_submenu:
+ submenu_paused: "Paused (%{count})"
+ submenu_approved: "Approved (%{count})"
+ submenu_rejected: "Rejected (%{count})"
+ submenu_reported: "Reported (%{count})"
+ profiles_filters:
+ text_show: Show
+ text_checked: With selected...
+ profiles_checked_submenu:
+ submenu_pause: Pause
+ submenu_allow: Allow
+ submenu_block: Block
+ submenu_report: Report
+ profiles_show_submenu:
+ submenu_paused: "Paused (%{count})"
+ submenu_allowed: "Allowed (%{count})"
+ submenu_blocked: "Blocked (%{count})"
+ submenu_reported: "Reported (%{count})"
+ block_lists:
+ title: Block lists
+ comments_btn_box:
+ text_pause: Pause
+ text_approve: Approve
+ text_reject: Reject
+ text_reply: Reply
+ text_report: Report
+ confirm_report: "Send report to the remote instance? This action will also reject the comment."
+ confirm_reject: "Reject this comment? Please notice we can't undo this action at this moment."
+ instances_btn_box:
+ text_pause: Check case by case
+ text_allow: Allow everything
+ text_block: Block instance
+ profiles_btn_box:
+ text_pause: Always check
+ text_allow: Always approve
+ text_block: Block
+ text_report: Report
+ confirm_report: "Send report to the remote instance? This action will also block the account."
+ remote_flags:
+ report_message: "Hi! Someone using Sutty CMS reported this account on your instance. We don't have support for customized report messages yet, but we will soon. You can reach us at %{panel_actor_mention}."
+ activity_pubs:
+ action_on_several:
+ success: "Several comments have changed moderation state. You can find them using the filters on the Comments section."
+ error: "There was an error while changing moderation state. We received a report and will be acting on it soon."
+ approve:
+ success: "Comment approved."
+ error: "There was an error while approving the comment. We received a report and will be acting on it soon."
+ reject:
+ success: "Comment rejected. You can report it using the Report button."
+ error: "There was an error while rejecting the comment. We received a report and will be acting on it soon."
+ report:
+ success: "Comment reported."
+ error: "There was an error while reporting the comment. We received a report and will be acting on it soon."
+ actor_moderations:
+ action_on_several:
+ success: "Several accounts have changed moderation state. You can find them using the filters on the Accounts section. No action was performed over existing Comments."
+ error: "There was an error while changing moderation state. We received a report and will be acting on it soon."
+ pause:
+ success: "Account paused. No action was performed on existing Comments."
+ error: "There was an error while pausing the account. We received a report and will be acting on it soon."
+ allow:
+ success: "Account allowed. All of their comments from now on will be approved automatically. No action was performed over existing Comments."
+ error: "There was an error while allowing the account. We received a report and will be acting on it soon."
+ block:
+ success: "Account blocked. All of their comments from now on will be rejected automatically. No action was performed over existing Comments. If you want to report it to their instance, please use the Report button."
+ error: "There was an error while blocking the account. We received a report and will be acting on it soon."
+ report:
+ success: "Account reported."
+ error: "There was an error while reporting the account. We received a report and will be acting on it soon."
+ instance_moderations:
+ action_on_several:
+ success: "Several instances have changed moderation state. You can find them using the filters on the Instances section. No action was performed over existing Accounts and Comments."
+ error: "There was an error while changing moderation state. We received a report and will be acting on it soon."
+ pause:
+ success: "Instance paused. All of their comments and accounts from now on will need to be moderated individually. No action was performed over existing Accounts and Comments."
+ error: "There was an error while pausing the instance. We received a report and will be acting on it soon."
+ allow:
+ success: "Instance allowed. All of their comments and accounts from now on will be approved automatically. No action was performed over existing Accounts and Comments."
+ error: "There was an error while allowing the instance. We received a report and will be acting on it soon."
+ block:
+ success: "Instance blocked. All of their comments and accounts from now on will be rejected automatically. No action was performed over existing Accounts and Comments."
+ error: "There was an error while blocking the instance. We received a report and will be acting on it soon."
+ fediblock_states:
+ action_on_several:
+ success: "Blocklists have been enabled, you can find their instances by filtering by Blocked. You can approve them individually on the Accounts section. No action was performed over existing Accounts and Comments."
+ error: "There was an error while enabling or disabling blocklists. We received a report and will be acting on it soon."
+ custom_blocklist_success: "Custom blocklist has been added, you can find the instances by filtering by Blocked. No action was performed over existing Accounts and Comments."
+ custom_blocklist_error: "There was an error while adding a custom blocklist. We received a report and will be acting on it soon."
+ moderation_queue:
+ everything: 'Select all'
+ nothing: "There's nothing for this filter"
+ index:
+ title: Moderation
+ instances: Instances
+ accounts: Accounts
+ comments: Comments
+ comment:
+ source_profile: Source Profile
+ reply_to: Reply to
+ instances:
+ title: My block lists
+ description: "Blocklists contain instances known for hosting hate speech, promote fascism, violence, sexual/gendered abuse and/or misinformation."
+ custom_block: Custom block lists
+ custom_block_placeholder: |
+ a.doma.in
+ per.li.ne
+ submit: Save block lists
+ instance:
+ users: "Users:"
+ dark: Dark
dir: ltr
en: English
es: Castellano
@@ -123,6 +314,10 @@ en:
title: Distributed Web
success: Success!
error: Error
+ deploy_social_distributed_press:
+ title: Fediverse
+ success: Success!
+ error: Error
deploy_reindex:
title: Reindex
success: Success!
@@ -167,6 +362,7 @@ en:
usuarie: User
licencia: License
design: Design
+ indexed_post: Indexed post
attributes:
usuarie:
email: 'E-mail address'
@@ -191,10 +387,16 @@ en:
deploys:
deploy_local_presence: 'We need to be build the site!'
design_id:
+ missing_gem: "Site is configured to use %{theme} theme, but the corresponding gem is missing from Gemfile"
layout_incompatible:
error: "Design can't be changed because there are posts with incompatible layouts"
help: "Your site has posts with layouts only compatible with the current design. If you change it, the site won't work as you expect. If you're trying out designs, you can delete posts in the following incompatible layouts:: %{layouts}."
+ usuarie:
+ attributes:
+ lang:
+ not_available: "This language is not yet available, would you help us by translating Sutty into it?"
errors:
+ site_not_found: "Site not found, or maybe you don't have access to it."
argument_error: 'Argument `%{argument}` must be an instance of %{class}'
unknown_locale: 'Unknown %{locale} locale'
posts:
@@ -307,6 +509,18 @@ en:
indefinitely.
[Learn more](https://sutty.nl/learn-more-about-publish-to-dweb-functionality/)
+ deploy_social_distributed_press:
+ title: 'Publish on the Fediverse'
+ help: |
+ By using the ActivityPub protocol, people on the Fediverse
+ ([Mastodon](https://joinmastodon.org/servers),
+ [Pixelfed](https://pixelfed.social/site/about), and
+ [others](https://fediverse.party/)) can follow your site,
+ receive news and interact with them.
+
+ There is also the possibility that Sutty advertises your content and/or Fediverse
+ user automatically to attract followers. You can do it with this
+ [form](https://cryptpad.fr/form/#/2/form/view/yp1KZwQjgU2RG-zhdQCyw4M8QhftNCVu8e+IJG2iN7Y/)
stats:
index:
title: Statistics
@@ -359,6 +573,8 @@ en:
column: "Country"
empty: "(couldn't detect country)"
sites:
+ moderation_queue:
+ moderation_needed: "There are new activities pending revision since the last time you moderated."
donations:
url: 'https://donaciones.sutty.nl/en/'
text: 'Support us'
@@ -366,7 +582,7 @@ en:
static_file_migration: 'File migration'
find_and_replace: 'Search and replace'
status:
- building: "Your site is building, refresh this page in ."
+ building: "Your site is building, it will be ready in ."
not_published_yet: "Your site is being published for the first time, please wait up to 1 minute..."
available: "Your site is available! Click here to find all the different ways to visit it."
awaiting_publication: "There are unpublished changes. Click the button below and wait a moment to find them on your site."
@@ -407,6 +623,8 @@ en:
title: 'Edit %{site}'
submit: 'Save changes'
btn: 'Configuration'
+ update:
+ post: "Your changes have been saved. **If you enabled a publication method, don't forget to publish changes.**"
form:
errors:
title: There were errors and we couldn't save your changes :(
@@ -415,7 +633,7 @@ en:
name: "This will be the host name for your site, ie. **example**.sutty.nl. Choose an expression up to 63 characters. It can contain only lowercase letters, numbers and dashes, **and no spaces**. It can't start or end with a dash, or be entirely composed of numbers."
title: 'The title can be anything you want'
description: 'You site description that appears in search engines. Between 50 and 160 characters.'
- design: 'Select the design for your site. You can change it later. We add more designs from time to time!'
+ design: 'Select the design for your site. We add more designs from time to time!'
licencia: 'Everything we publish has automatic copyright. This
means nobody can use our works without explicit permission. By
using licenses, we stablish conditions by which we want to share
@@ -466,6 +684,9 @@ en:
success: 'Site upgrade has been completed. Your next build will run this upgrade :)'
error: "There was an error when trying to upgrade your site. This could be due to conflicts that couldn't be solved automatically. A report of the issue has already been sent to our admins. Sorry for the inconvenience! :("
message: 'Skeleton upgrade'
+ webhooks:
+ pull:
+ message: 'Webhooks pull'
footer:
powered_by: 'is developed by'
i18n:
@@ -512,6 +733,8 @@ en:
feedback: 'This field cannot be empty!'
uuid:
label: 'Unique identifier'
+ created_at:
+ label: 'Created at'
geo:
uri: 'Open in app'
osm: 'Open in web map'
@@ -548,7 +771,7 @@ en:
categories: 'Everything'
index:
search: 'Search'
- edit: 'Edit'
+ edit: Edit
preview:
btn: 'Preliminary version'
alert: 'Not every article type has a preliminary version'
@@ -685,7 +908,7 @@ en:
new: 'Create'
edit: 'Configure'
posts:
- new: 'New %{layout}'
+ new: 'Add %{layout}'
edit: 'Editing'
usuaries:
index: 'Users'
@@ -709,3 +932,5 @@ en:
build_stats:
index:
title: "Publications"
+ indexed_posts:
+ deleted: "Deleted indexed post %{path} from %{site} (records: %{records})"
diff --git a/config/locales/es.yml b/config/locales/es.yml
index 9e0b8945..a07b3799 100644
--- a/config/locales/es.yml
+++ b/config/locales/es.yml
@@ -1,4 +1,194 @@
es:
+ date:
+ format: '%d/%m/%Y'
+ published_at: "Publicado en"
+ last_modified_at: "Última modificación"
+ abbr_day_names:
+ - Lun
+ - Mar
+ - Mié
+ - Jue
+ - Vie
+ - Sáb
+ - Dom
+ day_names:
+ - Lunes
+ - Martes
+ - Miércoles
+ - Jueves
+ - Viernes
+ - Sábado
+ - Domingo
+ abbr_month_names:
+ - Ene
+ - Feb
+ - Mar
+ - Abr
+ - May
+ - Jun
+ - Jul
+ - Ago
+ - Sep
+ - Oct
+ - Nov
+ - Dic
+ month_names:
+ - Enero
+ - Febrero
+ - Marzo
+ - Abril
+ - Mayo
+ - Junio
+ - Julio
+ - Agosto
+ - Septiembre
+ - Octubre
+ - Noviembre
+ - Diciembre
+ time:
+ am: am
+ pm: pm
+ format: '%-H:%M'
+ components:
+ actor:
+ user: Nombre de usuarie
+ profile: Cuenta de Origen
+ profile_name: Nombre de la cuenta
+ preferred_name: Nombre en el Fediverso
+ profile_id: ID
+ profile_published: Publicada
+ profile_summary: Presentación
+ block_list:
+ know_more: Saber más (en inglés)
+ instances_blocked: Instancias bloqueadas
+ instances_filters:
+ text_show: Ver
+ text_checked: Con los marcados...
+ instances_checked_submenu:
+ submenu_pause: Moderar caso por caso
+ submenu_allow: Permitir todo
+ submenu_block: Rechazar todo
+ instances_show_submenu:
+ submenu_paused: "Pausadas (%{count})"
+ submenu_allowed: "Permitidas (%{count})"
+ submenu_blocked: "Bloqueadas (%{count})"
+ comments_filters:
+ text_show: Ver
+ text_checked: Con los marcados...
+ comments_checked_submenu:
+ submenu_pause: Pausar
+ submenu_approve: Aprobar
+ submenu_reject: Rechazar
+ submenu_report: Reportar
+ comments_show_submenu:
+ submenu_paused: "Pausados (%{count})"
+ submenu_approved: "Aprobados (%{count})"
+ submenu_rejected: "Rechazados (%{count})"
+ submenu_reported: "Reportados (%{count})"
+ profiles_filters:
+ text_show: Ver
+ text_checked: Con los marcados...
+ profiles_checked_submenu:
+ submenu_pause: Pausar
+ submenu_allow: Aceptar
+ submenu_block: Bloquear
+ submenu_report: Reportar
+ profiles_show_submenu:
+ submenu_paused: "Pausadas (%{count})"
+ submenu_allowed: "Permitidas (%{count})"
+ submenu_blocked: "Bloqueadas (%{count})"
+ submenu_reported: "Reportadas (%{count})"
+ block_lists:
+ title: Listas de bloqueo
+ comments_btn_box:
+ text_pause: Pausar
+ text_approve: Aceptar
+ text_reject: Rechazar
+ text_report: Reportar
+ confirm_report: "¿Enviar el reporte a la instancia remota? Esta acción también rechazará el comentario."
+ confirm_reject: "¿Rechazar este comentario? Tené en cuenta que por el momento no es posible deshacer esta acción."
+ instances_btn_box:
+ text_pause: Moderar caso por caso
+ text_allow: Permitir todo
+ text_block: Bloquear instancia
+ profiles_btn_box:
+ text_pause: Revisar siempre
+ text_allow: Aprobar siempre
+ text_block: Bloquear
+ text_report: Reportar
+ confirm_report: "¿Enviar el reporte a la instancia remota? Esta acción también bloqueará la cuenta."
+ remote_flags:
+ report_message: "¡Hola! Une usuarie de Sutty CMS reportó esta cuenta en tu instancia. Todavía no tenemos soporte para mensajes personalizados. Podés contactarnos en %{panel_actor_mention}."
+ activity_pubs:
+ action_on_several:
+ success: "Se ha modificado el estado de moderación de varios comentarios. Podés encontrarlos usando los filtros en la sección Comentarios."
+ error: "Hubo un error al modificar el estado de moderación de varios comentarios. Hemos recibido el reporte y lo estaremos verificando."
+ approve:
+ success: "Comentario aprobado."
+ error: "No se puedo aprobar el comentario. Hemos recibido el reporte y lo estaremos verificando."
+ reject:
+ success: "Comentario rechazado. Podés reportarlo usando el botón Reportar."
+ error: "No se puedo rechazar el comentario. Hemos recibido el reporte y lo estaremos verificando."
+ report:
+ success: "Comentario reportado."
+ error: "No se puedo reportar el comentario. Hemos recibido el reporte y lo estaremos verificando."
+ actor_moderations:
+ action_on_several:
+ success: "Se ha modificado el estado de moderación de varias cuentas. Podés encontrarlas usando los filtros en la sección Cuentas. No se modificaron comentarios pre-existentes."
+ error: "Hubo un error al modificar el estado de moderación de varias cuentas. Hemos recibido el reporte y lo estaremos verificando."
+ pause:
+ success: "Cuenta pausada. Todos los comentarios que haga necesitan ser aprobados manualmente en la sección Comentarios. No se modificaron comentarios pre-existentes."
+ error: "No se pudo pausar la cuenta. Hemos recibido el reporte y lo estaremos verificando."
+ allow:
+ success: "Cuenta permitida. Todos los comentarios que haga serán aprobados inmediatamente. No se modificaron comentarios pre-existentes."
+ error: "No se pudo permitir la cuenta. Hemos recibido el reporte y lo estaremos verificando."
+ block:
+ success: "Cuenta bloqueada. Todos los comentarios que haga serán rechazados inmediatamente. Si querés reportarla a su instancia, podés usar el botón Reportar. No se modificaron comentarios pre-existentes."
+ error: "No se pudo bloquear la cuenta. Hemos recibido el reporte y lo estaremos verificando."
+ report:
+ success: "Cuenta reportada a su instancia."
+ error: "No se pudo reportar la cuenta. Hemos recibido el reporte y lo estaremos verificando."
+ instance_moderations:
+ action_on_several:
+ success: "Se ha modificado el estado de moderación de varias instancias. Podés encontrarlas usando los filtros en la sección Instancias. No se modificaron cuentas y comentarios pre-existentes."
+ error: "Hubo un error al modificar el estado de moderación de varias instancias. Hemos recibido el reporte y lo estaremos verificando."
+ pause:
+ success: "Instancia pausada. A partir de ahora, todos los comentarios y cuentas de esta instancia necesitan ser aprobados manualmente. No se ha modificado el estado de moderación de cuentas ni comentarios pre-existentes."
+ error: "No se pudo pausar la instancia. Hemos recibido el reporte y lo estaremos verificando."
+ allow:
+ success: "Instancia permitida. A partir de ahora, todos los comentarios y cuentas pendientes serán aprobados inmediatamente. No se modificaron cuentas ni comentarios pre-existentes."
+ error: "No se pudo permitir la instancia. Hemos recibido el reporte y lo estaremos verificando."
+ block:
+ success: "Instancia bloqueada. A partir de ahora, todos los comentarios y cuentas serán rechazados inmediatamente. No se modificaron cuentas ni comentarios pre-existentes."
+ error: "No se pudo bloquear la instancia. Hemos recibido el reporte y lo estaremos verificando."
+ fediblock_states:
+ action_on_several:
+ success: "Se habilitaron las listas de bloqueo, podés encontrar las instancias filtrando por Bloqueadas. Podés activarlas individualmente en la sección Cuentas. No se modificaron cuentas ni comentarios pre-existentes."
+ error: "Hubo un error al activar o desactivar listas de bloqueo, ya recibimos el reporte y lo estaremos verificando."
+ custom_blocklist_success: "Se agregaron las instancias personalizadas a la lista de bloqueo, podés encontrarlas filtrando por Bloqueadas. Podés aprobarlas individualmente en la sección Cuentas. No se modificaron cuentas ni comentarios pre-existentes."
+ custom_blocklist_error: "Hubo un error al agregar instancias personalizadas a la lista de bloqueo, ya recibimos el reporte y lo estaremos verificando."
+ moderation_queue:
+ everything: 'Seleccionar todo'
+ nothing: 'No hay nada para este filtro'
+ index:
+ title: Actividades de moderación
+ instances: Instancias
+ accounts: Cuentas
+ comments: Comentarios
+ comment:
+ source_profile: Cuenta de Origen
+ reply_to: En respuesta a
+ instances:
+ title: Mis listas de bloqueo
+ description: "Las listas de bloqueo contienen instancias conocidas por alojar discurso de odio, promover el fascismo, la violencia, abuso sexual y/o desinformación."
+ custom_block: Lista personalizada de bloqueo
+ custom_block_placeholder: |
+ un.domin.io
+ por.lin.ea
+ submit: Guardar listas de bloqueo
+ instance:
+ users: "Usuaries:"
+ dark: Oscuro
es: Castellano
en: English
es-AR: Castellano Rioplatense
@@ -123,6 +313,10 @@ es:
title: Web distribuida
success: ¡Éxito!
error: Hubo un error
+ deploy_social_distributed_press:
+ title: Fediverso
+ success: ¡Éxito!
+ error: Hubo un error
deploy_reindex:
title: Reindexación
success: ¡Éxito!
@@ -167,6 +361,7 @@ es:
usuarie: Usuarie
licencia: Licencia
design: Diseño
+ indexed_post: Artículo indexado
attributes:
usuarie:
email: 'Correo electrónico'
@@ -191,10 +386,16 @@ es:
deploys:
deploy_local_presence: '¡Necesitamos poder generar el sitio!'
design_id:
+ missing_gem: "El sitio usa la plantilla %{theme} pero la gema correspondiente no se encuentra en el Gemfile"
layout_incompatible:
error: 'No se puede cambiar la plantilla porque hay artículos con formatos incompatibles'
help: 'En tu sitio hay artículos que solo son compatibles con el diseño actual, si cambias la plantilla el sitio no funcionará como esperas. Si estás probando plantillas, puedes eliminar los artículos en los formatos incompatibles: %{layouts}.'
+ usuarie:
+ attributes:
+ lang:
+ not_available: "Este idioma todavía no está disponible, ¿nos ayudas a agregarlo y mantenerlo?"
errors:
+ site_not_found: "No encontramos ese sitio o quizás no tengas acceso."
argument_error: 'El argumento `%{argument}` debe ser una instancia de %{class}'
unknown_locale: 'El idioma %{locale} es desconocido'
posts:
@@ -312,6 +513,18 @@ es:
copias de tu contenido indefinidamente.
[Saber más](https://sutty.nl/saber-mas-sobre-publicar-a-la-web-distribuida/)
+ deploy_social_distributed_press:
+ title: 'Publicar al Fediverso'
+ help: |
+ Utilizando el protocolo ActivityPub, otras personas en el
+ Fediverso ([Mastodon](https://joinmastodon.org/servers),
+ [Pixelfed](https://pixelfed.social/site/about) y
+ [otros](https://fediverse.party/)) pueden seguir a tu sitio,
+ recibir novedades e interactuar con ellas.
+
+ También existe la posibilidad de que Sutty anuncie tu contenido y/o usuarie del Fediverse
+ en forma automática para atraer seguidorxs. Podés hacerlo con este
+ [Formulario](https://cryptpad.fr/form/#/2/form/view/XorL4I-nC17rcEwtol3ghsRDsivfg6g5685MK+TFZ-8/)
stats:
index:
title: Estadísticas
@@ -364,6 +577,8 @@ es:
column: "País"
empty: "(no se pudo detectar el país)"
sites:
+ moderation_queue:
+ moderation_needed: "Hay actividades pendientes de revisión desde la última vez que moderaste."
donations:
url: 'https://donaciones.sutty.nl/'
text: 'Apoyá nuestro trabajo'
@@ -371,7 +586,7 @@ es:
static_file_migration: 'Migración de archivos'
find_and_replace: 'Búsqueda y reemplazo'
status:
- building: "Tu sitio se está publicando, recargá esta página en ."
+ building: "Tu sitio se está publicando, estará listo en ."
not_published_yet: "Tu sitio se está publicando por primera vez, por favor espera hasta un minuto..."
available: "¡Tu sitio está disponible! Cliqueá aquí para encontrar todas las formas en que podés visitarlo."
awaiting_publication: "Hay cambios sin publicar, cliqueá el botón debajo y espera un momento para encontrarlos en tu sitio."
@@ -413,6 +628,8 @@ es:
title: 'Editar %{site}'
submit: 'Guardar cambios'
btn: 'Configuración'
+ update:
+ post: "Tus cambios han sido guardados. **Si agregaste un método de publicación, no te olvides de publicar cambios.**"
form:
errors:
title: Hubo errores y no pudimos guardar tus cambios :(
@@ -421,7 +638,7 @@ es:
name: 'El nombre de tu sitio que formará parte de la dirección (**ejemplo**.sutty.nl). Solo puede contener hasta 63 letras minúsculas, números y guiones, pero **sin espacios**. No puede empezar ni terminar con guión, ni estar compuesto enteramente por números.'
title: 'El título de tu sitio puede ser lo que quieras.'
description: 'La descripción del sitio, que saldrá en buscadores. Entre 50 y 160 caracteres.'
- design: 'Elegí el diseño que va a tener tu sitio aquí. Podés cambiarlo luego. De tanto en tanto vamos sumando diseños nuevos.'
+ design: 'Elegí el diseño que va a tener tu sitio aquí. De tanto en tanto vamos sumando diseños nuevos.'
licencia: 'Todo lo que publicamos posee automáticamente derechos
de autore. Esto significa que nadie puede hacer uso de nuestras
obras sin permiso explícito. Con las licencias establecemos
@@ -474,6 +691,9 @@ es:
success: 'Ya se incorporaron los cambios en el sitio, se aplicarán en la próxima compilación que hagas :)'
error: 'Hubo un error al incorporar los cambios en el sitio. Esto puede deberse a conflictos entre cambios que no se pueden resolver automáticamente. Hemos enviado un reporte del problema a les administradores de Sutty para que estén al tanto de la situación. ¡Lo sentimos! :('
message: 'Actualización del esqueleto'
+ webhooks:
+ pull:
+ message: 'Traer los cambios a partir de un evento remoto'
footer:
powered_by: 'es desarrollada por'
i18n:
@@ -492,6 +712,7 @@ es:
en: 'inglés'
ar: 'árabe'
posts:
+ edit: Editar
prev: Página anterior
next: Página siguiente
empty: No hay artículos con estos parámetros de búsqueda.
@@ -520,6 +741,8 @@ es:
feedback: '¡Este campo no puede estar vacío!'
uuid:
label: 'Identificador único'
+ created_at:
+ label: 'Fecha de creación'
geo:
uri: 'Abrir en aplicación'
osm: 'Abrir en mapa web'
@@ -556,7 +779,7 @@ es:
remove_filter_help: 'Quitar este filtro: %{filter}'
index:
search: 'Buscar'
- edit: 'Editar'
+ edit_post: 'Editar'
preview:
btn: 'Versión preliminar'
alert: 'No todos los tipos de artículos poseen vista preliminar :)'
@@ -693,7 +916,7 @@ es:
new: 'Crear'
edit: 'Configurar'
posts:
- new: 'Nuevo %{layout}'
+ new: 'Agregar %{layout}'
edit: 'Editando'
usuaries:
index: 'Usuaries'
@@ -717,3 +940,5 @@ es:
build_stats:
index:
title: "Publicaciones"
+ indexed_posts:
+ deleted: "Eliminado artículo %{path} de %{site} (filas: %{records})"
diff --git a/config/routes.rb b/config/routes.rb
index 3828915c..9d5c974a 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -4,6 +4,9 @@ Rails.application.routes.draw do
devise_for :usuaries
get '/.well-known/change-password', to: redirect('/usuaries/edit')
+ require 'que/web'
+ mount Que::Web => '/que'
+
root 'application#index'
constraints(Constraints::ApiSubdomain.new) do
@@ -11,12 +14,26 @@ Rails.application.routes.draw do
namespace :v1 do
resources :csp_reports, only: %i[create]
+ namespace :activity_pub do
+ resources :remote_flags, only: %i[show]
+ end
+
resources :sites, only: %i[index], constraints: { site_id: /[a-z0-9\-.]+/, id: /[a-z0-9\-.]+/ } do
get :'invitades/cookie', to: 'invitades#cookie'
post :'posts/:layout', to: 'posts#create', as: :posts
get :'contact/cookie', to: 'invitades#contact_cookie'
post :'contact/:form', to: 'contact#receive', as: :contact
+
+ namespace :webhooks do
+ post :pull, to: 'pull#pull'
+
+ scope :social_inbox do
+ post :moderationqueued, to: 'social_inbox#moderationqueued'
+ post :onapproved, to: 'social_inbox#onapproved'
+ post :onrejected, to: 'social_inbox#onrejected'
+ end
+ end
end
end
end
@@ -26,9 +43,6 @@ Rails.application.routes.draw do
# alias en nginx sin tener que usar expresiones regulares para
# detectar el nombre del sitio.
get '/sites/private/:site_id(*file)', to: 'private#show', constraints: { site_id: %r{[^/]+} }
- # Obtener archivos estáticos desde el directorio público
- get '/sites/:site_id/static_file/(*file)', to: 'sites#static_file', as: 'site_static_file',
- constraints: { site_id: %r{[^/]+} }
get '/env.js', to: 'env#index'
match '/api/v3/projects/:site_id/notices' => 'api/v1/notices#create', via: %i[post]
@@ -38,6 +52,9 @@ Rails.application.routes.draw do
get 'pull', to: 'sites#fetch'
post 'pull', to: 'sites#merge'
+ get 'status', to: 'sites#status'
+ get 'button', to: 'sites#button'
+
# Gestionar usuaries
get 'usuaries/invite', to: 'usuaries#invite'
post 'usuaries/invite', to: 'usuaries#send_invitations'
@@ -51,6 +68,33 @@ Rails.application.routes.draw do
get 'collaborate', to: 'collaborations#collaborate'
post 'collaborate', to: 'collaborations#accept_collaboration'
+ get 'moderation_queue', to: 'moderation_queue#index'
+
+ resources :instance_moderations, only: [] do
+ patch :pause, to: 'instance_moderations#pause'
+ patch :allow, to: 'instance_moderations#allow'
+ patch :block, to: 'instance_moderations#block'
+ end
+
+ patch :instance_moderations_action_on_several, to: 'instance_moderations#action_on_several'
+ patch :fediblock_states_action_on_several, to: 'fediblock_states#action_on_several'
+
+ resources :actor_moderations, only: %i[show] do
+ ActorModeration.events.each do |actor_event|
+ patch actor_event, to: "actor_moderations##{actor_event}"
+ end
+ end
+
+ patch :actor_moderations_action_on_several, to: 'actor_moderations#action_on_several'
+
+ resources :activity_pub, only: [] do
+ ActivityPub.events.each do |event|
+ patch event, to: "activity_pubs##{event}"
+ end
+ end
+
+ patch :activity_pubs_action_on_several, to: 'activity_pubs#action_on_several'
+
# Gestionar artículos según idioma
nested do
scope '/(:locale)', constraint: /[a-z]{2}(-[A-Z]{2})?/ do
diff --git a/db/migrate/20230519143500_add_pagination_to_site.rb b/db/migrate/20230519143500_add_pagination_to_site.rb
new file mode 100644
index 00000000..387dc588
--- /dev/null
+++ b/db/migrate/20230519143500_add_pagination_to_site.rb
@@ -0,0 +1,8 @@
+# frozen_string_literal: true
+
+# Agrega la opción de paginación a los sitios
+class AddPaginationToSite < ActiveRecord::Migration[6.1]
+ def change
+ add_column :sites, :pagination, :boolean, default: false
+ end
+end
diff --git a/db/migrate/20230731195050_add_token_to_roles.rb b/db/migrate/20230731195050_add_token_to_roles.rb
new file mode 100644
index 00000000..c38b0526
--- /dev/null
+++ b/db/migrate/20230731195050_add_token_to_roles.rb
@@ -0,0 +1,12 @@
+class AddTokenToRoles < ActiveRecord::Migration[6.1]
+ def up
+ add_column :roles, :token, :string
+ Rol.find_each do |m|
+ m.update_column( :token, SecureRandom.hex(64) )
+ end
+ end
+
+ def down
+ remove_column :roles, :token
+ end
+end
diff --git a/db/migrate/20230829204127_add_private_key_pem_ciphertext_to_sites.rb b/db/migrate/20230829204127_add_private_key_pem_ciphertext_to_sites.rb
new file mode 100644
index 00000000..9f26f21a
--- /dev/null
+++ b/db/migrate/20230829204127_add_private_key_pem_ciphertext_to_sites.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+# Almacena las llaves privadas de cada sitio
+class AddPrivateKeyPemCiphertextToSites < ActiveRecord::Migration[6.1]
+ # Agrega la columna cifrada
+ def change
+ add_column :sites, :private_key_pem_ciphertext, :text
+ end
+end
diff --git a/db/migrate/20230921155401_site_rename_origin_to_upstream.rb b/db/migrate/20230921155401_site_rename_origin_to_upstream.rb
new file mode 100644
index 00000000..864f4c4a
--- /dev/null
+++ b/db/migrate/20230921155401_site_rename_origin_to_upstream.rb
@@ -0,0 +1,20 @@
+# frozen_string_literal: true
+
+# Renombrar todos los repositorios que apunten a skel como su origin
+class SiteRenameOriginToUpstream < ActiveRecord::Migration[6.1]
+ # Renombrar
+ def up
+ Site.find_each do |site|
+ next unless site.repository.origin&.url == ENV['SKEL_SUTTY']
+
+ site.repository.rugged.remotes.rename('origin', 'upstream') do |_|
+ Rails.logger.info "#{site.name}: renamed origin to upstream"
+ end
+ rescue Rugged::Error, Rugged::OSError => e
+ Rails.logger.warn "#{site.name}: #{e.message}"
+ end
+ end
+
+ # No se puede deshacer
+ def down; end
+end
diff --git a/db/migrate/20230927153926_add_last_indexed_commit_to_sites.rb b/db/migrate/20230927153926_add_last_indexed_commit_to_sites.rb
new file mode 100644
index 00000000..71e08f37
--- /dev/null
+++ b/db/migrate/20230927153926_add_last_indexed_commit_to_sites.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+# Almacenar el último commit indexado
+class AddLastIndexedCommitToSites < ActiveRecord::Migration[6.1]
+ def up
+ add_column :sites, :last_indexed_commit, :string, null: true
+
+ Site.find_each do |site|
+ site.update_columns(last_indexed_commit: site.repository.head_commit.oid)
+ rescue Rugged::Error, Rugged::OSError => e
+ puts "Falló #{site.name}, ignorando: #{e.message}"
+ end
+ end
+
+ def down
+ remove_column :sites, :last_indexed_commit
+ end
+end
diff --git a/db/migrate/20231101200026_add_default_to_distributed_press_publisher.rb b/db/migrate/20231101200026_add_default_to_distributed_press_publisher.rb
new file mode 100644
index 00000000..fd833acb
--- /dev/null
+++ b/db/migrate/20231101200026_add_default_to_distributed_press_publisher.rb
@@ -0,0 +1,14 @@
+# frozen_string_literal: true
+
+# Una instancia es la instancia por defecto
+class AddDefaultToDistributedPressPublisher < ActiveRecord::Migration[6.1]
+ def up
+ add_column :distributed_press_publishers, :default, :boolean, default: false
+
+ DistributedPressPublisher.last&.update(default: true)
+ end
+
+ def down
+ remove_column :distributed_press_publishers, :default
+ end
+end
diff --git a/db/migrate/20240216170202_add_rol_to_deploys.rb b/db/migrate/20240216170202_add_rol_to_deploys.rb
new file mode 100644
index 00000000..93c4553d
--- /dev/null
+++ b/db/migrate/20240216170202_add_rol_to_deploys.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+# Establece una relación entre roles y deploys
+class AddRolToDeploys < ActiveRecord::Migration[6.1]
+ def up
+ add_column :deploys, :rol_id, :integer, index: true
+
+ Deploy.find_each do |deploy|
+ rol_id = deploy.site.roles.find_by(rol: 'usuarie', temporal: false)&.id
+
+ deploy.update_column(:rol_id, rol_id) if rol_id
+ end
+ end
+
+ def down
+ remove_column :deploys, :rol_id
+ end
+end
diff --git a/db/migrate/20240219153919_create_activity_pub_activities.rb b/db/migrate/20240219153919_create_activity_pub_activities.rb
new file mode 100644
index 00000000..555656ad
--- /dev/null
+++ b/db/migrate/20240219153919_create_activity_pub_activities.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+# Actividades. Se asocian a un objeto y a una cola de moderación
+class CreateActivityPubActivities < ActiveRecord::Migration[6.1]
+ def change
+ create_table :activity_pub_activities, id: :uuid do |t|
+ t.timestamps
+
+ t.uuid :activity_pub_id, index: true, null: false
+
+ t.string :type, null: false
+ t.string :uri, null: false
+ t.jsonb :content, default: {}
+ end
+ end
+end
diff --git a/db/migrate/20240219175839_create_activity_pub_actors.rb b/db/migrate/20240219175839_create_activity_pub_actors.rb
new file mode 100644
index 00000000..656b3f63
--- /dev/null
+++ b/db/migrate/20240219175839_create_activity_pub_actors.rb
@@ -0,0 +1,12 @@
+# frozen_string_literal: true
+
+# Almacena actores de ActivityPub y los relaciona con actividades
+class CreateActivityPubActors < ActiveRecord::Migration[6.1]
+ def change
+ create_table :activity_pub_actors, id: :uuid do |t|
+ t.timestamps
+ t.uuid :instance_id, index: true, null: false
+ t.string :uri, index: true, unique: true, null: false
+ end
+ end
+end
diff --git a/db/migrate/20240219204011_create_activity_pubs.rb b/db/migrate/20240219204011_create_activity_pubs.rb
new file mode 100644
index 00000000..cf797fc8
--- /dev/null
+++ b/db/migrate/20240219204011_create_activity_pubs.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+# Registro de actividades.
+class CreateActivityPubs < ActiveRecord::Migration[6.1]
+ def change
+ create_table :activity_pubs, id: :uuid do |t|
+ t.timestamps
+
+ t.bigint :site_id, null: false
+ t.uuid :object_id, null: false
+ t.string :object_type, null: false
+
+ t.string :aasm_state, null: false
+
+ t.index %i[site_id object_id object_type], unique: true
+ end
+ end
+end
diff --git a/db/migrate/20240219204224_create_activity_pub_objects.rb b/db/migrate/20240219204224_create_activity_pub_objects.rb
new file mode 100644
index 00000000..865589ab
--- /dev/null
+++ b/db/migrate/20240219204224_create_activity_pub_objects.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+# Almacena objetos de ActivityPub. Los objetos pueden estar compartidos
+# por toda la instancia.
+class CreateActivityPubObjects < ActiveRecord::Migration[6.1]
+ def change
+ create_table :activity_pub_objects, id: :uuid do |t|
+ t.timestamps
+
+ t.uuid :actor_id, index: true, null: false
+
+ t.string :type, null: false
+ t.string :uri, null: false, unique: true
+ t.jsonb :content, default: {}
+ end
+ end
+end
diff --git a/db/migrate/20240220161414_create_activity_pub_instances.rb b/db/migrate/20240220161414_create_activity_pub_instances.rb
new file mode 100644
index 00000000..feb9351d
--- /dev/null
+++ b/db/migrate/20240220161414_create_activity_pub_instances.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+# Almacena las instancias
+class CreateActivityPubInstances < ActiveRecord::Migration[6.1]
+ def change
+ create_table :activity_pub_instances, id: :uuid do |t|
+ t.timestamps
+ t.string :hostname, index: true, unique: true, null: false
+ t.string :aasm_state, null: false
+ t.jsonb :content, default: {}
+ end
+ end
+end
diff --git a/db/migrate/20240221184007_remove_actor_from_objects.rb b/db/migrate/20240221184007_remove_actor_from_objects.rb
new file mode 100644
index 00000000..6ee5822c
--- /dev/null
+++ b/db/migrate/20240221184007_remove_actor_from_objects.rb
@@ -0,0 +1,12 @@
+# frozen_string_literal: true
+
+# No es necesario vincular actores con objetos, porque la forma en que
+# lo estábamos haciendo no se refiere a le actore del objeto, sino de
+# acciones distintas sobre el mismo objeto, generado por une actore.
+#
+# Y ese valor ya lo podemos obtener desde attributedTo
+class RemoveActorFromObjects < ActiveRecord::Migration[6.1]
+ def change
+ remove_column :activity_pub_objects, :actor_id, :uuid, index: true
+ end
+end
diff --git a/db/migrate/20240223170317_add_actor_to_activities.rb b/db/migrate/20240223170317_add_actor_to_activities.rb
new file mode 100644
index 00000000..a546cd94
--- /dev/null
+++ b/db/migrate/20240223170317_add_actor_to_activities.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+# Relaciona Actor con Activity
+class AddActorToActivities < ActiveRecord::Migration[6.1]
+ def up
+ add_column :activity_pub_activities, :actor_id, :uuid, index: true
+
+ ActivityPub::Activity.find_each do |activity|
+ actor = ActivityPub::Actor.find_by(uri: activity.content['actor'])
+
+ activity.update(actor: actor) if actor.present?
+ end
+ end
+
+ def down
+ remove_column :activity_pub_activities, :actor_id, :uuid, index: true
+ end
+end
diff --git a/db/migrate/20240226133022_add_instance_id_to_activity_pubs.rb b/db/migrate/20240226133022_add_instance_id_to_activity_pubs.rb
new file mode 100644
index 00000000..710aacef
--- /dev/null
+++ b/db/migrate/20240226133022_add_instance_id_to_activity_pubs.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+# Relaciona instancias con sus actividades
+class AddInstanceIdToActivityPubs < ActiveRecord::Migration[6.1]
+ def up
+ add_column :activity_pubs, :instance_id, :uuid, index: true
+
+ ActivityPub.all.find_each do |activity_pub|
+ activity_pub.update(instance: activity_pub&.object&.actor&.instance)
+ end
+ end
+
+ def down
+ remove_column :activity_pubs, :instance_id, :uuid, index: true
+ end
+end
diff --git a/db/migrate/20240226134335_create_instance_moderation.rb b/db/migrate/20240226134335_create_instance_moderation.rb
new file mode 100644
index 00000000..8b08e14e
--- /dev/null
+++ b/db/migrate/20240226134335_create_instance_moderation.rb
@@ -0,0 +1,26 @@
+# frozen_string_literal: true
+
+# Como la instancia es única para todo el panel, necesitamos llevar
+# registro de su relación con cada sitio por separado.
+class CreateInstanceModeration < ActiveRecord::Migration[6.1]
+ def up
+ create_table :instance_moderations do |t|
+ t.timestamps
+
+ t.belongs_to :site
+ t.uuid :instance_id, index: true
+
+ t.string :aasm_state, null: false, default: 'paused'
+
+ t.index %i[site_id instance_id], unique: true
+ end
+
+ ActivityPub.all.find_each do |activity_pub|
+ InstanceModeration.find_or_create_by(site: activity_pub.site, instance: activity_pub.instance)
+ end
+ end
+
+ def down
+ drop_table :instance_moderations
+ end
+end
diff --git a/db/migrate/20240227134845_create_fediblocks.rb b/db/migrate/20240227134845_create_fediblocks.rb
new file mode 100644
index 00000000..1a61ccba
--- /dev/null
+++ b/db/migrate/20240227134845_create_fediblocks.rb
@@ -0,0 +1,26 @@
+# frozen_string_literal: true
+
+# Las fediblocks son listas descargables de instancias bloqueadas. El
+# formato hace una recomendación sobre suspensión o desfederación, pero
+# nosotres bloqueamos todo.
+class CreateFediblocks < ActiveRecord::Migration[6.1]
+ def up
+ create_table :activity_pub_fediblocks, id: :uuid do |t|
+ t.timestamps
+
+ t.string :title, null: false
+ t.string :url, null: false
+ t.string :download_url, null: false
+ t.string :format, null: false
+ t.jsonb :hostnames, default: []
+ end
+
+ YAML.safe_load(File.read('db/seeds/activity_pub/fediblocks.yml')).each do |fediblock|
+ ActivityPub::Fediblock.create(**fediblock).process!
+ end
+ end
+
+ def down
+ drop_table :activity_pub_fediblocks
+ end
+end
diff --git a/db/migrate/20240227142019_create_fediblock_states.rb b/db/migrate/20240227142019_create_fediblock_states.rb
new file mode 100644
index 00000000..1e718343
--- /dev/null
+++ b/db/migrate/20240227142019_create_fediblock_states.rb
@@ -0,0 +1,27 @@
+# frozen_string_literal: true
+
+# La relación entre sitios y fediblocks
+class CreateFediblockStates < ActiveRecord::Migration[6.1]
+ def up
+ create_table :fediblock_states, id: :uuid do |t|
+ t.timestamps
+
+ t.belongs_to :site
+ t.uuid :fediblock_id, index: true
+ t.string :aasm_state
+
+ t.index %i[site_id fediblock_id], unique: true
+ end
+
+ # Todas las listas están activas por defecto
+ DeploySocialDistributedPress.find_each do |deploy|
+ ActivityPub::Fediblock.find_each do |fediblock|
+ FediblockState.create(site: deploy.site, fediblock: fediblock, aasm_state: 'disabled').tap(&:enable!)
+ end
+ end
+ end
+
+ def down
+ drop_table :fediblock_states
+ end
+end
diff --git a/db/migrate/20240228202830_create_actor_moderations.rb b/db/migrate/20240228202830_create_actor_moderations.rb
new file mode 100644
index 00000000..01460eae
--- /dev/null
+++ b/db/migrate/20240228202830_create_actor_moderations.rb
@@ -0,0 +1,14 @@
+# frozen_string_literal: true
+
+# Relación entre Actor y Site
+class CreateActorModerations < ActiveRecord::Migration[6.1]
+ def change
+ create_table :actor_moderations, id: :uuid do |t|
+ t.timestamps
+
+ t.belongs_to :site
+ t.uuid :actor_id, index: true
+ t.string :aasm_state, null: false
+ end
+ end
+end
diff --git a/db/migrate/20240229201155_create_activity_pub_remote_flags.rb b/db/migrate/20240229201155_create_activity_pub_remote_flags.rb
new file mode 100644
index 00000000..c60aca22
--- /dev/null
+++ b/db/migrate/20240229201155_create_activity_pub_remote_flags.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+# Lleva el registro de reportes remotos
+class CreateActivityPubRemoteFlags < ActiveRecord::Migration[6.1]
+ def change
+ create_table :activity_pub_remote_flags, id: :uuid do |t|
+ t.timestamps
+ t.belongs_to :site
+ t.uuid :actor_id, index: true
+
+ t.text :message
+
+ t.index %i[site_id actor_id], unique: true
+ end
+ end
+end
diff --git a/db/migrate/20240301181224_add_remote_flag_to_actor_moderation.rb b/db/migrate/20240301181224_add_remote_flag_to_actor_moderation.rb
new file mode 100644
index 00000000..63e4ce1b
--- /dev/null
+++ b/db/migrate/20240301181224_add_remote_flag_to_actor_moderation.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+# Las acciones de moderación pueden tener un reporte remoto asociado
+class AddRemoteFlagToActorModeration < ActiveRecord::Migration[6.1]
+ def up
+ add_column :actor_moderations, :remote_flag_id, :uuid, null: true
+
+ ActivityPub::RemoteFlag.all.find_each do |remote_flag|
+ actor_moderation = ActorModeration.find_by(actor_id: remote_flag.actor_id)
+
+ actor_moderation&.update_column(:remote_flag_id, remote_flag.id)
+ end
+ end
+
+ def down
+ remove_column :actor_moderations, :remote_flag_id
+ end
+end
diff --git a/db/migrate/20240301194154_remove_unique_index_from_activity_pubs.rb b/db/migrate/20240301194154_remove_unique_index_from_activity_pubs.rb
new file mode 100644
index 00000000..0fa80e60
--- /dev/null
+++ b/db/migrate/20240301194154_remove_unique_index_from_activity_pubs.rb
@@ -0,0 +1,8 @@
+# frozen_string_literal: true
+
+# A veces tenemos varias acciones sobre el mismo objeto
+class RemoveUniqueIndexFromActivityPubs < ActiveRecord::Migration[6.1]
+ def change
+ remove_index :activity_pubs, %i[site_id object_id object_type], unique: true
+ end
+end
diff --git a/db/migrate/20240301202955_add_actor_id_to_activity_pubs.rb b/db/migrate/20240301202955_add_actor_id_to_activity_pubs.rb
new file mode 100644
index 00000000..37db4bfc
--- /dev/null
+++ b/db/migrate/20240301202955_add_actor_id_to_activity_pubs.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+# Relaciona estados de actividades con les actores que las hicieron
+class AddActorIdToActivityPubs < ActiveRecord::Migration[6.1]
+ def up
+ add_column :activity_pubs, :actor_id, :uuid
+
+ ActivityPub.all.find_each do |activity_pub|
+ activity_pub.update_column(:actor_id, activity_pub.activities.last.actor_id)
+ end
+ end
+
+ def down
+ remove_column :activity_pubs, :actor_id
+ end
+end
diff --git a/db/migrate/20240305164653_change_remote_flags.rb b/db/migrate/20240305164653_change_remote_flags.rb
new file mode 100644
index 00000000..258f3335
--- /dev/null
+++ b/db/migrate/20240305164653_change_remote_flags.rb
@@ -0,0 +1,12 @@
+# frozen_string_literal: true
+
+# Agrega relaciones en las remote flags
+class ChangeRemoteFlags < ActiveRecord::Migration[6.1]
+ def up
+ add_column :activity_pubs, :remote_flag_id, :uuid, index: true, null: true
+ end
+
+ def down
+ remove_column :activity_pubs, :remote_flag_id
+ end
+end
diff --git a/db/migrate/20240305184854_add_state_to_remote_flags.rb b/db/migrate/20240305184854_add_state_to_remote_flags.rb
new file mode 100644
index 00000000..7ff78dfb
--- /dev/null
+++ b/db/migrate/20240305184854_add_state_to_remote_flags.rb
@@ -0,0 +1,8 @@
+# frozen_string_literal: true
+
+# Estado de los reportes remotos
+class AddStateToRemoteFlags < ActiveRecord::Migration[6.1]
+ def change
+ add_column :activity_pub_remote_flags, :aasm_state, :string, null: false, default: 'waiting'
+ end
+end
diff --git a/db/migrate/20240307201510_remove_actor_moderations.rb b/db/migrate/20240307201510_remove_actor_moderations.rb
new file mode 100644
index 00000000..b451c589
--- /dev/null
+++ b/db/migrate/20240307201510_remove_actor_moderations.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+# Mover todes les actores eliminades
+class RemoveActorModerations < ActiveRecord::Migration[6.1]
+ def up
+ actor_ids =
+ ActivityPub.where(aasm_state: 'removed', object_type: 'ActivityPub::Object::Person').distinct.pluck(:actor_id)
+
+ ActorModeration.where(actor_id: actor_ids).remove_all!
+ end
+
+ def down; end
+end
diff --git a/db/migrate/20240307203039_remove_actor_moderations2.rb b/db/migrate/20240307203039_remove_actor_moderations2.rb
new file mode 100644
index 00000000..555a4ffe
--- /dev/null
+++ b/db/migrate/20240307203039_remove_actor_moderations2.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+# Algunes quedaron como genéricxs
+class RemoveActorModerations2 < ActiveRecord::Migration[6.1]
+ def up
+ actor_uris = ActivityPub::Activity.unscope(:order).where(type: 'ActivityPub::Activity::Delete').distinct.pluck(Arel.sql("content->>'object'"))
+ actor_ids = ActivityPub::Actor.where(uri: actor_uris).ids
+
+ ActorModeration.where(actor_id: actor_ids).remove_all!
+ end
+
+ def down; end
+end
diff --git a/db/migrate/20240313192134_fix_fetch_jobs.rb b/db/migrate/20240313192134_fix_fetch_jobs.rb
new file mode 100644
index 00000000..54ffa7e6
--- /dev/null
+++ b/db/migrate/20240313192134_fix_fetch_jobs.rb
@@ -0,0 +1,20 @@
+# frozen_string_literal: true
+
+class FixFetchJobs < ActiveRecord::Migration[6.1]
+ def up
+ QueJob.where("last_error_message like '%ActiveJob::DeserializationError%'").find_each do |job|
+ job.error_count = 0
+ job.run_at = Time.now
+
+ job.args.first['arguments'].first['_aj_ruby2_keywords'].delete('object')
+ job.args.first['arguments'].first['_aj_ruby2_keywords'] << 'object_id'
+
+ object = job.args.first['arguments'].first.delete('object')['_aj_globalid']
+ job.args.first['arguments'].first['object_id'] = object.split('/').last
+
+ job.save
+ end
+ end
+
+ def down; end
+end
diff --git a/db/migrate/20240313204105_brs_decompressor_corrupted_source_error.rb b/db/migrate/20240313204105_brs_decompressor_corrupted_source_error.rb
new file mode 100644
index 00000000..e22d759b
--- /dev/null
+++ b/db/migrate/20240313204105_brs_decompressor_corrupted_source_error.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+# Comprueba que se pueden volver a correr las tareas que dieron error de
+# decompresión
+class BrsDecompressorCorruptedSourceError < ActiveRecord::Migration[6.1]
+ def up
+ raise unless HTTParty.get('https://mas.to/api/v2/instance',
+ headers: { 'Accept-Encoding': 'br;q=1.0,gzip;q=1.0,deflate;q=0.6,identity;q=0.3' }).ok?
+
+ QueJob.where("last_error_message like '%BRS::DecompressorCorruptedSourceError%'").update_all(error_count: 0,
+ run_at: Time.now)
+ end
+
+ def down; end
+end
diff --git a/db/migrate/20240314141536_remove_actor_moderations_for_generic_objects.rb b/db/migrate/20240314141536_remove_actor_moderations_for_generic_objects.rb
new file mode 100644
index 00000000..a60e755a
--- /dev/null
+++ b/db/migrate/20240314141536_remove_actor_moderations_for_generic_objects.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+# Elimina actores que no pudieron ser eliminades porque su perfil ya no
+# existe.
+class RemoveActorModerationsForGenericObjects < ActiveRecord::Migration[6.1]
+ def up
+ object_ids = ActivityPub.removed.where(object_type: 'ActivityPub::Object::Generic').distinct.pluck(:object_id)
+ uris = ActivityPub::Object.where(id: object_ids).pluck(:uri)
+ actor_ids = ActivityPub::Actor.where(uri: uris).ids
+
+ ActorModeration.where(actor_id: actor_ids).remove_all!
+ end
+
+ def down; end
+end
diff --git a/db/migrate/20240314153017_fix_object_type_on_activity_pubs.rb b/db/migrate/20240314153017_fix_object_type_on_activity_pubs.rb
new file mode 100644
index 00000000..d5475f71
--- /dev/null
+++ b/db/migrate/20240314153017_fix_object_type_on_activity_pubs.rb
@@ -0,0 +1,12 @@
+# frozen_string_literal: true
+
+# Arregla la relación rota entre ActivityPub y Objects
+class FixObjectTypeOnActivityPubs < ActiveRecord::Migration[6.1]
+ def up
+ ActivityPub::Object.where.not(type: 'ActivityPub::Object::Generic').find_each do |object|
+ ActivityPub.where(object_id: object.id).update_all(object_type: object.type, updated_at: Time.now)
+ end
+ end
+
+ def down; end
+end
diff --git a/db/migrate/20240314205923_fix_activity_type.rb b/db/migrate/20240314205923_fix_activity_type.rb
new file mode 100644
index 00000000..e6640ff8
--- /dev/null
+++ b/db/migrate/20240314205923_fix_activity_type.rb
@@ -0,0 +1,14 @@
+# frozen_string_literal: true
+
+# Soportar nuevos tipos
+class FixActivityType < ActiveRecord::Migration[6.1]
+ def up
+ %w[Like Announce].each do |type|
+ ActivityPub::Activity.where(Arel.sql("content->>'type' = '#{type}'")).update_all(
+ type: "ActivityPub::Activity::#{type}", updated_at: Time.now
+ )
+ end
+ end
+
+ def down; end
+end
diff --git a/db/migrate/20240316203721_add_mention_to_actors.rb b/db/migrate/20240316203721_add_mention_to_actors.rb
new file mode 100644
index 00000000..caa4f526
--- /dev/null
+++ b/db/migrate/20240316203721_add_mention_to_actors.rb
@@ -0,0 +1,24 @@
+# frozen_string_literal: true
+
+# Guarda la mención en la tabla de actores
+class AddMentionToActors < ActiveRecord::Migration[6.1]
+ def up
+ add_column :activity_pub_actors, :mention, :string, null: true
+
+ actor_types = %w[
+ ActivityPub::Object::Application
+ ActivityPub::Object::Group
+ ActivityPub::Object::Organization
+ ActivityPub::Object::Person
+ ActivityPub::Object::Service
+ ]
+
+ ActivityPub::Object.where(type: actor_types).where.not(content: {}).find_each do |object|
+ ActivityPub::Actor.find_by_uri(object.uri)&.save
+ end
+ end
+
+ def down
+ remove_column :activity_pub_actors, :mention
+ end
+end
diff --git a/db/migrate/20240318183846_fix_duplicate_objects.rb b/db/migrate/20240318183846_fix_duplicate_objects.rb
new file mode 100644
index 00000000..9f02c3db
--- /dev/null
+++ b/db/migrate/20240318183846_fix_duplicate_objects.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+# De alguna forma se guardaron objetos duplicados!
+class FixDuplicateObjects < ActiveRecord::Migration[6.1]
+ def up
+ ActivityPub::Object.group(:uri).count.select { |_, v| v > 1 }.each_key do |uri|
+ objects = ActivityPub::Object.where(uri: uri)
+ deleted_ids = objects[1..].map(&:delete).map(&:id)
+
+ ActivityPub.where(object_id: deleted_ids).update_all(object_id: objects.first.id, updated_at: Time.now)
+ end
+ end
+
+ def down; end
+end
diff --git a/db/migrate/20240319124212_add_fedipact_to_fediblocks.rb b/db/migrate/20240319124212_add_fedipact_to_fediblocks.rb
new file mode 100644
index 00000000..f751123a
--- /dev/null
+++ b/db/migrate/20240319124212_add_fedipact_to_fediblocks.rb
@@ -0,0 +1,26 @@
+# frozen_string_literal: true
+
+# Agrega threads.net a las listas de bloqueo
+class AddFedipactToFediblocks < ActiveRecord::Migration[6.1]
+ def up
+ change_column :activity_pub_fediblocks, :download_url, :string, null: true
+
+ fedipact =
+ ActivityPub::Fediblock.create(
+ hostnames: %w[threads.net],
+ title: 'Fedipact',
+ url: 'https://fedipact.online/',
+ format: 'none'
+ )
+
+ DeploySocialDistributedPress.find_each do |deploy|
+ FediblockState.create(site: deploy.site, fediblock: fedipact, aasm_state: 'disabled').tap(&:enable!)
+ end
+ end
+
+ def down
+ fedipact = ActivityPub::Fediblock.find_by(url: 'https://fedipact.online/').delete
+ FediblockState.where(fediblock_id: fedipact.id).delete_all
+ change_column :activity_pub_fediblocks, :download_url, :string, null: false
+ end
+end
diff --git a/db/migrate/20240319144735_add_missing_unique_indexes.rb b/db/migrate/20240319144735_add_missing_unique_indexes.rb
new file mode 100644
index 00000000..2f6ef1aa
--- /dev/null
+++ b/db/migrate/20240319144735_add_missing_unique_indexes.rb
@@ -0,0 +1,48 @@
+# frozen_string_literal: true
+
+# Parece que la sintaxis que veníamos usando para los índices únicos ya
+# no es válida y por eso teníamos objetos duplicados.
+class AddMissingUniqueIndexes < ActiveRecord::Migration[6.1]
+ def up
+ ActivityPub::Object.group(:uri).count.select { |_, v| v > 1 }.each_key do |uri|
+ objects = ActivityPub::Object.where(uri: uri)
+ deleted_ids = objects[1..].map(&:delete).map(&:id)
+
+ ActivityPub.where(object_id: deleted_ids).update_all(object_id: objects.first.id, updated_at: Time.now)
+ end
+
+ ActivityPub::Actor.group(:uri).count.select { |_, v| v > 1 }.each_key do |uri|
+ objects = ActivityPub::Actor.where(uri: uri)
+ deleted_ids = objects[1..].map(&:delete).map(&:id)
+
+ ActivityPub.where(actor_id: deleted_ids).update_all(actor_id: objects.first.id, updated_at: Time.now)
+ ActorModeration.where(actor_id: deleted_ids).update_all(actor_id: objects.first.id, updated_at: Time.now)
+ ActivityPub::Activity.where(actor_id: deleted_ids).update_all(actor_id: objects.first.id, updated_at: Time.now)
+ ActivityPub::RemoteFlag.where(actor_id: deleted_ids).update_all(actor_id: objects.first.id, updated_at: Time.now)
+ end
+
+ ActivityPub::Instance.group(:hostname).count.select { |_, v| v > 1 }.each_key do |hostname|
+ objects = ActivityPub::Instance.where(hostname: hostname)
+ deleted_ids = objects[1..].map(&:delete).map(&:id)
+
+ ActivityPub.where(instance_id: deleted_ids).update_all(instance_id: objects.first.id, updated_at: Time.now)
+ InstanceModeration.where(instance_id: deleted_ids).update_all(instance_id: objects.first.id, updated_at: Time.now)
+ ActivityPub::Actor.where(instance_id: deleted_ids).update_all(instance_id: objects.first.id, updated_at: Time.now)
+ end
+
+ remove_index :activity_pub_instances, :hostname
+ remove_index :activity_pub_actors, :uri
+ add_index :activity_pub_instances, :hostname, unique: true
+ add_index :activity_pub_objects, :uri, unique: true
+ add_index :activity_pub_actors, :uri, unique: true
+ end
+
+ def down
+ remove_index :activity_pub_instances, :hostname, unique: true
+ remove_index :activity_pub_objects, :uri, unique: true
+ remove_index :activity_pub_actors, :uri, unique: true
+ add_index :activity_pub_instances, :hostname
+ add_index :activity_pub_objects, :uri
+ add_index :activity_pub_actors, :uri
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
deleted file mode 100644
index fd82d447..00000000
--- a/db/schema.rb
+++ /dev/null
@@ -1,400 +0,0 @@
-# This file is auto-generated from the current state of the database. Instead
-# of editing this file, please use the migrations feature of Active Record to
-# incrementally modify your database, and then regenerate this schema definition.
-#
-# This file is the source Rails uses to define your schema when running `bin/rails
-# db:schema:load`. When creating a new database, `bin/rails db:schema:load` tends to
-# be faster and is potentially less error prone than running all of your
-# migrations from scratch. Old migrations may fail to apply correctly if those
-# migrations use external dependencies or application code.
-#
-# It's strongly recommended that you check this file into your version control system.
-
-ActiveRecord::Schema.define(version: 2023_04_15_153231) do
-
- # These are extensions that must be enabled in order to support this database
- enable_extension "pg_trgm"
- enable_extension "pgcrypto"
- enable_extension "plpgsql"
-
- create_table "access_logs", id: :uuid, default: nil, force: :cascade do |t|
- t.string "host"
- t.float "msec"
- t.string "server_protocol"
- t.string "request_method"
- t.string "request_completion"
- t.string "uri"
- t.string "query_string"
- t.integer "status"
- t.string "sent_http_content_type"
- t.string "sent_http_content_encoding"
- t.string "sent_http_etag"
- t.string "sent_http_last_modified"
- t.string "http_accept"
- t.string "http_accept_encoding"
- t.string "http_accept_language"
- t.string "http_pragma"
- t.string "http_cache_control"
- t.string "http_if_none_match"
- t.string "http_dnt"
- t.string "http_user_agent"
- t.string "http_origin"
- t.float "request_time"
- t.integer "bytes_sent"
- t.integer "body_bytes_sent"
- t.integer "request_length"
- t.string "http_connection"
- t.string "pipe"
- t.integer "connection_requests"
- t.string "geoip2_data_country_name"
- t.string "geoip2_data_city_name"
- t.string "ssl_server_name"
- t.string "ssl_protocol"
- t.string "ssl_early_data"
- t.string "ssl_session_reused"
- t.string "ssl_curves"
- t.string "ssl_ciphers"
- t.string "ssl_cipher"
- t.string "sent_http_x_xss_protection"
- t.string "sent_http_x_frame_options"
- t.string "sent_http_x_content_type_options"
- t.string "sent_http_strict_transport_security"
- t.string "nginx_version"
- t.integer "pid"
- t.string "remote_user"
- t.boolean "crawler", default: false
- t.string "http_referer"
- t.datetime "created_at", precision: 6
- t.index ["geoip2_data_city_name"], name: "index_access_logs_on_geoip2_data_city_name"
- t.index ["geoip2_data_country_name"], name: "index_access_logs_on_geoip2_data_country_name"
- t.index ["host"], name: "index_access_logs_on_host"
- t.index ["http_origin"], name: "index_access_logs_on_http_origin"
- t.index ["http_user_agent"], name: "index_access_logs_on_http_user_agent"
- t.index ["status"], name: "index_access_logs_on_status"
- t.index ["uri"], name: "index_access_logs_on_uri"
- end
-
- create_table "action_text_rich_texts", force: :cascade do |t|
- t.string "name", null: false
- t.text "body"
- t.string "record_type", null: false
- t.bigint "record_id", null: false
- t.datetime "created_at", precision: 6, null: false
- t.datetime "updated_at", precision: 6, null: false
- t.index ["record_type", "record_id", "name"], name: "index_action_text_rich_texts_uniqueness", unique: true
- end
-
- create_table "active_storage_attachments", force: :cascade do |t|
- t.string "name", null: false
- t.string "record_type", null: false
- t.bigint "record_id", null: false
- t.bigint "blob_id", null: false
- t.datetime "created_at", null: false
- t.index ["blob_id"], name: "index_active_storage_attachments_on_blob_id"
- t.index ["record_type", "record_id", "name", "blob_id"], name: "index_active_storage_attachments_uniqueness", unique: true
- end
-
- create_table "active_storage_blobs", force: :cascade do |t|
- t.string "key", null: false
- t.string "filename", null: false
- t.string "content_type"
- t.text "metadata"
- t.bigint "byte_size", null: false
- t.string "checksum", null: false
- t.datetime "created_at", null: false
- t.string "service_name", null: false
- t.index ["key"], name: "index_active_storage_blobs_on_key", unique: true
- end
-
- create_table "active_storage_variant_records", force: :cascade do |t|
- t.bigint "blob_id", null: false
- t.string "variation_digest", null: false
- t.index ["blob_id", "variation_digest"], name: "index_active_storage_variant_records_uniqueness", unique: true
- end
-
- create_table "blazer_audits", force: :cascade do |t|
- t.bigint "user_id"
- t.bigint "query_id"
- t.text "statement"
- t.string "data_source"
- t.datetime "created_at"
- t.index ["query_id"], name: "index_blazer_audits_on_query_id"
- t.index ["user_id"], name: "index_blazer_audits_on_user_id"
- end
-
- create_table "blazer_checks", force: :cascade do |t|
- t.bigint "creator_id"
- t.bigint "query_id"
- t.string "state"
- t.string "schedule"
- t.text "emails"
- t.text "slack_channels"
- t.string "check_type"
- t.text "message"
- t.datetime "last_run_at"
- t.datetime "created_at", precision: 6, null: false
- t.datetime "updated_at", precision: 6, null: false
- t.index ["creator_id"], name: "index_blazer_checks_on_creator_id"
- t.index ["query_id"], name: "index_blazer_checks_on_query_id"
- end
-
- create_table "blazer_dashboard_queries", force: :cascade do |t|
- t.bigint "dashboard_id"
- t.bigint "query_id"
- t.integer "position"
- t.datetime "created_at", precision: 6, null: false
- t.datetime "updated_at", precision: 6, null: false
- t.index ["dashboard_id"], name: "index_blazer_dashboard_queries_on_dashboard_id"
- t.index ["query_id"], name: "index_blazer_dashboard_queries_on_query_id"
- end
-
- create_table "blazer_dashboards", force: :cascade do |t|
- t.bigint "creator_id"
- t.text "name"
- t.datetime "created_at", precision: 6, null: false
- t.datetime "updated_at", precision: 6, null: false
- t.index ["creator_id"], name: "index_blazer_dashboards_on_creator_id"
- end
-
- create_table "blazer_queries", force: :cascade do |t|
- t.bigint "creator_id"
- t.string "name"
- t.text "description"
- t.text "statement"
- t.string "data_source"
- t.datetime "created_at", precision: 6, null: false
- t.datetime "updated_at", precision: 6, null: false
- t.index ["creator_id"], name: "index_blazer_queries_on_creator_id"
- end
-
- create_table "build_stats", force: :cascade do |t|
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
- t.bigint "deploy_id"
- t.bigint "bytes"
- t.float "seconds"
- t.string "action", null: false
- t.text "log"
- t.boolean "status", default: false
- t.index ["deploy_id"], name: "index_build_stats_on_deploy_id"
- end
-
- create_table "csp_reports", id: :uuid, default: nil, force: :cascade do |t|
- t.datetime "created_at", precision: 6, null: false
- t.datetime "updated_at", precision: 6, null: false
- t.string "disposition"
- t.string "referrer"
- t.string "blocked_uri"
- t.string "document_uri"
- t.string "effective_directive"
- t.string "original_policy"
- t.string "script_sample"
- t.string "status_code"
- t.string "violated_directive"
- t.integer "column_number"
- t.integer "line_number"
- t.string "source_file"
- end
-
- create_table "deploys", force: :cascade do |t|
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
- t.bigint "site_id"
- t.string "type"
- t.text "values"
- t.index ["site_id"], name: "index_deploys_on_site_id"
- t.index ["type"], name: "index_deploys_on_type"
- end
-
- create_table "designs", force: :cascade do |t|
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
- t.string "name"
- t.text "description"
- t.string "gem"
- t.string "url"
- t.string "license"
- t.boolean "disabled", default: false
- t.text "credits"
- t.string "designer_url"
- t.integer "priority"
- end
-
- create_table "indexed_posts", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t|
- t.bigint "site_id"
- t.datetime "created_at", precision: 6, null: false
- t.datetime "updated_at", precision: 6, null: false
- t.string "locale", default: "simple"
- t.string "layout", null: false
- t.string "path", null: false
- t.string "title", default: ""
- t.jsonb "front_matter", default: "{}"
- t.string "content", default: ""
- t.tsvector "indexed_content"
- t.integer "order", default: 0
- t.string "dictionary"
- t.index ["front_matter"], name: "index_indexed_posts_on_front_matter", using: :gin
- t.index ["indexed_content"], name: "index_indexed_posts_on_indexed_content", using: :gin
- t.index ["layout"], name: "index_indexed_posts_on_layout"
- t.index ["locale"], name: "index_indexed_posts_on_locale"
- t.index ["site_id"], name: "index_indexed_posts_on_site_id"
- end
-
- create_table "licencias", force: :cascade do |t|
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
- t.string "name"
- t.text "description"
- t.text "deed"
- t.string "url"
- t.string "icons"
- end
-
- create_table "log_entries", force: :cascade do |t|
- t.datetime "created_at", precision: 6, null: false
- t.datetime "updated_at", precision: 6, null: false
- t.bigint "site_id"
- t.text "text"
- t.boolean "sent", default: false
- t.index ["site_id"], name: "index_log_entries_on_site_id"
- end
-
- create_table "maintenances", force: :cascade do |t|
- t.datetime "created_at", precision: 6, null: false
- t.datetime "updated_at", precision: 6, null: false
- t.text "message"
- t.datetime "estimated_from"
- t.datetime "estimated_to"
- t.boolean "are_we_back", default: false
- end
-
- create_table "mobility_string_translations", force: :cascade do |t|
- t.string "locale", null: false
- t.string "key", null: false
- t.string "value"
- t.string "translatable_type"
- t.bigint "translatable_id"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
- t.index ["translatable_id", "translatable_type", "key"], name: "index_mobility_string_translations_on_translatable_attribute"
- t.index ["translatable_id", "translatable_type", "locale", "key"], name: "index_mobility_string_translations_on_keys", unique: true
- t.index ["translatable_type", "key", "value", "locale"], name: "index_mobility_string_translations_on_query_keys"
- end
-
- create_table "mobility_text_translations", force: :cascade do |t|
- t.string "locale", null: false
- t.string "key", null: false
- t.text "value"
- t.string "translatable_type"
- t.bigint "translatable_id"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
- t.index ["translatable_id", "translatable_type", "key"], name: "index_mobility_text_translations_on_translatable_attribute"
- t.index ["translatable_id", "translatable_type", "locale", "key"], name: "index_mobility_text_translations_on_keys", unique: true
- end
-
- create_table "roles", force: :cascade do |t|
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
- t.bigint "site_id"
- t.bigint "usuarie_id"
- t.string "rol"
- t.boolean "temporal"
- t.index ["site_id", "usuarie_id"], name: "index_roles_on_site_id_and_usuarie_id", unique: true
- t.index ["site_id"], name: "index_roles_on_site_id"
- t.index ["usuarie_id"], name: "index_roles_on_usuarie_id"
- end
-
- create_table "rollups", force: :cascade do |t|
- t.string "name", null: false
- t.string "interval", null: false
- t.datetime "time", null: false
- t.jsonb "dimensions", default: {}, null: false
- t.float "value"
- t.index ["name", "interval", "time", "dimensions"], name: "index_rollups_on_name_and_interval_and_time_and_dimensions", unique: true
- end
-
- create_table "sites", force: :cascade do |t|
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
- t.string "name"
- t.bigint "design_id"
- t.bigint "licencia_id"
- t.string "status", default: "waiting"
- t.text "description"
- t.string "title"
- t.boolean "colaboracion_anonima", default: false
- t.boolean "contact", default: false
- t.string "private_key_ciphertext"
- t.boolean "acepta_invitades", default: false
- t.string "tienda_api_key_ciphertext", default: ""
- t.string "tienda_url", default: ""
- t.string "api_key_ciphertext"
- t.index ["design_id"], name: "index_sites_on_design_id"
- t.index ["licencia_id"], name: "index_sites_on_licencia_id"
- t.index ["name"], name: "index_sites_on_name", unique: true
- end
-
- create_table "stats", force: :cascade do |t|
- t.datetime "created_at", precision: 6, null: false
- t.datetime "updated_at", precision: 6, null: false
- t.bigint "site_id"
- t.string "name", null: false
- t.index ["name"], name: "index_stats_on_name", using: :hash
- t.index ["site_id"], name: "index_stats_on_site_id"
- end
-
- create_table "usuaries", force: :cascade do |t|
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
- t.string "email", default: "", null: false
- t.string "encrypted_password", default: "", null: false
- t.string "reset_password_token"
- t.datetime "reset_password_sent_at"
- t.datetime "remember_created_at"
- t.string "confirmation_token"
- t.datetime "confirmed_at"
- t.datetime "confirmation_sent_at"
- t.string "unconfirmed_email"
- t.integer "failed_attempts", default: 0, null: false
- t.string "unlock_token"
- t.datetime "locked_at"
- t.boolean "acepta_politicas_de_privacidad", default: false
- t.string "invitation_token"
- t.datetime "invitation_created_at"
- t.datetime "invitation_sent_at"
- t.datetime "invitation_accepted_at"
- t.integer "invitation_limit"
- t.string "invited_by_type"
- t.bigint "invited_by_id"
- t.integer "invitations_count", default: 0
- t.string "lang", default: "es"
- t.index ["confirmation_token"], name: "index_usuaries_on_confirmation_token", unique: true
- t.index ["email"], name: "index_usuaries_on_email", unique: true
- t.index ["invitation_token"], name: "index_usuaries_on_invitation_token", unique: true
- t.index ["invitations_count"], name: "index_usuaries_on_invitations_count"
- t.index ["invited_by_id"], name: "index_usuaries_on_invited_by_id"
- t.index ["invited_by_type", "invited_by_id"], name: "index_usuaries_on_invited_by"
- t.index ["reset_password_token"], name: "index_usuaries_on_reset_password_token", unique: true
- t.index ["unlock_token"], name: "index_usuaries_on_unlock_token", unique: true
- end
-
- add_foreign_key "active_storage_attachments", "active_storage_blobs", column: "blob_id"
- add_foreign_key "active_storage_variant_records", "active_storage_blobs", column: "blob_id"
-
- create_trigger("indexed_posts_before_insert_update_row_tr", :compatibility => 1).
- on("indexed_posts").
- before(:insert, :update) do
- <<-SQL_ACTIONS
-new.indexed_content := to_tsvector(('pg_catalog.' || new.dictionary)::regconfig, coalesce(new.title, '') || '
-' || coalesce(new.content,''));
- SQL_ACTIONS
- end
-
- create_trigger("access_logs_before_insert_row_tr", :compatibility => 1).
- on("access_logs").
- before(:insert) do
- "new.created_at := to_timestamp(new.msec);"
- end
-
-end
diff --git a/db/seeds.rb b/db/seeds.rb
index b9ef96a1..41474883 100644
--- a/db/seeds.rb
+++ b/db/seeds.rb
@@ -20,10 +20,16 @@ if CodeOfConduct.count.zero?
YAML.safe_load(File.read('db/seeds/codes_of_conduct.yml')).each do |coc|
CodeOfConduct.new(**coc).save!
end
-end
+end
if PrivacyPolicy.count.zero?
YAML.safe_load(File.read('db/seeds/privacy_policies.yml')).each do |pp|
PrivacyPolicy.new(**pp).save!
end
-end
+end
+
+YAML.safe_load(File.read('db/seeds/activity_pub/fediblocks.yml')).each do |fediblock|
+ ActivityPub::Fediblock.find_or_create_by(id: fediblock['id']).tap do |f|
+ f.update(**fediblock)
+ end
+end
diff --git a/db/seeds/activity_pub/fediblocks.yml b/db/seeds/activity_pub/fediblocks.yml
new file mode 100644
index 00000000..35fe38cd
--- /dev/null
+++ b/db/seeds/activity_pub/fediblocks.yml
@@ -0,0 +1,16 @@
+---
+- title: "Gardenfence"
+ url: "https://gardenfence.github.io/"
+ download_url: "https://github.com/gardenfence/blocklist/raw/main/gardenfence-fediblocksync.csv"
+ format: "fediblock"
+ id: "9046789a-5de8-4b16-beed-796060f8f3cc"
+- title: "Oliphant Tier 0"
+ url: "https://writer.oliphant.social/oliphant/the-oliphant-social-blocklist"
+ download_url: "https://codeberg.org/oliphant/blocklists/raw/branch/main/blocklists/mastodon/seirdy-tier0.csv"
+ format: "mastodon"
+ id: "fc1efcb8-7e68-4a76-ae9e-0c447752b12b"
+- title: "The Bad Space (90%)"
+ url: "https://tweaking.thebad.space/exports"
+ download_url: "https://tweaking.thebad.space/exports/mastodon/90"
+ format: "fediblock"
+ id: "5dd6705a-c28f-4912-9456-07b0d4983108"
diff --git a/db/seeds/designs.yml b/db/seeds/designs.yml
index a04c99c1..2b7b6492 100644
--- a/db/seeds/designs.yml
+++ b/db/seeds/designs.yml
@@ -18,7 +18,7 @@
- name_en: 'Minima'
name_es: 'Mínima'
gem: 'sutty-minima'
- url: 'https://0xacab.org/sutty/jekyll/minima'
+ url: 'https://minima.sutty.nl/'
description_en: "Sutty Minima is based on [Minima](https://jekyll.github.io/minima/), a blog-focused theme for Jekyll."
description_es: 'Sutty Mínima es una plantilla para blogs basada en [Mínima](https://jekyll.github.io/minima/).'
license: 'https://0xacab.org/sutty/jekyll/minima/-/blob/master/LICENSE.txt'
@@ -75,6 +75,14 @@
credits_en: 'This template was made in collaboration with Librenauta in 15 hours!'
designer_url: 'https://copiona.com/donaunbit/'
priority: '70'
+- name_en: 'Magazine'
+ name_es: 'Revista'
+ gem: 'compost-jekyll-theme'
+ url: 'https://two.compost.digital/'
+ description_en: 'A theme to create multimedia publications, based in COMPOST magazine'
+ description_es: 'Plantilla para crear publicaciones multimedia, basada en COMPOST magazine'
+ license: 'https://0xacab.org/sutty/jekyll/compost-jekyll-theme/-/blob/no-masters/LICENSE.txt'
+ priority: '40'
- name_en: 'Resource toolkit'
name_es: 'Recursero'
gem: 'recursero-jekyll-theme'
@@ -83,6 +91,14 @@
description_en: "We're working towards adding more themes for you to use. [Contact us!](https://sutty.nl/en/#contact)"
description_es: "Estamos trabajando para que puedas tener más diseños. [¡Escribinos!](https://sutty.nl/#contacto)"
priority: '3'
+- name_en: 'Worker-recovered factory'
+ name_es: 'Empresa recuperada'
+ gem: 'empresa-recuperada-jekyll-theme'
+ url: 'https://empresa-recuperada.sutty.nl/'
+ disabled: true
+ description_en: "A template for [empresas recuperadas](https://en.wikipedia.org/wiki/Workers%27_self-management#Empresas_recuperadas_movement). We're working towards adding more themes for you to use. [Contact us!](https://sutty.nl/en/#contact)"
+ description_es: "Estamos trabajando para que puedas tener más diseños. [¡Escribinos!](https://sutty.nl/#contacto)"
+ priority: '3'
- name_en: 'More themes'
name_es: 'Más plantillas'
gem: 'sutty-theme-own'
diff --git a/db/structure.sql b/db/structure.sql
new file mode 100644
index 00000000..21cf04d0
--- /dev/null
+++ b/db/structure.sql
@@ -0,0 +1,2724 @@
+SET statement_timeout = 0;
+SET lock_timeout = 0;
+SET idle_in_transaction_session_timeout = 0;
+SET client_encoding = 'UTF8';
+SET standard_conforming_strings = on;
+SELECT pg_catalog.set_config('search_path', '', false);
+SET check_function_bodies = false;
+SET xmloption = content;
+SET client_min_messages = warning;
+SET row_security = off;
+
+--
+-- Name: pg_trgm; Type: EXTENSION; Schema: -; Owner: -
+--
+
+CREATE EXTENSION IF NOT EXISTS pg_trgm WITH SCHEMA public;
+
+
+--
+-- Name: EXTENSION pg_trgm; Type: COMMENT; Schema: -; Owner: -
+--
+
+COMMENT ON EXTENSION pg_trgm IS 'text similarity measurement and index searching based on trigrams';
+
+
+--
+-- Name: pgcrypto; Type: EXTENSION; Schema: -; Owner: -
+--
+
+CREATE EXTENSION IF NOT EXISTS pgcrypto WITH SCHEMA public;
+
+
+--
+-- Name: EXTENSION pgcrypto; Type: COMMENT; Schema: -; Owner: -
+--
+
+COMMENT ON EXTENSION pgcrypto IS 'cryptographic functions';
+
+
+--
+-- Name: access_logs_before_insert_row_tr(); Type: FUNCTION; Schema: public; Owner: -
+--
+
+CREATE FUNCTION public.access_logs_before_insert_row_tr() RETURNS trigger
+ LANGUAGE plpgsql
+ AS $$
+BEGIN
+ new.created_at := to_timestamp(new.msec);
+ RETURN NEW;
+END;
+$$;
+
+
+--
+-- Name: indexed_posts_before_insert_update_row_tr(); Type: FUNCTION; Schema: public; Owner: -
+--
+
+CREATE FUNCTION public.indexed_posts_before_insert_update_row_tr() RETURNS trigger
+ LANGUAGE plpgsql
+ AS $$
+BEGIN
+ new.indexed_content := to_tsvector(('pg_catalog.' || new.dictionary)::regconfig, coalesce(new.title, '') || '
+ ' || coalesce(new.content,''));
+ RETURN NEW;
+END;
+$$;
+
+
+--
+-- Name: que_validate_tags(jsonb); Type: FUNCTION; Schema: public; Owner: -
+--
+
+CREATE FUNCTION public.que_validate_tags(tags_array jsonb) RETURNS boolean
+ LANGUAGE sql
+ AS $$
+ SELECT bool_and(
+ jsonb_typeof(value) = 'string'
+ AND
+ char_length(value::text) <= 100
+ )
+ FROM jsonb_array_elements(tags_array)
+$$;
+
+
+SET default_tablespace = '';
+
+SET default_table_access_method = heap;
+
+--
+-- Name: que_jobs; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.que_jobs (
+ priority smallint DEFAULT 100 NOT NULL,
+ run_at timestamp with time zone DEFAULT now() NOT NULL,
+ id bigint NOT NULL,
+ job_class text NOT NULL,
+ error_count integer DEFAULT 0 NOT NULL,
+ last_error_message text,
+ queue text DEFAULT 'default'::text NOT NULL,
+ last_error_backtrace text,
+ finished_at timestamp with time zone,
+ expired_at timestamp with time zone,
+ args jsonb DEFAULT '[]'::jsonb NOT NULL,
+ data jsonb DEFAULT '{}'::jsonb NOT NULL,
+ job_schema_version integer NOT NULL,
+ kwargs jsonb DEFAULT '{}'::jsonb NOT NULL,
+ CONSTRAINT error_length CHECK (((char_length(last_error_message) <= 500) AND (char_length(last_error_backtrace) <= 10000))),
+ CONSTRAINT job_class_length CHECK ((char_length(
+CASE job_class
+ WHEN 'ActiveJob::QueueAdapters::QueAdapter::JobWrapper'::text THEN ((args -> 0) ->> 'job_class'::text)
+ ELSE job_class
+END) <= 200)),
+ CONSTRAINT queue_length CHECK ((char_length(queue) <= 100)),
+ CONSTRAINT valid_args CHECK ((jsonb_typeof(args) = 'array'::text)),
+ CONSTRAINT valid_data CHECK (((jsonb_typeof(data) = 'object'::text) AND ((NOT (data ? 'tags'::text)) OR ((jsonb_typeof((data -> 'tags'::text)) = 'array'::text) AND (jsonb_array_length((data -> 'tags'::text)) <= 5) AND public.que_validate_tags((data -> 'tags'::text))))))
+)
+WITH (fillfactor='90');
+
+
+--
+-- Name: TABLE que_jobs; Type: COMMENT; Schema: public; Owner: -
+--
+
+COMMENT ON TABLE public.que_jobs IS '7';
+
+
+--
+-- Name: que_determine_job_state(public.que_jobs); Type: FUNCTION; Schema: public; Owner: -
+--
+
+CREATE FUNCTION public.que_determine_job_state(job public.que_jobs) RETURNS text
+ LANGUAGE sql
+ AS $$
+ SELECT
+ CASE
+ WHEN job.expired_at IS NOT NULL THEN 'expired'
+ WHEN job.finished_at IS NOT NULL THEN 'finished'
+ WHEN job.error_count > 0 THEN 'errored'
+ WHEN job.run_at > CURRENT_TIMESTAMP THEN 'scheduled'
+ ELSE 'ready'
+ END
+$$;
+
+
+--
+-- Name: que_job_notify(); Type: FUNCTION; Schema: public; Owner: -
+--
+
+CREATE FUNCTION public.que_job_notify() RETURNS trigger
+ LANGUAGE plpgsql
+ AS $$
+ DECLARE
+ locker_pid integer;
+ sort_key json;
+ BEGIN
+ -- Don't do anything if the job is scheduled for a future time.
+ IF NEW.run_at IS NOT NULL AND NEW.run_at > now() THEN
+ RETURN null;
+ END IF;
+
+ -- Pick a locker to notify of the job's insertion, weighted by their number
+ -- of workers. Should bounce pseudorandomly between lockers on each
+ -- invocation, hence the md5-ordering, but still touch each one equally,
+ -- hence the modulo using the job_id.
+ SELECT pid
+ INTO locker_pid
+ FROM (
+ SELECT *, last_value(row_number) OVER () + 1 AS count
+ FROM (
+ SELECT *, row_number() OVER () - 1 AS row_number
+ FROM (
+ SELECT *
+ FROM public.que_lockers ql, generate_series(1, ql.worker_count) AS id
+ WHERE
+ listening AND
+ queues @> ARRAY[NEW.queue] AND
+ ql.job_schema_version = NEW.job_schema_version
+ ORDER BY md5(pid::text || id::text)
+ ) t1
+ ) t2
+ ) t3
+ WHERE NEW.id % count = row_number;
+
+ IF locker_pid IS NOT NULL THEN
+ -- There's a size limit to what can be broadcast via LISTEN/NOTIFY, so
+ -- rather than throw errors when someone enqueues a big job, just
+ -- broadcast the most pertinent information, and let the locker query for
+ -- the record after it's taken the lock. The worker will have to hit the
+ -- DB in order to make sure the job is still visible anyway.
+ SELECT row_to_json(t)
+ INTO sort_key
+ FROM (
+ SELECT
+ 'job_available' AS message_type,
+ NEW.queue AS queue,
+ NEW.priority AS priority,
+ NEW.id AS id,
+ -- Make sure we output timestamps as UTC ISO 8601
+ to_char(NEW.run_at AT TIME ZONE 'UTC', 'YYYY-MM-DD"T"HH24:MI:SS.US"Z"') AS run_at
+ ) t;
+
+ PERFORM pg_notify('que_listener_' || locker_pid::text, sort_key::text);
+ END IF;
+
+ RETURN null;
+ END
+$$;
+
+
+--
+-- Name: que_state_notify(); Type: FUNCTION; Schema: public; Owner: -
+--
+
+CREATE FUNCTION public.que_state_notify() RETURNS trigger
+ LANGUAGE plpgsql
+ AS $$
+ DECLARE
+ row record;
+ message json;
+ previous_state text;
+ current_state text;
+ BEGIN
+ IF TG_OP = 'INSERT' THEN
+ previous_state := 'nonexistent';
+ current_state := public.que_determine_job_state(NEW);
+ row := NEW;
+ ELSIF TG_OP = 'DELETE' THEN
+ previous_state := public.que_determine_job_state(OLD);
+ current_state := 'nonexistent';
+ row := OLD;
+ ELSIF TG_OP = 'UPDATE' THEN
+ previous_state := public.que_determine_job_state(OLD);
+ current_state := public.que_determine_job_state(NEW);
+
+ -- If the state didn't change, short-circuit.
+ IF previous_state = current_state THEN
+ RETURN null;
+ END IF;
+
+ row := NEW;
+ ELSE
+ RAISE EXCEPTION 'Unrecognized TG_OP: %', TG_OP;
+ END IF;
+
+ SELECT row_to_json(t)
+ INTO message
+ FROM (
+ SELECT
+ 'job_change' AS message_type,
+ row.id AS id,
+ row.queue AS queue,
+
+ coalesce(row.data->'tags', '[]'::jsonb) AS tags,
+
+ to_char(row.run_at AT TIME ZONE 'UTC', 'YYYY-MM-DD"T"HH24:MI:SS.US"Z"') AS run_at,
+ to_char(now() AT TIME ZONE 'UTC', 'YYYY-MM-DD"T"HH24:MI:SS.US"Z"') AS time,
+
+ CASE row.job_class
+ WHEN 'ActiveJob::QueueAdapters::QueAdapter::JobWrapper' THEN
+ coalesce(
+ row.args->0->>'job_class',
+ 'ActiveJob::QueueAdapters::QueAdapter::JobWrapper'
+ )
+ ELSE
+ row.job_class
+ END AS job_class,
+
+ previous_state AS previous_state,
+ current_state AS current_state
+ ) t;
+
+ PERFORM pg_notify('que_state', message::text);
+
+ RETURN null;
+ END
+$$;
+
+
+--
+-- Name: access_logs; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.access_logs (
+ id uuid DEFAULT public.gen_random_uuid() NOT NULL,
+ host character varying,
+ msec double precision,
+ server_protocol character varying,
+ request_method character varying,
+ request_completion character varying,
+ uri character varying,
+ query_string character varying,
+ status integer,
+ sent_http_content_type character varying,
+ sent_http_content_encoding character varying,
+ sent_http_etag character varying,
+ sent_http_last_modified character varying,
+ http_accept character varying,
+ http_accept_encoding character varying,
+ http_accept_language character varying,
+ http_pragma character varying,
+ http_cache_control character varying,
+ http_if_none_match character varying,
+ http_dnt character varying,
+ http_user_agent character varying,
+ http_origin character varying,
+ request_time double precision,
+ bytes_sent integer,
+ body_bytes_sent integer,
+ request_length integer,
+ http_connection character varying,
+ pipe character varying,
+ connection_requests integer,
+ geoip2_data_country_name character varying,
+ geoip2_data_city_name character varying,
+ ssl_server_name character varying,
+ ssl_protocol character varying,
+ ssl_early_data character varying,
+ ssl_session_reused character varying,
+ ssl_curves character varying,
+ ssl_ciphers character varying,
+ ssl_cipher character varying,
+ sent_http_x_xss_protection character varying,
+ sent_http_x_frame_options character varying,
+ sent_http_x_content_type_options character varying,
+ sent_http_strict_transport_security character varying,
+ nginx_version character varying,
+ pid integer,
+ remote_user character varying,
+ crawler boolean DEFAULT false,
+ http_referer character varying,
+ created_at timestamp(6) without time zone,
+ request_uri character varying DEFAULT ''::character varying,
+ datacenter_co2 numeric,
+ network_co2 numeric,
+ consumer_device_co2 numeric,
+ production_co2 numeric,
+ total_co2 numeric,
+ node character varying
+);
+
+
+--
+-- Name: action_text_rich_texts; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.action_text_rich_texts (
+ id bigint NOT NULL,
+ name character varying NOT NULL,
+ body text,
+ record_type character varying NOT NULL,
+ record_id integer NOT NULL,
+ created_at timestamp(6) without time zone NOT NULL,
+ updated_at timestamp(6) without time zone NOT NULL
+);
+
+
+--
+-- Name: action_text_rich_texts_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+CREATE SEQUENCE public.action_text_rich_texts_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+--
+-- Name: action_text_rich_texts_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
+--
+
+ALTER SEQUENCE public.action_text_rich_texts_id_seq OWNED BY public.action_text_rich_texts.id;
+
+
+--
+-- Name: active_storage_attachments; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.active_storage_attachments (
+ id bigint NOT NULL,
+ name character varying NOT NULL,
+ record_type character varying NOT NULL,
+ record_id integer NOT NULL,
+ blob_id integer NOT NULL,
+ created_at timestamp without time zone NOT NULL
+);
+
+
+--
+-- Name: active_storage_attachments_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+CREATE SEQUENCE public.active_storage_attachments_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+--
+-- Name: active_storage_attachments_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
+--
+
+ALTER SEQUENCE public.active_storage_attachments_id_seq OWNED BY public.active_storage_attachments.id;
+
+
+--
+-- Name: active_storage_blobs; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.active_storage_blobs (
+ id bigint NOT NULL,
+ key character varying NOT NULL,
+ filename character varying NOT NULL,
+ content_type character varying,
+ metadata text,
+ byte_size bigint NOT NULL,
+ checksum character varying NOT NULL,
+ created_at timestamp without time zone NOT NULL,
+ service_name character varying NOT NULL
+);
+
+
+--
+-- Name: active_storage_blobs_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+CREATE SEQUENCE public.active_storage_blobs_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+--
+-- Name: active_storage_blobs_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
+--
+
+ALTER SEQUENCE public.active_storage_blobs_id_seq OWNED BY public.active_storage_blobs.id;
+
+
+--
+-- Name: active_storage_variant_records; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.active_storage_variant_records (
+ id bigint NOT NULL,
+ blob_id bigint NOT NULL,
+ variation_digest character varying NOT NULL
+);
+
+
+--
+-- Name: active_storage_variant_records_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+CREATE SEQUENCE public.active_storage_variant_records_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+--
+-- Name: active_storage_variant_records_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
+--
+
+ALTER SEQUENCE public.active_storage_variant_records_id_seq OWNED BY public.active_storage_variant_records.id;
+
+
+--
+-- Name: activity_pub_activities; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.activity_pub_activities (
+ id uuid DEFAULT gen_random_uuid() NOT NULL,
+ created_at timestamp(6) without time zone NOT NULL,
+ updated_at timestamp(6) without time zone NOT NULL,
+ activity_pub_id uuid NOT NULL,
+ type character varying NOT NULL,
+ uri character varying NOT NULL,
+ content jsonb DEFAULT '{}'::jsonb,
+ actor_id uuid
+);
+
+
+--
+-- Name: activity_pub_actors; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.activity_pub_actors (
+ id uuid DEFAULT gen_random_uuid() NOT NULL,
+ created_at timestamp(6) without time zone NOT NULL,
+ updated_at timestamp(6) without time zone NOT NULL,
+ instance_id uuid NOT NULL,
+ uri character varying NOT NULL,
+ mention character varying
+);
+
+
+--
+-- Name: activity_pub_fediblocks; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.activity_pub_fediblocks (
+ id uuid DEFAULT gen_random_uuid() NOT NULL,
+ created_at timestamp(6) without time zone NOT NULL,
+ updated_at timestamp(6) without time zone NOT NULL,
+ title character varying NOT NULL,
+ url character varying NOT NULL,
+ download_url character varying,
+ format character varying NOT NULL,
+ hostnames jsonb DEFAULT '[]'::jsonb
+);
+
+
+--
+-- Name: activity_pub_instances; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.activity_pub_instances (
+ id uuid DEFAULT gen_random_uuid() NOT NULL,
+ created_at timestamp(6) without time zone NOT NULL,
+ updated_at timestamp(6) without time zone NOT NULL,
+ hostname character varying NOT NULL,
+ aasm_state character varying NOT NULL,
+ content jsonb DEFAULT '{}'::jsonb
+);
+
+
+--
+-- Name: activity_pub_objects; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.activity_pub_objects (
+ id uuid DEFAULT gen_random_uuid() NOT NULL,
+ created_at timestamp(6) without time zone NOT NULL,
+ updated_at timestamp(6) without time zone NOT NULL,
+ type character varying NOT NULL,
+ uri character varying NOT NULL,
+ content jsonb DEFAULT '{}'::jsonb
+);
+
+
+--
+-- Name: activity_pub_remote_flags; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.activity_pub_remote_flags (
+ id uuid DEFAULT gen_random_uuid() NOT NULL,
+ created_at timestamp(6) without time zone NOT NULL,
+ updated_at timestamp(6) without time zone NOT NULL,
+ site_id bigint,
+ actor_id uuid,
+ message text,
+ content jsonb,
+ aasm_state character varying DEFAULT 'waiting'::character varying NOT NULL
+);
+
+
+--
+-- Name: activity_pubs; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.activity_pubs (
+ id uuid DEFAULT gen_random_uuid() NOT NULL,
+ created_at timestamp(6) without time zone NOT NULL,
+ updated_at timestamp(6) without time zone NOT NULL,
+ site_id bigint NOT NULL,
+ object_id uuid NOT NULL,
+ object_type character varying NOT NULL,
+ aasm_state character varying NOT NULL,
+ instance_id uuid,
+ actor_id uuid,
+ remote_flag_id uuid
+);
+
+
+--
+-- Name: actor_moderations; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.actor_moderations (
+ id uuid DEFAULT gen_random_uuid() NOT NULL,
+ created_at timestamp(6) without time zone NOT NULL,
+ updated_at timestamp(6) without time zone NOT NULL,
+ site_id bigint,
+ actor_id uuid,
+ aasm_state character varying NOT NULL,
+ remote_flag_id uuid
+);
+
+
+--
+-- Name: ar_internal_metadata; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.ar_internal_metadata (
+ key character varying NOT NULL,
+ value character varying,
+ created_at timestamp(6) without time zone NOT NULL,
+ updated_at timestamp(6) without time zone NOT NULL
+);
+
+
+--
+-- Name: blazer_audits; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.blazer_audits (
+ id bigint NOT NULL,
+ user_id bigint,
+ query_id bigint,
+ statement text,
+ data_source character varying,
+ created_at timestamp without time zone
+);
+
+
+--
+-- Name: blazer_audits_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+CREATE SEQUENCE public.blazer_audits_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+--
+-- Name: blazer_audits_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
+--
+
+ALTER SEQUENCE public.blazer_audits_id_seq OWNED BY public.blazer_audits.id;
+
+
+--
+-- Name: blazer_checks; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.blazer_checks (
+ id bigint NOT NULL,
+ creator_id bigint,
+ query_id bigint,
+ state character varying,
+ schedule character varying,
+ emails text,
+ slack_channels text,
+ check_type character varying,
+ message text,
+ last_run_at timestamp without time zone,
+ created_at timestamp(6) without time zone NOT NULL,
+ updated_at timestamp(6) without time zone NOT NULL
+);
+
+
+--
+-- Name: blazer_checks_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+CREATE SEQUENCE public.blazer_checks_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+--
+-- Name: blazer_checks_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
+--
+
+ALTER SEQUENCE public.blazer_checks_id_seq OWNED BY public.blazer_checks.id;
+
+
+--
+-- Name: blazer_dashboard_queries; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.blazer_dashboard_queries (
+ id bigint NOT NULL,
+ dashboard_id bigint,
+ query_id bigint,
+ "position" integer,
+ created_at timestamp(6) without time zone NOT NULL,
+ updated_at timestamp(6) without time zone NOT NULL
+);
+
+
+--
+-- Name: blazer_dashboard_queries_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+CREATE SEQUENCE public.blazer_dashboard_queries_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+--
+-- Name: blazer_dashboard_queries_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
+--
+
+ALTER SEQUENCE public.blazer_dashboard_queries_id_seq OWNED BY public.blazer_dashboard_queries.id;
+
+
+--
+-- Name: blazer_dashboards; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.blazer_dashboards (
+ id bigint NOT NULL,
+ creator_id bigint,
+ name text,
+ created_at timestamp(6) without time zone NOT NULL,
+ updated_at timestamp(6) without time zone NOT NULL
+);
+
+
+--
+-- Name: blazer_dashboards_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+CREATE SEQUENCE public.blazer_dashboards_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+--
+-- Name: blazer_dashboards_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
+--
+
+ALTER SEQUENCE public.blazer_dashboards_id_seq OWNED BY public.blazer_dashboards.id;
+
+
+--
+-- Name: blazer_queries; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.blazer_queries (
+ id bigint NOT NULL,
+ creator_id bigint,
+ name character varying,
+ description text,
+ statement text,
+ data_source character varying,
+ created_at timestamp(6) without time zone NOT NULL,
+ updated_at timestamp(6) without time zone NOT NULL
+);
+
+
+--
+-- Name: blazer_queries_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+CREATE SEQUENCE public.blazer_queries_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+--
+-- Name: blazer_queries_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
+--
+
+ALTER SEQUENCE public.blazer_queries_id_seq OWNED BY public.blazer_queries.id;
+
+
+--
+-- Name: build_stats; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.build_stats (
+ id bigint NOT NULL,
+ created_at timestamp without time zone NOT NULL,
+ updated_at timestamp without time zone NOT NULL,
+ deploy_id integer,
+ bytes bigint,
+ seconds double precision,
+ action character varying NOT NULL,
+ log text,
+ status boolean DEFAULT false
+);
+
+
+--
+-- Name: build_stats_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+CREATE SEQUENCE public.build_stats_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+--
+-- Name: build_stats_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
+--
+
+ALTER SEQUENCE public.build_stats_id_seq OWNED BY public.build_stats.id;
+
+
+--
+-- Name: codes_of_conduct; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.codes_of_conduct (
+ id bigint NOT NULL,
+ created_at timestamp(6) without time zone NOT NULL,
+ updated_at timestamp(6) without time zone NOT NULL,
+ title character varying,
+ description text,
+ content text
+);
+
+
+--
+-- Name: codes_of_conduct_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+CREATE SEQUENCE public.codes_of_conduct_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+--
+-- Name: codes_of_conduct_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
+--
+
+ALTER SEQUENCE public.codes_of_conduct_id_seq OWNED BY public.codes_of_conduct.id;
+
+
+--
+-- Name: csp_reports; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.csp_reports (
+ id uuid DEFAULT public.gen_random_uuid() NOT NULL,
+ created_at timestamp(6) without time zone NOT NULL,
+ updated_at timestamp(6) without time zone NOT NULL,
+ disposition character varying,
+ referrer character varying,
+ blocked_uri character varying,
+ document_uri character varying,
+ effective_directive character varying,
+ original_policy character varying,
+ script_sample character varying,
+ status_code character varying,
+ violated_directive character varying,
+ column_number integer,
+ line_number integer,
+ source_file character varying
+);
+
+
+--
+-- Name: deploys; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.deploys (
+ id bigint NOT NULL,
+ created_at timestamp without time zone NOT NULL,
+ updated_at timestamp without time zone NOT NULL,
+ site_id integer,
+ type character varying,
+ "values" text,
+ rol_id integer
+);
+
+
+--
+-- Name: deploys_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+CREATE SEQUENCE public.deploys_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+--
+-- Name: deploys_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
+--
+
+ALTER SEQUENCE public.deploys_id_seq OWNED BY public.deploys.id;
+
+
+--
+-- Name: designs; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.designs (
+ id bigint NOT NULL,
+ created_at timestamp without time zone NOT NULL,
+ updated_at timestamp without time zone NOT NULL,
+ name character varying,
+ description text,
+ gem character varying,
+ url character varying,
+ license character varying,
+ disabled boolean DEFAULT false,
+ credits text,
+ designer_url character varying,
+ priority integer
+);
+
+
+--
+-- Name: designs_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+CREATE SEQUENCE public.designs_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+--
+-- Name: designs_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
+--
+
+ALTER SEQUENCE public.designs_id_seq OWNED BY public.designs.id;
+
+
+--
+-- Name: distributed_press_publishers; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.distributed_press_publishers (
+ id bigint NOT NULL,
+ created_at timestamp(6) without time zone NOT NULL,
+ updated_at timestamp(6) without time zone NOT NULL,
+ instance character varying,
+ token_ciphertext text NOT NULL,
+ expires_at timestamp without time zone
+);
+
+
+--
+-- Name: distributed_press_publishers_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+CREATE SEQUENCE public.distributed_press_publishers_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+--
+-- Name: distributed_press_publishers_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
+--
+
+ALTER SEQUENCE public.distributed_press_publishers_id_seq OWNED BY public.distributed_press_publishers.id;
+
+
+--
+-- Name: fediblock_states; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.fediblock_states (
+ id uuid DEFAULT gen_random_uuid() NOT NULL,
+ created_at timestamp(6) without time zone NOT NULL,
+ updated_at timestamp(6) without time zone NOT NULL,
+ site_id bigint,
+ fediblock_id uuid,
+ aasm_state character varying
+);
+
+
+--
+-- Name: indexed_posts; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.indexed_posts (
+ id uuid DEFAULT public.gen_random_uuid() NOT NULL,
+ site_id bigint,
+ created_at timestamp(6) without time zone NOT NULL,
+ updated_at timestamp(6) without time zone NOT NULL,
+ locale character varying DEFAULT 'simple'::character varying,
+ layout character varying NOT NULL,
+ path character varying NOT NULL,
+ title character varying DEFAULT ''::character varying,
+ front_matter jsonb DEFAULT '"{}"'::jsonb,
+ content character varying DEFAULT ''::character varying,
+ indexed_content tsvector,
+ "order" integer DEFAULT 0,
+ dictionary character varying,
+ post_id uuid
+);
+
+
+--
+-- Name: instance_moderations; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.instance_moderations (
+ id bigint NOT NULL,
+ created_at timestamp(6) without time zone NOT NULL,
+ updated_at timestamp(6) without time zone NOT NULL,
+ site_id bigint,
+ instance_id uuid,
+ aasm_state character varying DEFAULT 'paused'::character varying NOT NULL
+);
+
+
+--
+-- Name: instance_moderations_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+CREATE SEQUENCE public.instance_moderations_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+--
+-- Name: instance_moderations_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
+--
+
+ALTER SEQUENCE public.instance_moderations_id_seq OWNED BY public.instance_moderations.id;
+
+
+--
+-- Name: licencias; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.licencias (
+ id bigint NOT NULL,
+ created_at timestamp without time zone NOT NULL,
+ updated_at timestamp without time zone NOT NULL,
+ name character varying,
+ description text,
+ deed text,
+ url character varying,
+ icons character varying,
+ short_description character varying
+);
+
+
+--
+-- Name: licencias_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+CREATE SEQUENCE public.licencias_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+--
+-- Name: licencias_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
+--
+
+ALTER SEQUENCE public.licencias_id_seq OWNED BY public.licencias.id;
+
+
+--
+-- Name: log_entries; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.log_entries (
+ id bigint NOT NULL,
+ created_at timestamp(6) without time zone NOT NULL,
+ updated_at timestamp(6) without time zone NOT NULL,
+ site_id bigint,
+ text text,
+ sent boolean DEFAULT false
+);
+
+
+--
+-- Name: log_entries_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+CREATE SEQUENCE public.log_entries_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+--
+-- Name: log_entries_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
+--
+
+ALTER SEQUENCE public.log_entries_id_seq OWNED BY public.log_entries.id;
+
+
+--
+-- Name: maintenances; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.maintenances (
+ id bigint NOT NULL,
+ created_at timestamp(6) without time zone NOT NULL,
+ updated_at timestamp(6) without time zone NOT NULL,
+ message text,
+ estimated_from timestamp without time zone,
+ estimated_to timestamp without time zone,
+ are_we_back boolean DEFAULT false
+);
+
+
+--
+-- Name: maintenances_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+CREATE SEQUENCE public.maintenances_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+--
+-- Name: maintenances_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
+--
+
+ALTER SEQUENCE public.maintenances_id_seq OWNED BY public.maintenances.id;
+
+
+--
+-- Name: mobility_string_translations; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mobility_string_translations (
+ id bigint NOT NULL,
+ locale character varying NOT NULL,
+ key character varying NOT NULL,
+ value character varying,
+ translatable_type character varying,
+ translatable_id integer,
+ created_at timestamp without time zone NOT NULL,
+ updated_at timestamp without time zone NOT NULL
+);
+
+
+--
+-- Name: mobility_string_translations_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+CREATE SEQUENCE public.mobility_string_translations_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+--
+-- Name: mobility_string_translations_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
+--
+
+ALTER SEQUENCE public.mobility_string_translations_id_seq OWNED BY public.mobility_string_translations.id;
+
+
+--
+-- Name: mobility_text_translations; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mobility_text_translations (
+ id bigint NOT NULL,
+ locale character varying NOT NULL,
+ key character varying NOT NULL,
+ value text,
+ translatable_type character varying,
+ translatable_id integer,
+ created_at timestamp without time zone NOT NULL,
+ updated_at timestamp without time zone NOT NULL
+);
+
+
+--
+-- Name: mobility_text_translations_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+CREATE SEQUENCE public.mobility_text_translations_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+--
+-- Name: mobility_text_translations_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
+--
+
+ALTER SEQUENCE public.mobility_text_translations_id_seq OWNED BY public.mobility_text_translations.id;
+
+
+--
+-- Name: privacy_policies; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.privacy_policies (
+ id bigint NOT NULL,
+ created_at timestamp(6) without time zone NOT NULL,
+ updated_at timestamp(6) without time zone NOT NULL,
+ title character varying,
+ description text,
+ content text
+);
+
+
+--
+-- Name: privacy_policies_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+CREATE SEQUENCE public.privacy_policies_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+--
+-- Name: privacy_policies_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
+--
+
+ALTER SEQUENCE public.privacy_policies_id_seq OWNED BY public.privacy_policies.id;
+
+
+--
+-- Name: que_jobs_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+CREATE SEQUENCE public.que_jobs_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+--
+-- Name: que_jobs_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
+--
+
+ALTER SEQUENCE public.que_jobs_id_seq OWNED BY public.que_jobs.id;
+
+
+--
+-- Name: que_lockers; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE UNLOGGED TABLE public.que_lockers (
+ pid integer NOT NULL,
+ worker_count integer NOT NULL,
+ worker_priorities integer[] NOT NULL,
+ ruby_pid integer NOT NULL,
+ ruby_hostname text NOT NULL,
+ queues text[] NOT NULL,
+ listening boolean NOT NULL,
+ job_schema_version integer DEFAULT 1,
+ CONSTRAINT valid_queues CHECK (((array_ndims(queues) = 1) AND (array_length(queues, 1) IS NOT NULL))),
+ CONSTRAINT valid_worker_priorities CHECK (((array_ndims(worker_priorities) = 1) AND (array_length(worker_priorities, 1) IS NOT NULL)))
+);
+
+
+--
+-- Name: que_values; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.que_values (
+ key text NOT NULL,
+ value jsonb DEFAULT '{}'::jsonb NOT NULL,
+ CONSTRAINT valid_value CHECK ((jsonb_typeof(value) = 'object'::text))
+)
+WITH (fillfactor='90');
+
+
+--
+-- Name: roles; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.roles (
+ id bigint NOT NULL,
+ created_at timestamp without time zone NOT NULL,
+ updated_at timestamp without time zone NOT NULL,
+ site_id integer,
+ usuarie_id integer,
+ rol character varying,
+ temporal boolean,
+ token character varying
+);
+
+
+--
+-- Name: roles_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+CREATE SEQUENCE public.roles_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+--
+-- Name: roles_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
+--
+
+ALTER SEQUENCE public.roles_id_seq OWNED BY public.roles.id;
+
+
+--
+-- Name: rollups; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.rollups (
+ id bigint NOT NULL,
+ name character varying NOT NULL,
+ "interval" character varying NOT NULL,
+ "time" timestamp without time zone NOT NULL,
+ dimensions jsonb DEFAULT '{}'::jsonb NOT NULL,
+ value double precision
+);
+
+
+--
+-- Name: rollups_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+CREATE SEQUENCE public.rollups_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+--
+-- Name: rollups_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
+--
+
+ALTER SEQUENCE public.rollups_id_seq OWNED BY public.rollups.id;
+
+
+--
+-- Name: schema_migrations; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.schema_migrations (
+ version character varying NOT NULL
+);
+
+
+--
+-- Name: sites; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.sites (
+ id bigint NOT NULL,
+ created_at timestamp without time zone NOT NULL,
+ updated_at timestamp without time zone NOT NULL,
+ name character varying,
+ design_id integer,
+ licencia_id integer,
+ status character varying DEFAULT 'waiting'::character varying,
+ description text,
+ title character varying,
+ colaboracion_anonima boolean DEFAULT false,
+ contact boolean DEFAULT false,
+ private_key_ciphertext character varying,
+ acepta_invitades boolean DEFAULT false,
+ tienda_api_key_ciphertext character varying DEFAULT ''::character varying,
+ tienda_url character varying DEFAULT ''::character varying,
+ api_key_ciphertext character varying,
+ slugify_mode character varying DEFAULT 'default'::character varying,
+ pagination boolean DEFAULT false,
+ private_key_pem_ciphertext text,
+ last_indexed_commit character varying
+);
+
+
+--
+-- Name: sites_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+CREATE SEQUENCE public.sites_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+--
+-- Name: sites_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
+--
+
+ALTER SEQUENCE public.sites_id_seq OWNED BY public.sites.id;
+
+
+--
+-- Name: stats; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.stats (
+ id bigint NOT NULL,
+ created_at timestamp(6) without time zone NOT NULL,
+ updated_at timestamp(6) without time zone NOT NULL,
+ site_id bigint,
+ name character varying NOT NULL
+);
+
+
+--
+-- Name: stats_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+CREATE SEQUENCE public.stats_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+--
+-- Name: stats_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
+--
+
+ALTER SEQUENCE public.stats_id_seq OWNED BY public.stats.id;
+
+
+--
+-- Name: usuaries; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.usuaries (
+ id bigint NOT NULL,
+ created_at timestamp without time zone NOT NULL,
+ updated_at timestamp without time zone NOT NULL,
+ email character varying DEFAULT ''::character varying NOT NULL,
+ encrypted_password character varying DEFAULT ''::character varying NOT NULL,
+ reset_password_token character varying,
+ reset_password_sent_at timestamp without time zone,
+ remember_created_at timestamp without time zone,
+ confirmation_token character varying,
+ confirmed_at timestamp without time zone,
+ confirmation_sent_at timestamp without time zone,
+ unconfirmed_email character varying,
+ failed_attempts integer DEFAULT 0 NOT NULL,
+ unlock_token character varying,
+ locked_at timestamp without time zone,
+ invitation_token character varying,
+ invitation_created_at timestamp without time zone,
+ invitation_sent_at timestamp without time zone,
+ invitation_accepted_at timestamp without time zone,
+ invitation_limit integer,
+ invited_by_type character varying,
+ invited_by_id integer,
+ invitations_count integer DEFAULT 0,
+ lang character varying DEFAULT 'es'::character varying,
+ privacy_policy_accepted_at timestamp without time zone,
+ terms_of_service_accepted_at timestamp without time zone,
+ code_of_conduct_accepted_at timestamp without time zone,
+ available_for_feedback_accepted_at timestamp without time zone
+);
+
+
+--
+-- Name: usuaries_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+CREATE SEQUENCE public.usuaries_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+--
+-- Name: usuaries_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
+--
+
+ALTER SEQUENCE public.usuaries_id_seq OWNED BY public.usuaries.id;
+
+
+--
+-- Name: action_text_rich_texts id; Type: DEFAULT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.action_text_rich_texts ALTER COLUMN id SET DEFAULT nextval('public.action_text_rich_texts_id_seq'::regclass);
+
+
+--
+-- Name: active_storage_attachments id; Type: DEFAULT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.active_storage_attachments ALTER COLUMN id SET DEFAULT nextval('public.active_storage_attachments_id_seq'::regclass);
+
+
+--
+-- Name: active_storage_blobs id; Type: DEFAULT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.active_storage_blobs ALTER COLUMN id SET DEFAULT nextval('public.active_storage_blobs_id_seq'::regclass);
+
+
+--
+-- Name: active_storage_variant_records id; Type: DEFAULT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.active_storage_variant_records ALTER COLUMN id SET DEFAULT nextval('public.active_storage_variant_records_id_seq'::regclass);
+
+
+--
+-- Name: blazer_audits id; Type: DEFAULT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.blazer_audits ALTER COLUMN id SET DEFAULT nextval('public.blazer_audits_id_seq'::regclass);
+
+
+--
+-- Name: blazer_checks id; Type: DEFAULT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.blazer_checks ALTER COLUMN id SET DEFAULT nextval('public.blazer_checks_id_seq'::regclass);
+
+
+--
+-- Name: blazer_dashboard_queries id; Type: DEFAULT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.blazer_dashboard_queries ALTER COLUMN id SET DEFAULT nextval('public.blazer_dashboard_queries_id_seq'::regclass);
+
+
+--
+-- Name: blazer_dashboards id; Type: DEFAULT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.blazer_dashboards ALTER COLUMN id SET DEFAULT nextval('public.blazer_dashboards_id_seq'::regclass);
+
+
+--
+-- Name: blazer_queries id; Type: DEFAULT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.blazer_queries ALTER COLUMN id SET DEFAULT nextval('public.blazer_queries_id_seq'::regclass);
+
+
+--
+-- Name: build_stats id; Type: DEFAULT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.build_stats ALTER COLUMN id SET DEFAULT nextval('public.build_stats_id_seq'::regclass);
+
+
+--
+-- Name: codes_of_conduct id; Type: DEFAULT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.codes_of_conduct ALTER COLUMN id SET DEFAULT nextval('public.codes_of_conduct_id_seq'::regclass);
+
+
+--
+-- Name: deploys id; Type: DEFAULT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.deploys ALTER COLUMN id SET DEFAULT nextval('public.deploys_id_seq'::regclass);
+
+
+--
+-- Name: designs id; Type: DEFAULT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.designs ALTER COLUMN id SET DEFAULT nextval('public.designs_id_seq'::regclass);
+
+
+--
+-- Name: distributed_press_publishers id; Type: DEFAULT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.distributed_press_publishers ALTER COLUMN id SET DEFAULT nextval('public.distributed_press_publishers_id_seq'::regclass);
+
+
+--
+-- Name: instance_moderations id; Type: DEFAULT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.instance_moderations ALTER COLUMN id SET DEFAULT nextval('public.instance_moderations_id_seq'::regclass);
+
+
+--
+-- Name: licencias id; Type: DEFAULT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.licencias ALTER COLUMN id SET DEFAULT nextval('public.licencias_id_seq'::regclass);
+
+
+--
+-- Name: log_entries id; Type: DEFAULT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.log_entries ALTER COLUMN id SET DEFAULT nextval('public.log_entries_id_seq'::regclass);
+
+
+--
+-- Name: maintenances id; Type: DEFAULT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.maintenances ALTER COLUMN id SET DEFAULT nextval('public.maintenances_id_seq'::regclass);
+
+
+--
+-- Name: mobility_string_translations id; Type: DEFAULT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mobility_string_translations ALTER COLUMN id SET DEFAULT nextval('public.mobility_string_translations_id_seq'::regclass);
+
+
+--
+-- Name: mobility_text_translations id; Type: DEFAULT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mobility_text_translations ALTER COLUMN id SET DEFAULT nextval('public.mobility_text_translations_id_seq'::regclass);
+
+
+--
+-- Name: privacy_policies id; Type: DEFAULT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.privacy_policies ALTER COLUMN id SET DEFAULT nextval('public.privacy_policies_id_seq'::regclass);
+
+
+--
+-- Name: que_jobs id; Type: DEFAULT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.que_jobs ALTER COLUMN id SET DEFAULT nextval('public.que_jobs_id_seq'::regclass);
+
+
+--
+-- Name: roles id; Type: DEFAULT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.roles ALTER COLUMN id SET DEFAULT nextval('public.roles_id_seq'::regclass);
+
+
+--
+-- Name: rollups id; Type: DEFAULT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.rollups ALTER COLUMN id SET DEFAULT nextval('public.rollups_id_seq'::regclass);
+
+
+--
+-- Name: sites id; Type: DEFAULT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.sites ALTER COLUMN id SET DEFAULT nextval('public.sites_id_seq'::regclass);
+
+
+--
+-- Name: stats id; Type: DEFAULT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.stats ALTER COLUMN id SET DEFAULT nextval('public.stats_id_seq'::regclass);
+
+
+--
+-- Name: usuaries id; Type: DEFAULT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.usuaries ALTER COLUMN id SET DEFAULT nextval('public.usuaries_id_seq'::regclass);
+
+
+--
+-- Name: access_logs access_logs_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.access_logs
+ ADD CONSTRAINT access_logs_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: action_text_rich_texts action_text_rich_texts_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.action_text_rich_texts
+ ADD CONSTRAINT action_text_rich_texts_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: active_storage_attachments active_storage_attachments_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.active_storage_attachments
+ ADD CONSTRAINT active_storage_attachments_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: active_storage_blobs active_storage_blobs_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.active_storage_blobs
+ ADD CONSTRAINT active_storage_blobs_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: active_storage_variant_records active_storage_variant_records_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.active_storage_variant_records
+ ADD CONSTRAINT active_storage_variant_records_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: activity_pub_activities activity_pub_activities_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.activity_pub_activities
+ ADD CONSTRAINT activity_pub_activities_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: activity_pub_actors activity_pub_actors_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.activity_pub_actors
+ ADD CONSTRAINT activity_pub_actors_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: activity_pub_fediblocks activity_pub_fediblocks_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.activity_pub_fediblocks
+ ADD CONSTRAINT activity_pub_fediblocks_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: activity_pub_instances activity_pub_instances_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.activity_pub_instances
+ ADD CONSTRAINT activity_pub_instances_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: activity_pub_objects activity_pub_objects_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.activity_pub_objects
+ ADD CONSTRAINT activity_pub_objects_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: activity_pub_remote_flags activity_pub_remote_flags_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.activity_pub_remote_flags
+ ADD CONSTRAINT activity_pub_remote_flags_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: activity_pubs activity_pubs_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.activity_pubs
+ ADD CONSTRAINT activity_pubs_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: actor_moderations actor_moderations_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.actor_moderations
+ ADD CONSTRAINT actor_moderations_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: blazer_audits blazer_audits_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.blazer_audits
+ ADD CONSTRAINT blazer_audits_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: blazer_checks blazer_checks_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.blazer_checks
+ ADD CONSTRAINT blazer_checks_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: blazer_dashboard_queries blazer_dashboard_queries_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.blazer_dashboard_queries
+ ADD CONSTRAINT blazer_dashboard_queries_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: blazer_dashboards blazer_dashboards_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.blazer_dashboards
+ ADD CONSTRAINT blazer_dashboards_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: blazer_queries blazer_queries_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.blazer_queries
+ ADD CONSTRAINT blazer_queries_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: build_stats build_stats_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.build_stats
+ ADD CONSTRAINT build_stats_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: codes_of_conduct codes_of_conduct_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.codes_of_conduct
+ ADD CONSTRAINT codes_of_conduct_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: csp_reports csp_reports_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.csp_reports
+ ADD CONSTRAINT csp_reports_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: deploys deploys_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.deploys
+ ADD CONSTRAINT deploys_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: designs designs_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.designs
+ ADD CONSTRAINT designs_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: distributed_press_publishers distributed_press_publishers_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.distributed_press_publishers
+ ADD CONSTRAINT distributed_press_publishers_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: fediblock_states fediblock_states_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.fediblock_states
+ ADD CONSTRAINT fediblock_states_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: indexed_posts indexed_posts_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.indexed_posts
+ ADD CONSTRAINT indexed_posts_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: instance_moderations instance_moderations_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.instance_moderations
+ ADD CONSTRAINT instance_moderations_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: licencias licencias_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.licencias
+ ADD CONSTRAINT licencias_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: log_entries log_entries_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.log_entries
+ ADD CONSTRAINT log_entries_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: maintenances maintenances_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.maintenances
+ ADD CONSTRAINT maintenances_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mobility_string_translations mobility_string_translations_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mobility_string_translations
+ ADD CONSTRAINT mobility_string_translations_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mobility_text_translations mobility_text_translations_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mobility_text_translations
+ ADD CONSTRAINT mobility_text_translations_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: privacy_policies privacy_policies_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.privacy_policies
+ ADD CONSTRAINT privacy_policies_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: que_jobs que_jobs_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.que_jobs
+ ADD CONSTRAINT que_jobs_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: que_lockers que_lockers_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.que_lockers
+ ADD CONSTRAINT que_lockers_pkey PRIMARY KEY (pid);
+
+
+--
+-- Name: que_values que_values_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.que_values
+ ADD CONSTRAINT que_values_pkey PRIMARY KEY (key);
+
+
+--
+-- Name: roles roles_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.roles
+ ADD CONSTRAINT roles_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: rollups rollups_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.rollups
+ ADD CONSTRAINT rollups_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: schema_migrations schema_migrations_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.schema_migrations
+ ADD CONSTRAINT schema_migrations_pkey PRIMARY KEY (version);
+
+
+--
+-- Name: sites sites_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.sites
+ ADD CONSTRAINT sites_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: stats stats_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.stats
+ ADD CONSTRAINT stats_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: usuaries usuaries_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.usuaries
+ ADD CONSTRAINT usuaries_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: index_access_logs_on_geoip2_data_city_name; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_access_logs_on_geoip2_data_city_name ON public.access_logs USING btree (geoip2_data_city_name);
+
+
+--
+-- Name: index_access_logs_on_geoip2_data_country_name; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_access_logs_on_geoip2_data_country_name ON public.access_logs USING btree (geoip2_data_country_name);
+
+
+--
+-- Name: index_access_logs_on_host; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_access_logs_on_host ON public.access_logs USING btree (host);
+
+
+--
+-- Name: index_access_logs_on_http_origin; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_access_logs_on_http_origin ON public.access_logs USING btree (http_origin);
+
+
+--
+-- Name: index_access_logs_on_http_user_agent; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_access_logs_on_http_user_agent ON public.access_logs USING btree (http_user_agent);
+
+
+--
+-- Name: index_access_logs_on_status; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_access_logs_on_status ON public.access_logs USING btree (status);
+
+
+--
+-- Name: index_access_logs_on_uri; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_access_logs_on_uri ON public.access_logs USING btree (uri);
+
+
+--
+-- Name: index_action_text_rich_texts_uniqueness; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE UNIQUE INDEX index_action_text_rich_texts_uniqueness ON public.action_text_rich_texts USING btree (record_type, record_id, name);
+
+
+--
+-- Name: index_active_storage_attachments_on_blob_id; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_active_storage_attachments_on_blob_id ON public.active_storage_attachments USING btree (blob_id);
+
+
+--
+-- Name: index_active_storage_attachments_uniqueness; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE UNIQUE INDEX index_active_storage_attachments_uniqueness ON public.active_storage_attachments USING btree (record_type, record_id, name, blob_id);
+
+
+--
+-- Name: index_active_storage_blobs_on_key_and_service_name; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE UNIQUE INDEX index_active_storage_blobs_on_key_and_service_name ON public.active_storage_blobs USING btree (key, service_name);
+
+
+--
+-- Name: index_active_storage_variant_records_uniqueness; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE UNIQUE INDEX index_active_storage_variant_records_uniqueness ON public.active_storage_variant_records USING btree (blob_id, variation_digest);
+
+
+--
+-- Name: index_activity_pub_activities_on_activity_pub_id; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_activity_pub_activities_on_activity_pub_id ON public.activity_pub_activities USING btree (activity_pub_id);
+
+
+--
+-- Name: index_activity_pub_actors_on_instance_id; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_activity_pub_actors_on_instance_id ON public.activity_pub_actors USING btree (instance_id);
+
+
+--
+-- Name: index_activity_pub_actors_on_uri; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE UNIQUE INDEX index_activity_pub_actors_on_uri ON public.activity_pub_actors USING btree (uri);
+
+
+--
+-- Name: index_activity_pub_instances_on_hostname; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE UNIQUE INDEX index_activity_pub_instances_on_hostname ON public.activity_pub_instances USING btree (hostname);
+
+
+--
+-- Name: index_activity_pub_objects_on_uri; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE UNIQUE INDEX index_activity_pub_objects_on_uri ON public.activity_pub_objects USING btree (uri);
+
+
+--
+-- Name: index_activity_pub_remote_flags_on_actor_id; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_activity_pub_remote_flags_on_actor_id ON public.activity_pub_remote_flags USING btree (actor_id);
+
+
+--
+-- Name: index_activity_pub_remote_flags_on_site_id; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_activity_pub_remote_flags_on_site_id ON public.activity_pub_remote_flags USING btree (site_id);
+
+
+--
+-- Name: index_activity_pub_remote_flags_on_site_id_and_actor_id; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE UNIQUE INDEX index_activity_pub_remote_flags_on_site_id_and_actor_id ON public.activity_pub_remote_flags USING btree (site_id, actor_id);
+
+
+--
+-- Name: index_actor_moderations_on_actor_id; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_actor_moderations_on_actor_id ON public.actor_moderations USING btree (actor_id);
+
+
+--
+-- Name: index_actor_moderations_on_site_id; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_actor_moderations_on_site_id ON public.actor_moderations USING btree (site_id);
+
+
+--
+-- Name: index_blazer_audits_on_query_id; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_blazer_audits_on_query_id ON public.blazer_audits USING btree (query_id);
+
+
+--
+-- Name: index_blazer_audits_on_user_id; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_blazer_audits_on_user_id ON public.blazer_audits USING btree (user_id);
+
+
+--
+-- Name: index_blazer_checks_on_creator_id; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_blazer_checks_on_creator_id ON public.blazer_checks USING btree (creator_id);
+
+
+--
+-- Name: index_blazer_checks_on_query_id; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_blazer_checks_on_query_id ON public.blazer_checks USING btree (query_id);
+
+
+--
+-- Name: index_blazer_dashboard_queries_on_dashboard_id; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_blazer_dashboard_queries_on_dashboard_id ON public.blazer_dashboard_queries USING btree (dashboard_id);
+
+
+--
+-- Name: index_blazer_dashboard_queries_on_query_id; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_blazer_dashboard_queries_on_query_id ON public.blazer_dashboard_queries USING btree (query_id);
+
+
+--
+-- Name: index_blazer_dashboards_on_creator_id; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_blazer_dashboards_on_creator_id ON public.blazer_dashboards USING btree (creator_id);
+
+
+--
+-- Name: index_blazer_queries_on_creator_id; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_blazer_queries_on_creator_id ON public.blazer_queries USING btree (creator_id);
+
+
+--
+-- Name: index_build_stats_on_deploy_id; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_build_stats_on_deploy_id ON public.build_stats USING btree (deploy_id);
+
+
+--
+-- Name: index_deploys_on_site_id; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_deploys_on_site_id ON public.deploys USING btree (site_id);
+
+
+--
+-- Name: index_deploys_on_type; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_deploys_on_type ON public.deploys USING btree (type);
+
+
+--
+-- Name: index_designs_on_gem; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE UNIQUE INDEX index_designs_on_gem ON public.designs USING btree (gem);
+
+
+--
+-- Name: index_designs_on_name; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE UNIQUE INDEX index_designs_on_name ON public.designs USING btree (name);
+
+
+--
+-- Name: index_fediblock_states_on_fediblock_id; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_fediblock_states_on_fediblock_id ON public.fediblock_states USING btree (fediblock_id);
+
+
+--
+-- Name: index_fediblock_states_on_site_id; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_fediblock_states_on_site_id ON public.fediblock_states USING btree (site_id);
+
+
+--
+-- Name: index_fediblock_states_on_site_id_and_fediblock_id; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE UNIQUE INDEX index_fediblock_states_on_site_id_and_fediblock_id ON public.fediblock_states USING btree (site_id, fediblock_id);
+
+
+--
+-- Name: index_indexed_posts_on_front_matter; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_indexed_posts_on_front_matter ON public.indexed_posts USING gin (front_matter);
+
+
+--
+-- Name: index_indexed_posts_on_indexed_content; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_indexed_posts_on_indexed_content ON public.indexed_posts USING gin (indexed_content);
+
+
+--
+-- Name: index_indexed_posts_on_layout; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_indexed_posts_on_layout ON public.indexed_posts USING btree (layout);
+
+
+--
+-- Name: index_indexed_posts_on_locale; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_indexed_posts_on_locale ON public.indexed_posts USING btree (locale);
+
+
+--
+-- Name: index_indexed_posts_on_site_id; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_indexed_posts_on_site_id ON public.indexed_posts USING btree (site_id);
+
+
+--
+-- Name: index_instance_moderations_on_instance_id; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_instance_moderations_on_instance_id ON public.instance_moderations USING btree (instance_id);
+
+
+--
+-- Name: index_instance_moderations_on_site_id; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_instance_moderations_on_site_id ON public.instance_moderations USING btree (site_id);
+
+
+--
+-- Name: index_instance_moderations_on_site_id_and_instance_id; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE UNIQUE INDEX index_instance_moderations_on_site_id_and_instance_id ON public.instance_moderations USING btree (site_id, instance_id);
+
+
+--
+-- Name: index_licencias_on_name; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE UNIQUE INDEX index_licencias_on_name ON public.licencias USING btree (name);
+
+
+--
+-- Name: index_log_entries_on_site_id; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_log_entries_on_site_id ON public.log_entries USING btree (site_id);
+
+
+--
+-- Name: index_mobility_string_translations_on_keys; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE UNIQUE INDEX index_mobility_string_translations_on_keys ON public.mobility_string_translations USING btree (translatable_id, translatable_type, locale, key);
+
+
+--
+-- Name: index_mobility_string_translations_on_query_keys; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_mobility_string_translations_on_query_keys ON public.mobility_string_translations USING btree (translatable_type, key, value, locale);
+
+
+--
+-- Name: index_mobility_string_translations_on_translatable_attribute; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_mobility_string_translations_on_translatable_attribute ON public.mobility_string_translations USING btree (translatable_id, translatable_type, key);
+
+
+--
+-- Name: index_mobility_text_translations_on_keys; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE UNIQUE INDEX index_mobility_text_translations_on_keys ON public.mobility_text_translations USING btree (translatable_id, translatable_type, locale, key);
+
+
+--
+-- Name: index_mobility_text_translations_on_translatable_attribute; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_mobility_text_translations_on_translatable_attribute ON public.mobility_text_translations USING btree (translatable_id, translatable_type, key);
+
+
+--
+-- Name: index_roles_on_site_id; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_roles_on_site_id ON public.roles USING btree (site_id);
+
+
+--
+-- Name: index_roles_on_site_id_and_usuarie_id; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE UNIQUE INDEX index_roles_on_site_id_and_usuarie_id ON public.roles USING btree (site_id, usuarie_id);
+
+
+--
+-- Name: index_roles_on_usuarie_id; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_roles_on_usuarie_id ON public.roles USING btree (usuarie_id);
+
+
+--
+-- Name: index_rollups_on_name_and_interval_and_time_and_dimensions; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE UNIQUE INDEX index_rollups_on_name_and_interval_and_time_and_dimensions ON public.rollups USING btree (name, "interval", "time", dimensions);
+
+
+--
+-- Name: index_sites_on_design_id; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_sites_on_design_id ON public.sites USING btree (design_id);
+
+
+--
+-- Name: index_sites_on_licencia_id; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_sites_on_licencia_id ON public.sites USING btree (licencia_id);
+
+
+--
+-- Name: index_sites_on_name; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE UNIQUE INDEX index_sites_on_name ON public.sites USING btree (name);
+
+
+--
+-- Name: index_stats_on_name; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_stats_on_name ON public.stats USING hash (name);
+
+
+--
+-- Name: index_stats_on_site_id; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_stats_on_site_id ON public.stats USING btree (site_id);
+
+
+--
+-- Name: index_usuaries_on_confirmation_token; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE UNIQUE INDEX index_usuaries_on_confirmation_token ON public.usuaries USING btree (confirmation_token);
+
+
+--
+-- Name: index_usuaries_on_email; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE UNIQUE INDEX index_usuaries_on_email ON public.usuaries USING btree (email);
+
+
+--
+-- Name: index_usuaries_on_invitation_token; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE UNIQUE INDEX index_usuaries_on_invitation_token ON public.usuaries USING btree (invitation_token);
+
+
+--
+-- Name: index_usuaries_on_invitations_count; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_usuaries_on_invitations_count ON public.usuaries USING btree (invitations_count);
+
+
+--
+-- Name: index_usuaries_on_invited_by_id; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_usuaries_on_invited_by_id ON public.usuaries USING btree (invited_by_id);
+
+
+--
+-- Name: index_usuaries_on_invited_by_type_and_invited_by_id; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_usuaries_on_invited_by_type_and_invited_by_id ON public.usuaries USING btree (invited_by_type, invited_by_id);
+
+
+--
+-- Name: index_usuaries_on_reset_password_token; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE UNIQUE INDEX index_usuaries_on_reset_password_token ON public.usuaries USING btree (reset_password_token);
+
+
+--
+-- Name: index_usuaries_on_unlock_token; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE UNIQUE INDEX index_usuaries_on_unlock_token ON public.usuaries USING btree (unlock_token);
+
+
+--
+-- Name: que_jobs_args_gin_idx; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX que_jobs_args_gin_idx ON public.que_jobs USING gin (args jsonb_path_ops);
+
+
+--
+-- Name: que_jobs_data_gin_idx; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX que_jobs_data_gin_idx ON public.que_jobs USING gin (data jsonb_path_ops);
+
+
+--
+-- Name: que_jobs_kwargs_gin_idx; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX que_jobs_kwargs_gin_idx ON public.que_jobs USING gin (kwargs jsonb_path_ops);
+
+
+--
+-- Name: que_poll_idx; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX que_poll_idx ON public.que_jobs USING btree (job_schema_version, queue, priority, run_at, id) WHERE ((finished_at IS NULL) AND (expired_at IS NULL));
+
+
+--
+-- Name: access_logs access_logs_before_insert_row_tr; Type: TRIGGER; Schema: public; Owner: -
+--
+
+CREATE TRIGGER access_logs_before_insert_row_tr BEFORE INSERT ON public.access_logs FOR EACH ROW EXECUTE FUNCTION public.access_logs_before_insert_row_tr();
+
+
+--
+-- Name: indexed_posts indexed_posts_before_insert_update_row_tr; Type: TRIGGER; Schema: public; Owner: -
+--
+
+CREATE TRIGGER indexed_posts_before_insert_update_row_tr BEFORE INSERT OR UPDATE ON public.indexed_posts FOR EACH ROW EXECUTE FUNCTION public.indexed_posts_before_insert_update_row_tr();
+
+
+--
+-- Name: que_jobs que_job_notify; Type: TRIGGER; Schema: public; Owner: -
+--
+
+CREATE TRIGGER que_job_notify AFTER INSERT ON public.que_jobs FOR EACH ROW WHEN ((NOT (COALESCE(current_setting('que.skip_notify'::text, true), ''::text) = 'true'::text))) EXECUTE FUNCTION public.que_job_notify();
+
+
+--
+-- Name: que_jobs que_state_notify; Type: TRIGGER; Schema: public; Owner: -
+--
+
+CREATE TRIGGER que_state_notify AFTER INSERT OR DELETE OR UPDATE ON public.que_jobs FOR EACH ROW WHEN ((NOT (COALESCE(current_setting('que.skip_notify'::text, true), ''::text) = 'true'::text))) EXECUTE FUNCTION public.que_state_notify();
+
+
+--
+-- Name: active_storage_variant_records fk_rails_993965df05; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.active_storage_variant_records
+ ADD CONSTRAINT fk_rails_993965df05 FOREIGN KEY (blob_id) REFERENCES public.active_storage_blobs(id);
+
+
+--
+-- Name: active_storage_attachments fk_rails_c3b3935057; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.active_storage_attachments
+ ADD CONSTRAINT fk_rails_c3b3935057 FOREIGN KEY (blob_id) REFERENCES public.active_storage_blobs(id);
+
+
+--
+-- PostgreSQL database dump complete
+--
+
+SET search_path TO "$user", public;
+
+INSERT INTO "schema_migrations" (version) VALUES
+('20180925183241'),
+('20190211184815'),
+('20190703190859'),
+('20190703200455'),
+('20190705195758'),
+('20190705215536'),
+('20190706000159'),
+('20190706002615'),
+('20190711183726'),
+('20190712165059'),
+('20190716195155'),
+('20190716195449'),
+('20190716195811'),
+('20190716195812'),
+('20190716202024'),
+('20190717214308'),
+('20190718185817'),
+('20190719221653'),
+('20190723220002'),
+('20190725185427'),
+('20190726003756'),
+('20190730211624'),
+('20190730211756'),
+('20190820225238'),
+('20190829163530'),
+('20190829180743'),
+('20200118155319'),
+('20200126175158'),
+('20200130193655'),
+('20200205173039'),
+('20200206151057'),
+('20200206163257'),
+('20200527221900'),
+('20200529154040'),
+('20200615171026'),
+('20200616133218'),
+('20200801230101'),
+('20200801233025'),
+('20200810230944'),
+('20200811210507'),
+('20200816003344'),
+('20200820165316'),
+('20200822204920'),
+('20201111203031'),
+('20201207152354'),
+('20201224162153'),
+('20201224162154'),
+('20210414152728'),
+('20210504224144'),
+('20210504224343'),
+('20210506212356'),
+('20210507221120'),
+('20210511211357'),
+('20210722191718'),
+('20210807003928'),
+('20210807004941'),
+('20210926205448'),
+('20211008201239'),
+('20211022224008'),
+('20211022225449'),
+('20220406211042'),
+('20220428135113'),
+('20220712135053'),
+('20220802153308'),
+('20230119165420'),
+('20230318183722'),
+('20230322214924'),
+('20230322231344'),
+('20230325163802'),
+('20230328200129'),
+('20230328213242'),
+('20230328231029'),
+('20230411185406'),
+('20230415153231'),
+('20230421182627'),
+('20230424174544'),
+('20230519143500'),
+('20230524190240'),
+('20230731195050'),
+('20230829204127'),
+('20230921155401'),
+('20230927153926'),
+('20240216170202'),
+('20240219153919'),
+('20240219175839'),
+('20240219204011'),
+('20240219204224'),
+('20240220161414'),
+('20240221184007'),
+('20240223170317'),
+('20240226133022'),
+('20240226134335'),
+('20240227134845'),
+('20240227142019'),
+('20240228171335'),
+('20240228202830'),
+('20240229201155'),
+('20240301181224'),
+('20240301194154'),
+('20240301202955'),
+('20240305164653'),
+('20240305184854'),
+('20240307201510'),
+('20240307203039'),
+('20240313192134'),
+('20240313204105'),
+('20240314141536'),
+('20240314153017'),
+('20240314205923'),
+('20240316203721'),
+('20240318183846'),
+('20240319124212'),
+('20240319144735');
+
+
diff --git a/lib/tasks/activity_pub.rake b/lib/tasks/activity_pub.rake
new file mode 100644
index 00000000..08c0f980
--- /dev/null
+++ b/lib/tasks/activity_pub.rake
@@ -0,0 +1,8 @@
+# frozen_string_literal: true
+
+namespace :activity_pub do
+ desc 'Update Fediblocks'
+ task fediblocks: :environment do |_, args|
+ ActivityPub::FediblockFetchJob.perform_later
+ end
+end
diff --git a/lib/tasks/cleanup.rake b/lib/tasks/cleanup.rake
index e14693bc..20044871 100644
--- a/lib/tasks/cleanup.rake
+++ b/lib/tasks/cleanup.rake
@@ -2,10 +2,9 @@
namespace :cleanup do
desc 'Cleanup sites'
- task everything: :environment do
+ task everything: :environment do |_, args|
before = ENV.fetch('BEFORE', '30').to_i.days.ago
- service = CleanupService.new(before: before)
- service.cleanup_everything!
+ CleanupJob.perform_later(before)
end
end
diff --git a/lib/tasks/stats.rake b/lib/tasks/stats.rake
index 9461782a..fbcb5fa4 100644
--- a/lib/tasks/stats.rake
+++ b/lib/tasks/stats.rake
@@ -3,9 +3,9 @@
namespace :stats do
desc 'Process stats'
task process_all: :environment do
- Site.all.pluck(:id).each do |site_id|
- UriCollectionJob.perform_now site_id: site_id, once: true
- StatCollectionJob.perform_now site_id: site_id, once: true
+ Site.all.find_each do |site|
+ UriCollectionJob.perform_now site: site, once: true
+ StatCollectionJob.perform_now site: site, once: true
end
end
end
diff --git a/monit.conf b/monit.conf
index 99025968..2b7e50a8 100644
--- a/monit.conf
+++ b/monit.conf
@@ -9,6 +9,11 @@ check program distributed_press_tokens_renew
every "0 3 * * *"
if status != 0 then alert
+check program fediblocks
+ with path "/usr/bin/foreman run -f /srv/Procfile -d /srv fediblocks" as uid "rails" gid "www-data"
+ every "0 7 * * *"
+ if status != 0 then alert
+
check program access_logs
with path "/srv/http/bin/access_logs" as uid "app" and gid "www-data"
every "0 0 * * *"
@@ -19,6 +24,10 @@ check program stats
every "0 1 * * *"
if status != 0 then alert
+check filesystem root with path /
+ if space usage > 80% for 5 times within 15 cycles then alert
+ if space usage > 90% for 5 cycles then exec "/usr/bin/foreman run -f /srv/Procfile -d /srv emergency_cleanup" as uid "rails" gid "www-data"
+
check process que with pidfile /srv/tmp/que.pid
start program = "/usr/bin/foreman run -f /srv/Procfile -d /srv que"
stop program = "/bin/sh -c 'cat /srv/tmp/que.pid | xargs -r kill'"
diff --git a/package.json b/package.json
index 6a5f159f..088316bc 100644
--- a/package.json
+++ b/package.json
@@ -12,14 +12,17 @@
"@rails/actiontext": "^6.0.0",
"@rails/activestorage": "^6.1.3-1",
"@rails/ujs": "^6.1.3-1",
- "@rails/webpacker": "5.2.1",
+ "@rails/webpacker": "5.4.4",
+ "@suttyweb/editor": "^0.1.29",
"babel-loader": "^8.2.2",
+ "bs-custom-file-input": "^1.3.4",
"chart.js": "^3.5.1",
"chartkick": "^4.0.5",
"circular-dependency-plugin": "^5.2.2",
"commonmark": "^0.29.0",
"fork-awesome": "^1.1.7",
"fork-ts-checker-webpack-plugin": "^6.1.0",
+ "htmx.org": "^1.9.11",
"input-map": "git+https://0xacab.org/sutty/input-map.git",
"input-tag": "git+https://0xacab.org/sutty/input-tag.git",
"leaflet": "^1.7.1",
diff --git a/public/assets/.sprockets-manifest-c6294bb290dcb7473076f4de99ce9c00.json b/public/assets/.sprockets-manifest-c6294bb290dcb7473076f4de99ce9c00.json
new file mode 100644
index 00000000..ecd1aee3
--- /dev/null
+++ b/public/assets/.sprockets-manifest-c6294bb290dcb7473076f4de99ce9c00.json
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:53b13d54381374696503351fd6661242b1e22ea6f2078678bc560dfcfb701c8a
+size 10242
diff --git a/public/assets/.sprockets-manifest-c6294bb290dcb7473076f4de99ce9c00.json.br b/public/assets/.sprockets-manifest-c6294bb290dcb7473076f4de99ce9c00.json.br
new file mode 100644
index 00000000..98bb90ad
--- /dev/null
+++ b/public/assets/.sprockets-manifest-c6294bb290dcb7473076f4de99ce9c00.json.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5e0106b0b4c59585bab8c4f20fcf9026a22ffcd845ce281a3ff6879b905edfe8
+size 4003
diff --git a/public/assets/activestorage-9f749d32771691cb3104d21c1c9926e52c04c48d8730498df4aaa39b0adfb7ba.js b/public/assets/activestorage-9f749d32771691cb3104d21c1c9926e52c04c48d8730498df4aaa39b0adfb7ba.js
new file mode 100644
index 00000000..cbde635a
--- /dev/null
+++ b/public/assets/activestorage-9f749d32771691cb3104d21c1c9926e52c04c48d8730498df4aaa39b0adfb7ba.js
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1aa76e929b6ee4e3bab1734223a46c0d22a1cf2425d2e028c3075528436171dc
+size 33422
diff --git a/public/assets/activestorage-9f749d32771691cb3104d21c1c9926e52c04c48d8730498df4aaa39b0adfb7ba.js.br b/public/assets/activestorage-9f749d32771691cb3104d21c1c9926e52c04c48d8730498df4aaa39b0adfb7ba.js.br
new file mode 100644
index 00000000..89860cb3
--- /dev/null
+++ b/public/assets/activestorage-9f749d32771691cb3104d21c1c9926e52c04c48d8730498df4aaa39b0adfb7ba.js.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a2a65b9d05b5f692ad4199c5aa612e13b165e68b4a1330ee7c60a414fd5a8cbf
+size 6541
diff --git a/public/assets/activestorage-9f749d32771691cb3104d21c1c9926e52c04c48d8730498df4aaa39b0adfb7ba.js.gz b/public/assets/activestorage-9f749d32771691cb3104d21c1c9926e52c04c48d8730498df4aaa39b0adfb7ba.js.gz
new file mode 100644
index 00000000..00389f1a
--- /dev/null
+++ b/public/assets/activestorage-9f749d32771691cb3104d21c1c9926e52c04c48d8730498df4aaa39b0adfb7ba.js.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d6dcef6c2e458d817696a109d51b14564902cf9c50606b7f8adf522ea6d03bec
+size 6899
diff --git a/public/assets/activestorage-a32231d4c74e0bd4b322c1466c29120152be4ea1f4b896d9bfa546b49c39c52f.js b/public/assets/activestorage-a32231d4c74e0bd4b322c1466c29120152be4ea1f4b896d9bfa546b49c39c52f.js
new file mode 100644
index 00000000..00eb1f78
--- /dev/null
+++ b/public/assets/activestorage-a32231d4c74e0bd4b322c1466c29120152be4ea1f4b896d9bfa546b49c39c52f.js
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:180d06e627b032f75d76aba6172b3aa58d171fb0a0f1142f29448d10fc5ec5a9
+size 16449
diff --git a/public/assets/activestorage-a32231d4c74e0bd4b322c1466c29120152be4ea1f4b896d9bfa546b49c39c52f.js.gz b/public/assets/activestorage-a32231d4c74e0bd4b322c1466c29120152be4ea1f4b896d9bfa546b49c39c52f.js.gz
new file mode 100644
index 00000000..bcf59744
--- /dev/null
+++ b/public/assets/activestorage-a32231d4c74e0bd4b322c1466c29120152be4ea1f4b896d9bfa546b49c39c52f.js.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7c491d95b7e2535cb55d8ba4a77a5045976300025ceb4c52f1c587e2e894538a
+size 5157
diff --git a/public/assets/application-dc5234b33b6c06db79ab79114f5b85952f35482ce5b97061ce9402b2a8a4cd19.css b/public/assets/application-dc5234b33b6c06db79ab79114f5b85952f35482ce5b97061ce9402b2a8a4cd19.css
new file mode 100644
index 00000000..f3f0e72f
--- /dev/null
+++ b/public/assets/application-dc5234b33b6c06db79ab79114f5b85952f35482ce5b97061ce9402b2a8a4cd19.css
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:45b58cea6de408b3b9e666b149e9cb5aae3f3669d6bd3587def372af51e9ec9c
+size 531463
diff --git a/public/assets/application-dc5234b33b6c06db79ab79114f5b85952f35482ce5b97061ce9402b2a8a4cd19.css.br b/public/assets/application-dc5234b33b6c06db79ab79114f5b85952f35482ce5b97061ce9402b2a8a4cd19.css.br
new file mode 100644
index 00000000..cfb849ef
--- /dev/null
+++ b/public/assets/application-dc5234b33b6c06db79ab79114f5b85952f35482ce5b97061ce9402b2a8a4cd19.css.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:587c4692885409e7bf9eec2ae7a47eb1954b86f14d4e25a42403663d4d59b268
+size 35024
diff --git a/public/assets/application-dc5234b33b6c06db79ab79114f5b85952f35482ce5b97061ce9402b2a8a4cd19.css.gz b/public/assets/application-dc5234b33b6c06db79ab79114f5b85952f35482ce5b97061ce9402b2a8a4cd19.css.gz
new file mode 100644
index 00000000..6d8cbce0
--- /dev/null
+++ b/public/assets/application-dc5234b33b6c06db79ab79114f5b85952f35482ce5b97061ce9402b2a8a4cd19.css.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2997bf3c615d602a40238b3ab474034918f4837d88c7f55fec818fda8ea31f17
+size 42896
diff --git a/public/assets/application-fe50a06d71e148768669fb4e35c788fc1ac8ba9d94d55ed4292a198004c8dcc5.css b/public/assets/application-fe50a06d71e148768669fb4e35c788fc1ac8ba9d94d55ed4292a198004c8dcc5.css
new file mode 100644
index 00000000..37581324
--- /dev/null
+++ b/public/assets/application-fe50a06d71e148768669fb4e35c788fc1ac8ba9d94d55ed4292a198004c8dcc5.css
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b1097893171f39792c842be23ad64b1d37080c3ab988bf4d94fa95897e5a592e
+size 235889
diff --git a/public/assets/application-fe50a06d71e148768669fb4e35c788fc1ac8ba9d94d55ed4292a198004c8dcc5.css.gz b/public/assets/application-fe50a06d71e148768669fb4e35c788fc1ac8ba9d94d55ed4292a198004c8dcc5.css.gz
new file mode 100644
index 00000000..e8eaa95c
--- /dev/null
+++ b/public/assets/application-fe50a06d71e148768669fb4e35c788fc1ac8ba9d94d55ed4292a198004c8dcc5.css.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:382d60f2ae3ec6916daa7b4dfbd008afdd3657339f29f00f0ed8bce584488dd0
+size 32779
diff --git a/public/assets/arrows-alt-v-89a34626be855d3b1c3199cd75f62cf6327678eed1e126f74b7cbc6de3502606.svg b/public/assets/arrows-alt-v-89a34626be855d3b1c3199cd75f62cf6327678eed1e126f74b7cbc6de3502606.svg
new file mode 100644
index 00000000..2a7f2458
--- /dev/null
+++ b/public/assets/arrows-alt-v-89a34626be855d3b1c3199cd75f62cf6327678eed1e126f74b7cbc6de3502606.svg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:92f2db633d3e9611dc07743d7267204c40de2f8d75b9fa7e0646b195541f2d53
+size 571
diff --git a/public/assets/arrows-alt-v-89a34626be855d3b1c3199cd75f62cf6327678eed1e126f74b7cbc6de3502606.svg.br b/public/assets/arrows-alt-v-89a34626be855d3b1c3199cd75f62cf6327678eed1e126f74b7cbc6de3502606.svg.br
new file mode 100644
index 00000000..fe5ef2ad
--- /dev/null
+++ b/public/assets/arrows-alt-v-89a34626be855d3b1c3199cd75f62cf6327678eed1e126f74b7cbc6de3502606.svg.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:66f6cc7289f2ab65e5c05f470dc61b62d3b67dfc6b02111f7ac608da9f371273
+size 323
diff --git a/public/assets/arrows-alt-v-89a34626be855d3b1c3199cd75f62cf6327678eed1e126f74b7cbc6de3502606.svg.gz b/public/assets/arrows-alt-v-89a34626be855d3b1c3199cd75f62cf6327678eed1e126f74b7cbc6de3502606.svg.gz
new file mode 100644
index 00000000..f5afff36
--- /dev/null
+++ b/public/assets/arrows-alt-v-89a34626be855d3b1c3199cd75f62cf6327678eed1e126f74b7cbc6de3502606.svg.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f690800fb0f0e2ce7b86b2564f2b4521030854c3eb13ccad730911181b906a1e
+size 359
diff --git a/public/assets/blazer/application-59c73da0ca1f2fd8dd42765f0a172ae513546920ad9fa0718c15d9b10a4f18dd.css b/public/assets/blazer/application-59c73da0ca1f2fd8dd42765f0a172ae513546920ad9fa0718c15d9b10a4f18dd.css
new file mode 100644
index 00000000..d065b1d6
--- /dev/null
+++ b/public/assets/blazer/application-59c73da0ca1f2fd8dd42765f0a172ae513546920ad9fa0718c15d9b10a4f18dd.css
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cbc16a398c527ae16bd978e4c16f5803989f3025be59e35332a0547a57eae668
+size 161257
diff --git a/public/assets/blazer/application-59c73da0ca1f2fd8dd42765f0a172ae513546920ad9fa0718c15d9b10a4f18dd.css.br b/public/assets/blazer/application-59c73da0ca1f2fd8dd42765f0a172ae513546920ad9fa0718c15d9b10a4f18dd.css.br
new file mode 100644
index 00000000..1c55ad41
--- /dev/null
+++ b/public/assets/blazer/application-59c73da0ca1f2fd8dd42765f0a172ae513546920ad9fa0718c15d9b10a4f18dd.css.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:669ad50ad737f1d4f996854f4da308c78dee7766e6bbfde1df609fd72502f56b
+size 22772
diff --git a/public/assets/blazer/application-59c73da0ca1f2fd8dd42765f0a172ae513546920ad9fa0718c15d9b10a4f18dd.css.gz b/public/assets/blazer/application-59c73da0ca1f2fd8dd42765f0a172ae513546920ad9fa0718c15d9b10a4f18dd.css.gz
new file mode 100644
index 00000000..bb2ecb25
--- /dev/null
+++ b/public/assets/blazer/application-59c73da0ca1f2fd8dd42765f0a172ae513546920ad9fa0718c15d9b10a4f18dd.css.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ab6c28f79b9b9a72deb9c4d8247f2f481e0e7c769f063d63a195d31c1fc40c37
+size 25170
diff --git a/public/assets/blazer/application-de70452dc5fa2016142132ea36573395d45b4e5c5cf772ef1558462a46996967.css b/public/assets/blazer/application-de70452dc5fa2016142132ea36573395d45b4e5c5cf772ef1558462a46996967.css
new file mode 100644
index 00000000..6ec43dde
--- /dev/null
+++ b/public/assets/blazer/application-de70452dc5fa2016142132ea36573395d45b4e5c5cf772ef1558462a46996967.css
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ea293694663cf946057fdb9573bac081112128fe87f2405f0fe668141ee37b2b
+size 134244
diff --git a/public/assets/blazer/application-de70452dc5fa2016142132ea36573395d45b4e5c5cf772ef1558462a46996967.css.gz b/public/assets/blazer/application-de70452dc5fa2016142132ea36573395d45b4e5c5cf772ef1558462a46996967.css.gz
new file mode 100644
index 00000000..e4e580e4
--- /dev/null
+++ b/public/assets/blazer/application-de70452dc5fa2016142132ea36573395d45b4e5c5cf772ef1558462a46996967.css.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:442a323c02cbf67b1d0c973441f2ecee8bb78e6df8518bec35a95e4c0d2c3eda
+size 23302
diff --git a/public/assets/blazer/application-ec191b6689a395c0fede5f96bcc30a93a832cfbb325d6c50f1c31fffe8f7352b.js b/public/assets/blazer/application-ec191b6689a395c0fede5f96bcc30a93a832cfbb325d6c50f1c31fffe8f7352b.js
new file mode 100644
index 00000000..5ea9b7f1
--- /dev/null
+++ b/public/assets/blazer/application-ec191b6689a395c0fede5f96bcc30a93a832cfbb325d6c50f1c31fffe8f7352b.js
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c7425badb1fcf60b27d22aed3d4ff8a68c9f65770127234714db354a6dddbd37
+size 1974293
diff --git a/public/assets/blazer/application-ec191b6689a395c0fede5f96bcc30a93a832cfbb325d6c50f1c31fffe8f7352b.js.gz b/public/assets/blazer/application-ec191b6689a395c0fede5f96bcc30a93a832cfbb325d6c50f1c31fffe8f7352b.js.gz
new file mode 100644
index 00000000..cb1be13e
--- /dev/null
+++ b/public/assets/blazer/application-ec191b6689a395c0fede5f96bcc30a93a832cfbb325d6c50f1c31fffe8f7352b.js.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:71813e15686111989234a533a7c639cbcd64c1ec9a4999ac31b279300b9848cb
+size 378607
diff --git a/public/assets/blazer/application-f14294068656a14630709493ca1bdd375b16209db5d3307d61c4927dd3eff3c5.js b/public/assets/blazer/application-f14294068656a14630709493ca1bdd375b16209db5d3307d61c4927dd3eff3c5.js
new file mode 100644
index 00000000..14b3990b
--- /dev/null
+++ b/public/assets/blazer/application-f14294068656a14630709493ca1bdd375b16209db5d3307d61c4927dd3eff3c5.js
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:32ff6af566ab140819899b0fea350b80fdf527efbe30aadb14cac437e2bc01fb
+size 9
diff --git a/public/assets/blazer/application-f14294068656a14630709493ca1bdd375b16209db5d3307d61c4927dd3eff3c5.js.br b/public/assets/blazer/application-f14294068656a14630709493ca1bdd375b16209db5d3307d61c4927dd3eff3c5.js.br
new file mode 100644
index 00000000..9e09ad94
--- /dev/null
+++ b/public/assets/blazer/application-f14294068656a14630709493ca1bdd375b16209db5d3307d61c4927dd3eff3c5.js.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0b3fb497058b6fbc2560ef56b4e38cd96fa5537289c45fbbfe090f23c8b1161e
+size 14
diff --git a/public/assets/blazer/application-f14294068656a14630709493ca1bdd375b16209db5d3307d61c4927dd3eff3c5.js.gz b/public/assets/blazer/application-f14294068656a14630709493ca1bdd375b16209db5d3307d61c4927dd3eff3c5.js.gz
new file mode 100644
index 00000000..0a26fc68
--- /dev/null
+++ b/public/assets/blazer/application-f14294068656a14630709493ca1bdd375b16209db5d3307d61c4927dd3eff3c5.js.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d8cd6192edf216bb14ad01dcf0d7a164e3c8e759376d51528907fe0bcde2b781
+size 29
diff --git a/public/assets/blazer/favicon-ccead91b8853543a3542af03c7dde9963359b1c0b9b725220a7f193e1324ecd8.png b/public/assets/blazer/favicon-ccead91b8853543a3542af03c7dde9963359b1c0b9b725220a7f193e1324ecd8.png
new file mode 100644
index 00000000..f275a453
--- /dev/null
+++ b/public/assets/blazer/favicon-ccead91b8853543a3542af03c7dde9963359b1c0b9b725220a7f193e1324ecd8.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:392743107d0d14fea5699cff1e80d209db7058ef660e643ff9c9f07e990ac084
+size 320
diff --git a/public/assets/blazer/favicon-ccead91b8853543a3542af03c7dde9963359b1c0b9b725220a7f193e1324ecd8.png.br b/public/assets/blazer/favicon-ccead91b8853543a3542af03c7dde9963359b1c0b9b725220a7f193e1324ecd8.png.br
new file mode 100644
index 00000000..4290fce9
--- /dev/null
+++ b/public/assets/blazer/favicon-ccead91b8853543a3542af03c7dde9963359b1c0b9b725220a7f193e1324ecd8.png.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:42f1101a87e305093c8326571f6eba5e2f647183f15922b68b511f13e172908d
+size 248
diff --git a/public/assets/blazer/glyphicons-halflings-regular-0703369a358a012c0011843ae337a8a20270c336948a8668df5cb89a8827299b.woff b/public/assets/blazer/glyphicons-halflings-regular-0703369a358a012c0011843ae337a8a20270c336948a8668df5cb89a8827299b.woff
new file mode 100644
index 00000000..334f2da2
--- /dev/null
+++ b/public/assets/blazer/glyphicons-halflings-regular-0703369a358a012c0011843ae337a8a20270c336948a8668df5cb89a8827299b.woff
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a26394f7ede100ca118eff2eda08596275a9839b959c226e15439557a5a80742
+size 23424
diff --git a/public/assets/blazer/glyphicons-halflings-regular-0703369a358a012c0011843ae337a8a20270c336948a8668df5cb89a8827299b.woff.br b/public/assets/blazer/glyphicons-halflings-regular-0703369a358a012c0011843ae337a8a20270c336948a8668df5cb89a8827299b.woff.br
new file mode 100644
index 00000000..5acfec3d
--- /dev/null
+++ b/public/assets/blazer/glyphicons-halflings-regular-0703369a358a012c0011843ae337a8a20270c336948a8668df5cb89a8827299b.woff.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8ee84e264080ea5f4f7f23ae9c8aa8f138621b4a4dbbb86f3c839da28b0e5a56
+size 23116
diff --git a/public/assets/blazer/glyphicons-halflings-regular-0805fb1fe24235f70a639f67514990e4bfb6d2cfb00ca563ad4b553c240ddc33.eot b/public/assets/blazer/glyphicons-halflings-regular-0805fb1fe24235f70a639f67514990e4bfb6d2cfb00ca563ad4b553c240ddc33.eot
new file mode 100644
index 00000000..42ea705f
--- /dev/null
+++ b/public/assets/blazer/glyphicons-halflings-regular-0805fb1fe24235f70a639f67514990e4bfb6d2cfb00ca563ad4b553c240ddc33.eot
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:13634da87d9e23f8c3ed9108ce1724d183a39ad072e73e1b3d8cbf646d2d0407
+size 20127
diff --git a/public/assets/blazer/glyphicons-halflings-regular-0805fb1fe24235f70a639f67514990e4bfb6d2cfb00ca563ad4b553c240ddc33.eot.br b/public/assets/blazer/glyphicons-halflings-regular-0805fb1fe24235f70a639f67514990e4bfb6d2cfb00ca563ad4b553c240ddc33.eot.br
new file mode 100644
index 00000000..558ceb52
--- /dev/null
+++ b/public/assets/blazer/glyphicons-halflings-regular-0805fb1fe24235f70a639f67514990e4bfb6d2cfb00ca563ad4b553c240ddc33.eot.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c1a2ea6dc4d0790cede399727cf57dc55dd126e3886e756559cef13f897c6dd0
+size 20012
diff --git a/public/assets/blazer/glyphicons-halflings-regular-0805fb1fe24235f70a639f67514990e4bfb6d2cfb00ca563ad4b553c240ddc33.eot.gz b/public/assets/blazer/glyphicons-halflings-regular-0805fb1fe24235f70a639f67514990e4bfb6d2cfb00ca563ad4b553c240ddc33.eot.gz
new file mode 100644
index 00000000..44d30965
--- /dev/null
+++ b/public/assets/blazer/glyphicons-halflings-regular-0805fb1fe24235f70a639f67514990e4bfb6d2cfb00ca563ad4b553c240ddc33.eot.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:232dfba09dd29cfeff9e075a9ba30ed192f678b5946c1a1ec022e9887cc1dc8f
+size 20056
diff --git a/public/assets/blazer/glyphicons-halflings-regular-22d0c88a49d7d0ebe45627143a601061a32a46a9b9afd2dc7f457436f5f15f6e.svg b/public/assets/blazer/glyphicons-halflings-regular-22d0c88a49d7d0ebe45627143a601061a32a46a9b9afd2dc7f457436f5f15f6e.svg
new file mode 100644
index 00000000..781641cc
--- /dev/null
+++ b/public/assets/blazer/glyphicons-halflings-regular-22d0c88a49d7d0ebe45627143a601061a32a46a9b9afd2dc7f457436f5f15f6e.svg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:42f60659d265c1a3c30f9fa42abcbb56bd4a53af4d83d316d6dd7a36903c43e5
+size 108738
diff --git a/public/assets/blazer/glyphicons-halflings-regular-22d0c88a49d7d0ebe45627143a601061a32a46a9b9afd2dc7f457436f5f15f6e.svg.br b/public/assets/blazer/glyphicons-halflings-regular-22d0c88a49d7d0ebe45627143a601061a32a46a9b9afd2dc7f457436f5f15f6e.svg.br
new file mode 100644
index 00000000..63ae3b6c
--- /dev/null
+++ b/public/assets/blazer/glyphicons-halflings-regular-22d0c88a49d7d0ebe45627143a601061a32a46a9b9afd2dc7f457436f5f15f6e.svg.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:51506970c9012e0474056ff17ff204bf0f1782c547c6fb3dfb584e1572b1b1c5
+size 24800
diff --git a/public/assets/blazer/glyphicons-halflings-regular-22d0c88a49d7d0ebe45627143a601061a32a46a9b9afd2dc7f457436f5f15f6e.svg.gz b/public/assets/blazer/glyphicons-halflings-regular-22d0c88a49d7d0ebe45627143a601061a32a46a9b9afd2dc7f457436f5f15f6e.svg.gz
new file mode 100644
index 00000000..49a5ccf2
--- /dev/null
+++ b/public/assets/blazer/glyphicons-halflings-regular-22d0c88a49d7d0ebe45627143a601061a32a46a9b9afd2dc7f457436f5f15f6e.svg.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2879447637c85f780c62c9decfdc9b6847dfddc0c353ecf056a5563afd5d98c0
+size 26508
diff --git a/public/assets/blazer/glyphicons-halflings-regular-403acfcf0cbaebd1c28b404eec442cea53642644b3a73f91c5a4ab46859af772.woff2 b/public/assets/blazer/glyphicons-halflings-regular-403acfcf0cbaebd1c28b404eec442cea53642644b3a73f91c5a4ab46859af772.woff2
new file mode 100644
index 00000000..3336ba11
--- /dev/null
+++ b/public/assets/blazer/glyphicons-halflings-regular-403acfcf0cbaebd1c28b404eec442cea53642644b3a73f91c5a4ab46859af772.woff2
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fe185d11a49676890d47bb783312a0cda5a44c4039214094e7957b4c040ef11c
+size 18028
diff --git a/public/assets/blazer/glyphicons-halflings-regular-403acfcf0cbaebd1c28b404eec442cea53642644b3a73f91c5a4ab46859af772.woff2.br b/public/assets/blazer/glyphicons-halflings-regular-403acfcf0cbaebd1c28b404eec442cea53642644b3a73f91c5a4ab46859af772.woff2.br
new file mode 100644
index 00000000..2968e5d2
--- /dev/null
+++ b/public/assets/blazer/glyphicons-halflings-regular-403acfcf0cbaebd1c28b404eec442cea53642644b3a73f91c5a4ab46859af772.woff2.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e7b1a9608c41733d8a73d73c31348a3ab34df13dd8f69cf5dc6eb918a14f7bd4
+size 18016
diff --git a/public/assets/blazer/glyphicons-halflings-regular-7c9caa5f4e16169b0129fdf93c84e85ad14d6c107eb1b0ad60b542daf01ee1f0.ttf b/public/assets/blazer/glyphicons-halflings-regular-7c9caa5f4e16169b0129fdf93c84e85ad14d6c107eb1b0ad60b542daf01ee1f0.ttf
new file mode 100644
index 00000000..233386da
--- /dev/null
+++ b/public/assets/blazer/glyphicons-halflings-regular-7c9caa5f4e16169b0129fdf93c84e85ad14d6c107eb1b0ad60b542daf01ee1f0.ttf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e395044093757d82afcb138957d06a1ea9361bdcf0b442d06a18a8051af57456
+size 45404
diff --git a/public/assets/blazer/glyphicons-halflings-regular-7c9caa5f4e16169b0129fdf93c84e85ad14d6c107eb1b0ad60b542daf01ee1f0.ttf.br b/public/assets/blazer/glyphicons-halflings-regular-7c9caa5f4e16169b0129fdf93c84e85ad14d6c107eb1b0ad60b542daf01ee1f0.ttf.br
new file mode 100644
index 00000000..2f238f1e
--- /dev/null
+++ b/public/assets/blazer/glyphicons-halflings-regular-7c9caa5f4e16169b0129fdf93c84e85ad14d6c107eb1b0ad60b542daf01ee1f0.ttf.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:83d0181bfdb29d3744dbc122e63263657dcfa359fbd8a4f2cd915b2ee49d3fbe
+size 22714
diff --git a/public/assets/blazer/glyphicons-halflings-regular-7c9caa5f4e16169b0129fdf93c84e85ad14d6c107eb1b0ad60b542daf01ee1f0.ttf.gz b/public/assets/blazer/glyphicons-halflings-regular-7c9caa5f4e16169b0129fdf93c84e85ad14d6c107eb1b0ad60b542daf01ee1f0.ttf.gz
new file mode 100644
index 00000000..e77b3e37
--- /dev/null
+++ b/public/assets/blazer/glyphicons-halflings-regular-7c9caa5f4e16169b0129fdf93c84e85ad14d6c107eb1b0ad60b542daf01ee1f0.ttf.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c0668c774700aef315f25dcf8376be7aa88eec8b609b47f37c9ba53bbdb997ee
+size 23360
diff --git a/public/assets/dark-e2d0356b7ccd0cf1af4e1bfd28d32c69caf3f11f464c5b5cef404487f864ae73.css b/public/assets/dark-e2d0356b7ccd0cf1af4e1bfd28d32c69caf3f11f464c5b5cef404487f864ae73.css
new file mode 100644
index 00000000..6a5c5339
--- /dev/null
+++ b/public/assets/dark-e2d0356b7ccd0cf1af4e1bfd28d32c69caf3f11f464c5b5cef404487f864ae73.css
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2667cb03c8e57b2f19bb68f06f479054f73c61e2c355113230d5177a7029eed2
+size 64
diff --git a/public/assets/dark-e2d0356b7ccd0cf1af4e1bfd28d32c69caf3f11f464c5b5cef404487f864ae73.css.gz b/public/assets/dark-e2d0356b7ccd0cf1af4e1bfd28d32c69caf3f11f464c5b5cef404487f864ae73.css.gz
new file mode 100644
index 00000000..6b720779
--- /dev/null
+++ b/public/assets/dark-e2d0356b7ccd0cf1af4e1bfd28d32c69caf3f11f464c5b5cef404487f864ae73.css.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:166171efdf9e62a561adbdb3e9fb92a5849d8c6ae83d638f0ab6b9ba221dbd23
+size 75
diff --git a/public/assets/editor-6ceecb9d2dc47b39b99575e60bc2c9eec573a495812d521ec5b82dedd4f55807.css b/public/assets/editor-6ceecb9d2dc47b39b99575e60bc2c9eec573a495812d521ec5b82dedd4f55807.css
new file mode 100644
index 00000000..377ab667
--- /dev/null
+++ b/public/assets/editor-6ceecb9d2dc47b39b99575e60bc2c9eec573a495812d521ec5b82dedd4f55807.css
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b0b95902009200f525c963c605b9ffa600ea673860dae9f43f33bc557257182b
+size 3562
diff --git a/public/assets/editor-6ceecb9d2dc47b39b99575e60bc2c9eec573a495812d521ec5b82dedd4f55807.css.br b/public/assets/editor-6ceecb9d2dc47b39b99575e60bc2c9eec573a495812d521ec5b82dedd4f55807.css.br
new file mode 100644
index 00000000..df162533
--- /dev/null
+++ b/public/assets/editor-6ceecb9d2dc47b39b99575e60bc2c9eec573a495812d521ec5b82dedd4f55807.css.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9700c118f5e2df28e708aa79143d9135e0b7e67874ab3c976cd604d8a3beff9e
+size 738
diff --git a/public/assets/editor-6ceecb9d2dc47b39b99575e60bc2c9eec573a495812d521ec5b82dedd4f55807.css.gz b/public/assets/editor-6ceecb9d2dc47b39b99575e60bc2c9eec573a495812d521ec5b82dedd4f55807.css.gz
new file mode 100644
index 00000000..2b210f57
--- /dev/null
+++ b/public/assets/editor-6ceecb9d2dc47b39b99575e60bc2c9eec573a495812d521ec5b82dedd4f55807.css.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c0122fcc56f8dc98299e779bd5b3b2960c6d3e3535b0da3265765ca136268a8f
+size 846
diff --git a/public/assets/editor-d0d83345c634efdd987cfc6359297fec136984dd3bd5a2f6bcac2d58459a7aec.css b/public/assets/editor-d0d83345c634efdd987cfc6359297fec136984dd3bd5a2f6bcac2d58459a7aec.css
new file mode 100644
index 00000000..16758e87
--- /dev/null
+++ b/public/assets/editor-d0d83345c634efdd987cfc6359297fec136984dd3bd5a2f6bcac2d58459a7aec.css
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4c30e9a9afbc33c17d773933cc2a0e07c0bfc7f39547bd304c7e0ce6cd459414
+size 2233
diff --git a/public/assets/editor-d0d83345c634efdd987cfc6359297fec136984dd3bd5a2f6bcac2d58459a7aec.css.gz b/public/assets/editor-d0d83345c634efdd987cfc6359297fec136984dd3bd5a2f6bcac2d58459a7aec.css.gz
new file mode 100644
index 00000000..52f3fcad
--- /dev/null
+++ b/public/assets/editor-d0d83345c634efdd987cfc6359297fec136984dd3bd5a2f6bcac2d58459a7aec.css.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2f83d57dc7bfdc6e3640f36eb5c53bd32bfd301c2d136ed565964cee5e25badc
+size 678
diff --git a/public/assets/fonts-86ce817a6287b9ff301be232f102b66152dd83f264e13a531098d8dc8b1398da.css b/public/assets/fonts-86ce817a6287b9ff301be232f102b66152dd83f264e13a531098d8dc8b1398da.css
new file mode 100644
index 00000000..92436ec6
--- /dev/null
+++ b/public/assets/fonts-86ce817a6287b9ff301be232f102b66152dd83f264e13a531098d8dc8b1398da.css
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:053af9006ae009bec81ce6b0403cff779891708d6b446684fb7870ac5bacb462
+size 839
diff --git a/public/assets/fonts-86ce817a6287b9ff301be232f102b66152dd83f264e13a531098d8dc8b1398da.css.br b/public/assets/fonts-86ce817a6287b9ff301be232f102b66152dd83f264e13a531098d8dc8b1398da.css.br
new file mode 100644
index 00000000..430e9dd8
--- /dev/null
+++ b/public/assets/fonts-86ce817a6287b9ff301be232f102b66152dd83f264e13a531098d8dc8b1398da.css.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5fb27aaf2a70e5353771f5b1a3deb39506c97438f74930dbde35137a3370735c
+size 340
diff --git a/public/assets/fonts-86ce817a6287b9ff301be232f102b66152dd83f264e13a531098d8dc8b1398da.css.gz b/public/assets/fonts-86ce817a6287b9ff301be232f102b66152dd83f264e13a531098d8dc8b1398da.css.gz
new file mode 100644
index 00000000..2e6771be
--- /dev/null
+++ b/public/assets/fonts-86ce817a6287b9ff301be232f102b66152dd83f264e13a531098d8dc8b1398da.css.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9e005f190d04b1bccc984df0b54ea772eb13fd97c813075f4b2e9c39fab2cc35
+size 390
diff --git a/public/assets/icon_external_link-1af8262ac9c00df26e81bc5a33bcf64350729f954b85f82d5e759fffec4e183a.png b/public/assets/icon_external_link-1af8262ac9c00df26e81bc5a33bcf64350729f954b85f82d5e759fffec4e183a.png
new file mode 100644
index 00000000..e882b8bc
--- /dev/null
+++ b/public/assets/icon_external_link-1af8262ac9c00df26e81bc5a33bcf64350729f954b85f82d5e759fffec4e183a.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0a0acd631fd5704e940b9f486d3234aa9ab871881733f48d6edd3cb1f1a09ffc
+size 144
diff --git a/public/assets/icon_external_link-1af8262ac9c00df26e81bc5a33bcf64350729f954b85f82d5e759fffec4e183a.png.br b/public/assets/icon_external_link-1af8262ac9c00df26e81bc5a33bcf64350729f954b85f82d5e759fffec4e183a.png.br
new file mode 100644
index 00000000..ca08d316
--- /dev/null
+++ b/public/assets/icon_external_link-1af8262ac9c00df26e81bc5a33bcf64350729f954b85f82d5e759fffec4e183a.png.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0c50779d6d93ea71b10be4972af879e611353812b40f566d864f189218129cf9
+size 149
diff --git a/public/assets/layers-0e356f4d554162eb71f127f50460dbc55d405027189ebe90b20729ef18d13d36.png b/public/assets/layers-0e356f4d554162eb71f127f50460dbc55d405027189ebe90b20729ef18d13d36.png
new file mode 100644
index 00000000..7b44754c
--- /dev/null
+++ b/public/assets/layers-0e356f4d554162eb71f127f50460dbc55d405027189ebe90b20729ef18d13d36.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1dbbe9d028e292f36fcba8f8b3a28d5e8932754fc2215b9ac69e4cdecf5107c6
+size 696
diff --git a/public/assets/layers-0e356f4d554162eb71f127f50460dbc55d405027189ebe90b20729ef18d13d36.png.br b/public/assets/layers-0e356f4d554162eb71f127f50460dbc55d405027189ebe90b20729ef18d13d36.png.br
new file mode 100644
index 00000000..21812b3e
--- /dev/null
+++ b/public/assets/layers-0e356f4d554162eb71f127f50460dbc55d405027189ebe90b20729ef18d13d36.png.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e255d97d12f227f9d2fabd481fa56d89bf33b47a4d108b031e7b96ddc0fb0066
+size 701
diff --git a/public/assets/layers-2x-ba8fa601e413b14db27db07285ade3951721e02244c31523284ab2d1ed53c3dc.png b/public/assets/layers-2x-ba8fa601e413b14db27db07285ade3951721e02244c31523284ab2d1ed53c3dc.png
new file mode 100644
index 00000000..d3cf7e52
--- /dev/null
+++ b/public/assets/layers-2x-ba8fa601e413b14db27db07285ade3951721e02244c31523284ab2d1ed53c3dc.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:066daca850d8ffbef007af00b06eac0015728dee279c51f3cb6c716df7c42edf
+size 1259
diff --git a/public/assets/layers-2x-ba8fa601e413b14db27db07285ade3951721e02244c31523284ab2d1ed53c3dc.png.br b/public/assets/layers-2x-ba8fa601e413b14db27db07285ade3951721e02244c31523284ab2d1ed53c3dc.png.br
new file mode 100644
index 00000000..cda7f53d
--- /dev/null
+++ b/public/assets/layers-2x-ba8fa601e413b14db27db07285ade3951721e02244c31523284ab2d1ed53c3dc.png.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:47119b2b0eb7d15fa47527efc1fa04713d80990ed6a7f2e2f58f91a8cddd1b03
+size 1264
diff --git a/public/assets/logo-e11ab53230eae9497ea201f3ad57549af343ddc1d24ddc78b055627cf14e9d5d.png b/public/assets/logo-e11ab53230eae9497ea201f3ad57549af343ddc1d24ddc78b055627cf14e9d5d.png
new file mode 100644
index 00000000..be79dc74
--- /dev/null
+++ b/public/assets/logo-e11ab53230eae9497ea201f3ad57549af343ddc1d24ddc78b055627cf14e9d5d.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:abab4950f459ebf3f475d376d6fd468e735cab2d86c712222fa586569a273a09
+size 2001
diff --git a/public/assets/logo-e11ab53230eae9497ea201f3ad57549af343ddc1d24ddc78b055627cf14e9d5d.png.br b/public/assets/logo-e11ab53230eae9497ea201f3ad57549af343ddc1d24ddc78b055627cf14e9d5d.png.br
new file mode 100644
index 00000000..5fce7f8e
--- /dev/null
+++ b/public/assets/logo-e11ab53230eae9497ea201f3ad57549af343ddc1d24ddc78b055627cf14e9d5d.png.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:348d75dc528dbaff2a18adb6f4a4b66d4610e6dca2f99889b52e7f0c629a8be7
+size 2006
diff --git a/public/assets/manifest-04024382391bb910584145d8113cf35ef376b55d125bb4516cebeb14ce788597.js b/public/assets/manifest-04024382391bb910584145d8113cf35ef376b55d125bb4516cebeb14ce788597.js
new file mode 100644
index 00000000..e69de29b
diff --git a/public/assets/manifest-04024382391bb910584145d8113cf35ef376b55d125bb4516cebeb14ce788597.js.gz b/public/assets/manifest-04024382391bb910584145d8113cf35ef376b55d125bb4516cebeb14ce788597.js.gz
new file mode 100644
index 00000000..d673f46c
--- /dev/null
+++ b/public/assets/manifest-04024382391bb910584145d8113cf35ef376b55d125bb4516cebeb14ce788597.js.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d669538fdf855979be9c4089f9469a7f2ee433ce58a19ac633f478afcffc6e1e
+size 20
diff --git a/public/assets/manifest-dad05bf766af0fe3d79dd746db3c1361c0583026cdf35d6a2921bccaea835331.js b/public/assets/manifest-dad05bf766af0fe3d79dd746db3c1361c0583026cdf35d6a2921bccaea835331.js
new file mode 100644
index 00000000..7a77a071
--- /dev/null
+++ b/public/assets/manifest-dad05bf766af0fe3d79dd746db3c1361c0583026cdf35d6a2921bccaea835331.js
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6a3cf5192354f71615ac51034b3e97c20eda99643fcaf5bbe6d41ad59bd12167
+size 3
diff --git a/public/assets/manifest-dad05bf766af0fe3d79dd746db3c1361c0583026cdf35d6a2921bccaea835331.js.br b/public/assets/manifest-dad05bf766af0fe3d79dd746db3c1361c0583026cdf35d6a2921bccaea835331.js.br
new file mode 100644
index 00000000..40a6d1ac
--- /dev/null
+++ b/public/assets/manifest-dad05bf766af0fe3d79dd746db3c1361c0583026cdf35d6a2921bccaea835331.js.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ad41782cd73052ce3e59ea9b261ffeeeebfbacaa90924c01c7c47f012674bb15
+size 8
diff --git a/public/assets/manifest-dad05bf766af0fe3d79dd746db3c1361c0583026cdf35d6a2921bccaea835331.js.gz b/public/assets/manifest-dad05bf766af0fe3d79dd746db3c1361c0583026cdf35d6a2921bccaea835331.js.gz
new file mode 100644
index 00000000..884f1518
--- /dev/null
+++ b/public/assets/manifest-dad05bf766af0fe3d79dd746db3c1361c0583026cdf35d6a2921bccaea835331.js.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:19a332fca5af4a8c3ee68386360b5212428611709c8463c00631d65141b8f5bb
+size 23
diff --git a/public/assets/marker-icon-2x-091245b393c16cdcefe54920aa7d3994a0683317ca9a58d35cbc5ec65996398c.png b/public/assets/marker-icon-2x-091245b393c16cdcefe54920aa7d3994a0683317ca9a58d35cbc5ec65996398c.png
new file mode 100644
index 00000000..09e8445f
--- /dev/null
+++ b/public/assets/marker-icon-2x-091245b393c16cdcefe54920aa7d3994a0683317ca9a58d35cbc5ec65996398c.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:00179c4c1ee830d3a108412ae0d294f55776cfeb085c60129a39aa6fc4ae2528
+size 2464
diff --git a/public/assets/marker-icon-2x-091245b393c16cdcefe54920aa7d3994a0683317ca9a58d35cbc5ec65996398c.png.br b/public/assets/marker-icon-2x-091245b393c16cdcefe54920aa7d3994a0683317ca9a58d35cbc5ec65996398c.png.br
new file mode 100644
index 00000000..585d2e48
--- /dev/null
+++ b/public/assets/marker-icon-2x-091245b393c16cdcefe54920aa7d3994a0683317ca9a58d35cbc5ec65996398c.png.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c4f6ce09c4c3a59cfac5c03a03de02b170d35cfefd7e1247a317dc772c889395
+size 2469
diff --git a/public/assets/marker-icon-3d253116ec4ba0e1f22a01cdf1ff7f120fa4d89a6cd0933d68f12951d19809b4.png b/public/assets/marker-icon-3d253116ec4ba0e1f22a01cdf1ff7f120fa4d89a6cd0933d68f12951d19809b4.png
new file mode 100644
index 00000000..b1789c76
--- /dev/null
+++ b/public/assets/marker-icon-3d253116ec4ba0e1f22a01cdf1ff7f120fa4d89a6cd0933d68f12951d19809b4.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:574c3a5cca85f4114085b6841596d62f00d7c892c7b03f28cbfa301deb1dc437
+size 1466
diff --git a/public/assets/marker-icon-3d253116ec4ba0e1f22a01cdf1ff7f120fa4d89a6cd0933d68f12951d19809b4.png.br b/public/assets/marker-icon-3d253116ec4ba0e1f22a01cdf1ff7f120fa4d89a6cd0933d68f12951d19809b4.png.br
new file mode 100644
index 00000000..62bba2a0
--- /dev/null
+++ b/public/assets/marker-icon-3d253116ec4ba0e1f22a01cdf1ff7f120fa4d89a6cd0933d68f12951d19809b4.png.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4d73a1e81d4d7b880342c1fa48caeb6cdb56cc941ad18000d932dfaec8ba1086
+size 1471
diff --git a/public/assets/marker-shadow-a2d94406ba198f61f68a71ed8f9f9c701122c0c33b775d990edceae4aece567f.png b/public/assets/marker-shadow-a2d94406ba198f61f68a71ed8f9f9c701122c0c33b775d990edceae4aece567f.png
new file mode 100644
index 00000000..dc111216
--- /dev/null
+++ b/public/assets/marker-shadow-a2d94406ba198f61f68a71ed8f9f9c701122c0c33b775d990edceae4aece567f.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:264f5c640339f042dd729062cfc04c17f8ea0f29882b538e3848ed8f10edb4da
+size 618
diff --git a/public/assets/marker-shadow-a2d94406ba198f61f68a71ed8f9f9c701122c0c33b775d990edceae4aece567f.png.br b/public/assets/marker-shadow-a2d94406ba198f61f68a71ed8f9f9c701122c0c33b775d990edceae4aece567f.png.br
new file mode 100644
index 00000000..940c4d9b
--- /dev/null
+++ b/public/assets/marker-shadow-a2d94406ba198f61f68a71ed8f9f9c701122c0c33b775d990edceae4aece567f.png.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8758eb0644225f0a3c8e03fb1dbe319f6427b4116a538084f18ba5a6dcd65eb2
+size 623
diff --git a/public/assets/new_editor-15587648151a2d95c803f56ceaa2b4333519e99469c673d583c280a9da54b695.css b/public/assets/new_editor-15587648151a2d95c803f56ceaa2b4333519e99469c673d583c280a9da54b695.css
new file mode 100644
index 00000000..56ae4aa9
--- /dev/null
+++ b/public/assets/new_editor-15587648151a2d95c803f56ceaa2b4333519e99469c673d583c280a9da54b695.css
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a8d681a496901b8002289244aed10757942ed7a9397e731adaf2b21e4b05c888
+size 249
diff --git a/public/assets/new_editor-15587648151a2d95c803f56ceaa2b4333519e99469c673d583c280a9da54b695.css.gz b/public/assets/new_editor-15587648151a2d95c803f56ceaa2b4333519e99469c673d583c280a9da54b695.css.gz
new file mode 100644
index 00000000..b8804da9
--- /dev/null
+++ b/public/assets/new_editor-15587648151a2d95c803f56ceaa2b4333519e99469c673d583c280a9da54b695.css.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f886217faf0cc7c1ec6a115c1bfea6f71d016784230989d5fad9129c3cec64de
+size 143
diff --git a/public/assets/saira/v3/SairaBold-subset-0c1968b6a54ea5684d70cc5b51fb1ae3186386fe9363bf3edaf01663ac641341.woff2 b/public/assets/saira/v3/SairaBold-subset-0c1968b6a54ea5684d70cc5b51fb1ae3186386fe9363bf3edaf01663ac641341.woff2
new file mode 100644
index 00000000..580c899c
--- /dev/null
+++ b/public/assets/saira/v3/SairaBold-subset-0c1968b6a54ea5684d70cc5b51fb1ae3186386fe9363bf3edaf01663ac641341.woff2
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0ad13d7b01c301feecfb7f760791100710930be2d232fcdf97fb09a1301e4c3e
+size 16264
diff --git a/public/assets/saira/v3/SairaBold-subset-0c1968b6a54ea5684d70cc5b51fb1ae3186386fe9363bf3edaf01663ac641341.woff2.br b/public/assets/saira/v3/SairaBold-subset-0c1968b6a54ea5684d70cc5b51fb1ae3186386fe9363bf3edaf01663ac641341.woff2.br
new file mode 100644
index 00000000..ab0b6472
--- /dev/null
+++ b/public/assets/saira/v3/SairaBold-subset-0c1968b6a54ea5684d70cc5b51fb1ae3186386fe9363bf3edaf01663ac641341.woff2.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8a45bda0673da257af77f89c6d9151c908dd15dae3eeb536911be81383e58e42
+size 16260
diff --git a/public/assets/saira/v3/SairaBold-subset.zopfli-2d3f8769110de8d5709d5162dbf0dcb9ab8df71e55f63cfd986bdb68ee2ade0b.woff b/public/assets/saira/v3/SairaBold-subset.zopfli-2d3f8769110de8d5709d5162dbf0dcb9ab8df71e55f63cfd986bdb68ee2ade0b.woff
new file mode 100644
index 00000000..94528fe4
--- /dev/null
+++ b/public/assets/saira/v3/SairaBold-subset.zopfli-2d3f8769110de8d5709d5162dbf0dcb9ab8df71e55f63cfd986bdb68ee2ade0b.woff
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cd722d9eb3a725f4188615c514c5c0e6b1b82de55a00dca194efa84704257dd2
+size 20120
diff --git a/public/assets/saira/v3/SairaBold-subset.zopfli-2d3f8769110de8d5709d5162dbf0dcb9ab8df71e55f63cfd986bdb68ee2ade0b.woff.br b/public/assets/saira/v3/SairaBold-subset.zopfli-2d3f8769110de8d5709d5162dbf0dcb9ab8df71e55f63cfd986bdb68ee2ade0b.woff.br
new file mode 100644
index 00000000..38204fe0
--- /dev/null
+++ b/public/assets/saira/v3/SairaBold-subset.zopfli-2d3f8769110de8d5709d5162dbf0dcb9ab8df71e55f63cfd986bdb68ee2ade0b.woff.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0d58d08fffad848dc745108c011fe0b71bdfa14d11d17d68d514205970726bd5
+size 20055
diff --git a/public/assets/saira/v3/SairaMedium-subset-6d53d976d73b86358489cb76fc34ec0683d57a1b2635c43acbae45be3349d976.woff2 b/public/assets/saira/v3/SairaMedium-subset-6d53d976d73b86358489cb76fc34ec0683d57a1b2635c43acbae45be3349d976.woff2
new file mode 100644
index 00000000..7127bebe
--- /dev/null
+++ b/public/assets/saira/v3/SairaMedium-subset-6d53d976d73b86358489cb76fc34ec0683d57a1b2635c43acbae45be3349d976.woff2
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1ac4573ca9ed8e08a742d203171057acc3d8f5f49825d9351bd2a22c2d58e669
+size 16388
diff --git a/public/assets/saira/v3/SairaMedium-subset-6d53d976d73b86358489cb76fc34ec0683d57a1b2635c43acbae45be3349d976.woff2.br b/public/assets/saira/v3/SairaMedium-subset-6d53d976d73b86358489cb76fc34ec0683d57a1b2635c43acbae45be3349d976.woff2.br
new file mode 100644
index 00000000..2d4a45ab
--- /dev/null
+++ b/public/assets/saira/v3/SairaMedium-subset-6d53d976d73b86358489cb76fc34ec0683d57a1b2635c43acbae45be3349d976.woff2.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:92f6b5c4fd4dabbbedbc96519088b4896dbe07b393d06bbbb868d82a618d352a
+size 16391
diff --git a/public/assets/saira/v3/SairaMedium-subset.zopfli-47d24dd6cc6451cd2fb3803333f4de3e11033437aa0c8d3d06edcb19e4e38ecb.woff b/public/assets/saira/v3/SairaMedium-subset.zopfli-47d24dd6cc6451cd2fb3803333f4de3e11033437aa0c8d3d06edcb19e4e38ecb.woff
new file mode 100644
index 00000000..bb8a3825
--- /dev/null
+++ b/public/assets/saira/v3/SairaMedium-subset.zopfli-47d24dd6cc6451cd2fb3803333f4de3e11033437aa0c8d3d06edcb19e4e38ecb.woff
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4dec398a6c292da28349e76f94646d91d425cf4ddc7f91d749075f72209d0dab
+size 20232
diff --git a/public/assets/saira/v3/SairaMedium-subset.zopfli-47d24dd6cc6451cd2fb3803333f4de3e11033437aa0c8d3d06edcb19e4e38ecb.woff.br b/public/assets/saira/v3/SairaMedium-subset.zopfli-47d24dd6cc6451cd2fb3803333f4de3e11033437aa0c8d3d06edcb19e4e38ecb.woff.br
new file mode 100644
index 00000000..6da047e7
--- /dev/null
+++ b/public/assets/saira/v3/SairaMedium-subset.zopfli-47d24dd6cc6451cd2fb3803333f4de3e11033437aa0c8d3d06edcb19e4e38ecb.woff.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d2a22be46135bb21d4984271f8dd42e6762a35152fba61f93ce89edd6478df23
+size 20174
diff --git a/public/assets/sutty-08b30df17da83a32911e3bb4fa0a2c967148a2f98020a63b6c171c17c94bf05d.svg b/public/assets/sutty-08b30df17da83a32911e3bb4fa0a2c967148a2f98020a63b6c171c17c94bf05d.svg
new file mode 100644
index 00000000..68fca50c
--- /dev/null
+++ b/public/assets/sutty-08b30df17da83a32911e3bb4fa0a2c967148a2f98020a63b6c171c17c94bf05d.svg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:eb86744bcec2d691c94d431627e412113f3648eb02420f2af86de3e3884c5a6d
+size 1956
diff --git a/public/assets/sutty-08b30df17da83a32911e3bb4fa0a2c967148a2f98020a63b6c171c17c94bf05d.svg.br b/public/assets/sutty-08b30df17da83a32911e3bb4fa0a2c967148a2f98020a63b6c171c17c94bf05d.svg.br
new file mode 100644
index 00000000..bbf3b21e
--- /dev/null
+++ b/public/assets/sutty-08b30df17da83a32911e3bb4fa0a2c967148a2f98020a63b6c171c17c94bf05d.svg.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fb20639b4ce178eedfc586c73f7086bef65ef70533c995afdc2eedb3d1fa76c4
+size 894
diff --git a/public/assets/sutty-08b30df17da83a32911e3bb4fa0a2c967148a2f98020a63b6c171c17c94bf05d.svg.gz b/public/assets/sutty-08b30df17da83a32911e3bb4fa0a2c967148a2f98020a63b6c171c17c94bf05d.svg.gz
new file mode 100644
index 00000000..dffee65e
--- /dev/null
+++ b/public/assets/sutty-08b30df17da83a32911e3bb4fa0a2c967148a2f98020a63b6c171c17c94bf05d.svg.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:19973f783284df5608ec79a4fa46dce362f5626112c218266f04329b01049c43
+size 943
diff --git a/public/assets/sutty_cuadrada-547911cb970c82f2bf8fa2d68b3b32e5e2a1c0ed787dafa6ea1b98b52b96328f.png b/public/assets/sutty_cuadrada-547911cb970c82f2bf8fa2d68b3b32e5e2a1c0ed787dafa6ea1b98b52b96328f.png
new file mode 100644
index 00000000..1b018802
--- /dev/null
+++ b/public/assets/sutty_cuadrada-547911cb970c82f2bf8fa2d68b3b32e5e2a1c0ed787dafa6ea1b98b52b96328f.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:56aa311c3c5249e54d70f03b33fc681b593cd93e74b7af5d80316c5b7d1c6a76
+size 6868
diff --git a/public/assets/sutty_cuadrada-547911cb970c82f2bf8fa2d68b3b32e5e2a1c0ed787dafa6ea1b98b52b96328f.png.br b/public/assets/sutty_cuadrada-547911cb970c82f2bf8fa2d68b3b32e5e2a1c0ed787dafa6ea1b98b52b96328f.png.br
new file mode 100644
index 00000000..727045b0
--- /dev/null
+++ b/public/assets/sutty_cuadrada-547911cb970c82f2bf8fa2d68b3b32e5e2a1c0ed787dafa6ea1b98b52b96328f.png.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8af682a97967a339d63b8c22a24ab30065e9423e1775e6c6ccdf662e5081a4f9
+size 6530
diff --git a/public/packs/css/application-1224e21e.css b/public/packs/css/application-1224e21e.css
new file mode 100644
index 00000000..390ac1f2
--- /dev/null
+++ b/public/packs/css/application-1224e21e.css
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a7ffc74f9219623a13902d9ac806b9e71cfdabc2428e1f6ae4015da56cb7c7d9
+size 49314
diff --git a/public/packs/css/application-1224e21e.css.br b/public/packs/css/application-1224e21e.css.br
new file mode 100644
index 00000000..1f5776e2
--- /dev/null
+++ b/public/packs/css/application-1224e21e.css.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:68809099d5fd771490c8eee922fe59c2be223a7b3ea6bec6889bc26380dcc788
+size 10017
diff --git a/public/packs/css/application-1224e21e.css.gz b/public/packs/css/application-1224e21e.css.gz
new file mode 100644
index 00000000..3784a199
--- /dev/null
+++ b/public/packs/css/application-1224e21e.css.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8058f9e1c5cfdf8de6d896fe9dd138b527e2409e1c467f79b376f75fa0c24b76
+size 12355
diff --git a/public/packs/js/application-d4a959210a82d3d1b10f.js b/public/packs/js/application-d4a959210a82d3d1b10f.js
new file mode 100644
index 00000000..ae056684
--- /dev/null
+++ b/public/packs/js/application-d4a959210a82d3d1b10f.js
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1d178fb353afcf2dedc8bba8ce4b978f0bc93f679479a7f67c0473e25324a72c
+size 1516360
diff --git a/public/packs/js/application-d4a959210a82d3d1b10f.js.LICENSE.txt b/public/packs/js/application-d4a959210a82d3d1b10f.js.LICENSE.txt
new file mode 100644
index 00000000..979d1ab9
--- /dev/null
+++ b/public/packs/js/application-d4a959210a82d3d1b10f.js.LICENSE.txt
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c3b9ae1697c4b8a404afe77afe035de28b7f4880e9f52caac82620bb8d8ed495
+size 854
diff --git a/public/packs/js/application-d4a959210a82d3d1b10f.js.br b/public/packs/js/application-d4a959210a82d3d1b10f.js.br
new file mode 100644
index 00000000..b7a543a0
--- /dev/null
+++ b/public/packs/js/application-d4a959210a82d3d1b10f.js.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f37b681c0c2989dba2d59695f7d3d38c9357edab713b2b5899bf2c20dbed1f11
+size 333228
diff --git a/public/packs/js/application-d4a959210a82d3d1b10f.js.gz b/public/packs/js/application-d4a959210a82d3d1b10f.js.gz
new file mode 100644
index 00000000..f800b3fd
--- /dev/null
+++ b/public/packs/js/application-d4a959210a82d3d1b10f.js.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a34e726274558a688517e19a1761f028072b7a6f614b4d1ec6f8609e61443bb4
+size 441095
diff --git a/public/packs/js/application-d4a959210a82d3d1b10f.js.map b/public/packs/js/application-d4a959210a82d3d1b10f.js.map
new file mode 100644
index 00000000..76a8fd29
--- /dev/null
+++ b/public/packs/js/application-d4a959210a82d3d1b10f.js.map
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d5c9c622b3d7a39cf332a95f1877dc8d5cbec844fa99cb55c75e45dfed5531dd
+size 5988200
diff --git a/public/packs/js/application-d4a959210a82d3d1b10f.js.map.br b/public/packs/js/application-d4a959210a82d3d1b10f.js.map.br
new file mode 100644
index 00000000..a9d2dce3
--- /dev/null
+++ b/public/packs/js/application-d4a959210a82d3d1b10f.js.map.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d5242fa25b04407204920fb98a250ea9af7de4d3575ea1dcb79801f2c002fb8f
+size 1279231
diff --git a/public/packs/js/application-d4a959210a82d3d1b10f.js.map.gz b/public/packs/js/application-d4a959210a82d3d1b10f.js.map.gz
new file mode 100644
index 00000000..ffbbaff0
--- /dev/null
+++ b/public/packs/js/application-d4a959210a82d3d1b10f.js.map.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d70208139d5de996bc6a01daacf3fc7e07edf975296795cae487e71e2c198e07
+size 1583975
diff --git a/public/packs/manifest.json b/public/packs/manifest.json
new file mode 100644
index 00000000..d0f77c7e
--- /dev/null
+++ b/public/packs/manifest.json
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0e5e2ddeee2bb351e8f9e0b16d28fcebd7314227abdffa65e02e83755db591d6
+size 1426
diff --git a/public/packs/manifest.json.br b/public/packs/manifest.json.br
new file mode 100644
index 00000000..76978873
--- /dev/null
+++ b/public/packs/manifest.json.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a7c9ab4526ce1ce929b4d0c242dee97cacc9f79fac73948c42a4167494e251e1
+size 321
diff --git a/public/packs/manifest.json.gz b/public/packs/manifest.json.gz
new file mode 100644
index 00000000..c691abe7
--- /dev/null
+++ b/public/packs/manifest.json.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:caf56db4d1167dd81eadb2da3a1fb6d14bf9f668381d4aa8295f333bcd649f00
+size 365
diff --git a/public/packs/media/fonts/forkawesome-webfont-2dfb5f36.woff b/public/packs/media/fonts/forkawesome-webfont-2dfb5f36.woff
new file mode 100644
index 00000000..8925c5d3
--- /dev/null
+++ b/public/packs/media/fonts/forkawesome-webfont-2dfb5f36.woff
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:53ab31062cf740aa76615d2c98aea80b177845d7ed95de45889b3824b0e1597c
+size 115148
diff --git a/public/packs/media/fonts/forkawesome-webfont-7c20758e.woff2 b/public/packs/media/fonts/forkawesome-webfont-7c20758e.woff2
new file mode 100644
index 00000000..52865bdb
--- /dev/null
+++ b/public/packs/media/fonts/forkawesome-webfont-7c20758e.woff2
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:84422de97eb1cf27bcb9bca4f3fbb18f3ebc711647b09c68292f5f43c89d5064
+size 91624
diff --git a/public/packs/media/fonts/forkawesome-webfont-86541105.svg b/public/packs/media/fonts/forkawesome-webfont-86541105.svg
new file mode 100644
index 00000000..af45aadc
--- /dev/null
+++ b/public/packs/media/fonts/forkawesome-webfont-86541105.svg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:505e7f9fe61ba6d17d8514b5d0c3a75166dab1b57527e2d3a3baf2047624ba93
+size 480784
diff --git a/public/packs/media/fonts/forkawesome-webfont-86541105.svg.br b/public/packs/media/fonts/forkawesome-webfont-86541105.svg.br
new file mode 100644
index 00000000..827ed0bc
--- /dev/null
+++ b/public/packs/media/fonts/forkawesome-webfont-86541105.svg.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4df44c3056ab68d2e1cf1970189876295b62db1640e6ed885c78d8c46f94e66f
+size 126249
diff --git a/public/packs/media/fonts/forkawesome-webfont-86541105.svg.gz b/public/packs/media/fonts/forkawesome-webfont-86541105.svg.gz
new file mode 100644
index 00000000..0676bab5
--- /dev/null
+++ b/public/packs/media/fonts/forkawesome-webfont-86541105.svg.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:49664085aa6a37335724f0288531562f352e81d10fdfeadd4a8ed0764eae2f50
+size 160947
diff --git a/public/packs/media/fonts/forkawesome-webfont-e182ad6d.eot b/public/packs/media/fonts/forkawesome-webfont-e182ad6d.eot
new file mode 100644
index 00000000..37e93df5
--- /dev/null
+++ b/public/packs/media/fonts/forkawesome-webfont-e182ad6d.eot
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0d96fdd7d6854cf875ce3090e017b0078ae2f7e923763bcbb90748a01c6fb7fd
+size 188946
diff --git a/public/packs/media/fonts/forkawesome-webfont-e182ad6d.eot.br b/public/packs/media/fonts/forkawesome-webfont-e182ad6d.eot.br
new file mode 100644
index 00000000..01f63da2
--- /dev/null
+++ b/public/packs/media/fonts/forkawesome-webfont-e182ad6d.eot.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:36cb46345792080af5dbe8bd742dc632a3821276fff76e57877c93c0e8afb00a
+size 107072
diff --git a/public/packs/media/fonts/forkawesome-webfont-e182ad6d.eot.gz b/public/packs/media/fonts/forkawesome-webfont-e182ad6d.eot.gz
new file mode 100644
index 00000000..5bb32cdc
--- /dev/null
+++ b/public/packs/media/fonts/forkawesome-webfont-e182ad6d.eot.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:413b68fbd4bc71d5aa98410c6f8048f971b55e7d824180d0fab665cc55c3d9a3
+size 115772
diff --git a/public/packs/media/fonts/forkawesome-webfont-ee4d8bfd.ttf b/public/packs/media/fonts/forkawesome-webfont-ee4d8bfd.ttf
new file mode 100644
index 00000000..e6380d0e
--- /dev/null
+++ b/public/packs/media/fonts/forkawesome-webfont-ee4d8bfd.ttf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3e4beb40f0cc19ec55f2ab741d42e806fc6155ccf6e40e50965196c0bcc6aba4
+size 188756
diff --git a/public/packs/media/fonts/forkawesome-webfont-ee4d8bfd.ttf.br b/public/packs/media/fonts/forkawesome-webfont-ee4d8bfd.ttf.br
new file mode 100644
index 00000000..c35abc27
--- /dev/null
+++ b/public/packs/media/fonts/forkawesome-webfont-ee4d8bfd.ttf.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:de3e4f20e5341214cc1292a61d0f49d833187e862fb1fbfeb746d25f0465ee6b
+size 106884
diff --git a/public/packs/media/fonts/forkawesome-webfont-ee4d8bfd.ttf.gz b/public/packs/media/fonts/forkawesome-webfont-ee4d8bfd.ttf.gz
new file mode 100644
index 00000000..44d9de5a
--- /dev/null
+++ b/public/packs/media/fonts/forkawesome-webfont-ee4d8bfd.ttf.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:26c357b09eb784753afcd35a1aa47fe65378a52c95db0496e98dfb999c9ab1b8
+size 115685
diff --git a/public/packs/media/images/layers-2x-8f2c4d11.png b/public/packs/media/images/layers-2x-8f2c4d11.png
new file mode 100644
index 00000000..d3cf7e52
--- /dev/null
+++ b/public/packs/media/images/layers-2x-8f2c4d11.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:066daca850d8ffbef007af00b06eac0015728dee279c51f3cb6c716df7c42edf
+size 1259
diff --git a/public/packs/media/images/layers-416d9136.png b/public/packs/media/images/layers-416d9136.png
new file mode 100644
index 00000000..7b44754c
--- /dev/null
+++ b/public/packs/media/images/layers-416d9136.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1dbbe9d028e292f36fcba8f8b3a28d5e8932754fc2215b9ac69e4cdecf5107c6
+size 696
diff --git a/public/packs/media/images/marker-icon-2b3e1faf.png b/public/packs/media/images/marker-icon-2b3e1faf.png
new file mode 100644
index 00000000..b1789c76
--- /dev/null
+++ b/public/packs/media/images/marker-icon-2b3e1faf.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:574c3a5cca85f4114085b6841596d62f00d7c892c7b03f28cbfa301deb1dc437
+size 1466
diff --git a/public/packs/media/images/marker-icon-2x-680f69f3.png b/public/packs/media/images/marker-icon-2x-680f69f3.png
new file mode 100644
index 00000000..09e8445f
--- /dev/null
+++ b/public/packs/media/images/marker-icon-2x-680f69f3.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:00179c4c1ee830d3a108412ae0d294f55776cfeb085c60129a39aa6fc4ae2528
+size 2464
diff --git a/public/packs/media/images/marker-shadow-a0c6cc14.png b/public/packs/media/images/marker-shadow-a0c6cc14.png
new file mode 100644
index 00000000..dc111216
--- /dev/null
+++ b/public/packs/media/images/marker-shadow-a0c6cc14.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:264f5c640339f042dd729062cfc04c17f8ea0f29882b538e3848ed8f10edb4da
+size 618
diff --git a/yarn.lock b/yarn.lock
index 50342862..fc6ae7cb 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4,7 +4,7 @@
"@airbrake/browser@^1.4.1":
version "1.4.2"
- resolved "https://registry.yarnpkg.com/@airbrake/browser/-/browser-1.4.2.tgz#c7aa1b6b0db664011c71e733d364d03b393e9774"
+ resolved "https://registry.npmjs.org/@airbrake/browser/-/browser-1.4.2.tgz"
integrity sha512-hlP+IMDcJXpoIaXTeKl8W+p18hKRJ9SKgLQTVh45GA9/qFXsLgu0V4tn0jDT5NQQXJG1+IKBv/RLRVgyswJy+w==
dependencies:
"@types/promise-polyfill" "^6.0.3"
@@ -14,42 +14,42 @@
promise-polyfill "^8.1.3"
tdigest "^0.1.1"
+"@ampproject/remapping@^2.2.0":
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630"
+ integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==
+ dependencies:
+ "@jridgewell/gen-mapping" "^0.3.0"
+ "@jridgewell/trace-mapping" "^0.3.9"
+
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.8.3":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658"
+ resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz"
integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==
dependencies:
"@babel/highlight" "^7.12.13"
+"@babel/code-frame@^7.22.13", "@babel/code-frame@^7.23.5":
+ version "7.23.5"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244"
+ integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==
+ dependencies:
+ "@babel/highlight" "^7.23.4"
+ chalk "^2.4.2"
+
"@babel/compat-data@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.13.tgz#27e19e0ed3726ccf54067ced4109501765e7e2e8"
+ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.13.tgz"
integrity sha512-U/hshG5R+SIoW7HVWIdmy1cB7s3ki+r3FpyEZiCgpi4tFgPnX/vynY80ZGSASOIrUM6O7VxOgCZgdt7h97bUGg==
-"@babel/core@^7.11.1":
- version "7.12.16"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.16.tgz#8c6ba456b23b680a6493ddcfcd9d3c3ad51cab7c"
- integrity sha512-t/hHIB504wWceOeaOoONOhu+gX+hpjfeN6YRBT209X/4sibZQfSF1I0HFRRlBe97UZZosGx5XwUg1ZgNbelmNw==
- dependencies:
- "@babel/code-frame" "^7.12.13"
- "@babel/generator" "^7.12.15"
- "@babel/helper-module-transforms" "^7.12.13"
- "@babel/helpers" "^7.12.13"
- "@babel/parser" "^7.12.16"
- "@babel/template" "^7.12.13"
- "@babel/traverse" "^7.12.13"
- "@babel/types" "^7.12.13"
- convert-source-map "^1.7.0"
- debug "^4.1.0"
- gensync "^1.0.0-beta.1"
- json5 "^2.1.2"
- lodash "^4.17.19"
- semver "^5.4.1"
- source-map "^0.5.0"
+"@babel/compat-data@^7.20.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.3", "@babel/compat-data@^7.23.5":
+ version "7.23.5"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98"
+ integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==
"@babel/core@^7.12.17":
version "7.12.17"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.17.tgz#993c5e893333107a2815d8e0d73a2c3755e280b2"
+ resolved "https://registry.npmjs.org/@babel/core/-/core-7.12.17.tgz"
integrity sha512-V3CuX1aBywbJvV2yzJScRxeiiw0v2KZZYYE3giywxzFJL13RiyPjaaDwhDnxmgFTTS7FgvM2ijr4QmKNIu0AtQ==
dependencies:
"@babel/code-frame" "^7.12.13"
@@ -68,9 +68,30 @@
semver "^5.4.1"
source-map "^0.5.0"
-"@babel/generator@^7.12.13", "@babel/generator@^7.12.15":
+"@babel/core@^7.15.0":
+ version "7.23.7"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.7.tgz#4d8016e06a14b5f92530a13ed0561730b5c6483f"
+ integrity sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==
+ dependencies:
+ "@ampproject/remapping" "^2.2.0"
+ "@babel/code-frame" "^7.23.5"
+ "@babel/generator" "^7.23.6"
+ "@babel/helper-compilation-targets" "^7.23.6"
+ "@babel/helper-module-transforms" "^7.23.3"
+ "@babel/helpers" "^7.23.7"
+ "@babel/parser" "^7.23.6"
+ "@babel/template" "^7.22.15"
+ "@babel/traverse" "^7.23.7"
+ "@babel/types" "^7.23.6"
+ convert-source-map "^2.0.0"
+ debug "^4.1.0"
+ gensync "^1.0.0-beta.2"
+ json5 "^2.2.3"
+ semver "^6.3.1"
+
+"@babel/generator@^7.12.13":
version "7.12.15"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.15.tgz#4617b5d0b25cc572474cc1aafee1edeaf9b5368f"
+ resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.12.15.tgz"
integrity sha512-6F2xHxBiFXWNSGb7vyCUTBF8RCLY66rS0zEPcP8t/nQyXjha5EuK4z7H5o7fWG8B4M7y6mqVWq1J+1PuwRhecQ==
dependencies:
"@babel/types" "^7.12.13"
@@ -79,41 +100,55 @@
"@babel/generator@^7.12.17":
version "7.12.17"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.17.tgz#9ef1dd792d778b32284411df63f4f668a9957287"
+ resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.12.17.tgz"
integrity sha512-DSA7ruZrY4WI8VxuS1jWSRezFnghEoYEFrZcw9BizQRmOZiUsiHl59+qEARGPqPikwA/GPTyRCi7isuCK/oyqg==
dependencies:
"@babel/types" "^7.12.17"
jsesc "^2.5.1"
source-map "^0.5.0"
+"@babel/generator@^7.23.6":
+ version "7.23.6"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e"
+ integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==
+ dependencies:
+ "@babel/types" "^7.23.6"
+ "@jridgewell/gen-mapping" "^0.3.2"
+ "@jridgewell/trace-mapping" "^0.3.17"
+ jsesc "^2.5.1"
+
"@babel/helper-annotate-as-pure@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz#0f58e86dfc4bb3b1fcd7db806570e177d439b6ab"
+ resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz"
integrity sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==
dependencies:
"@babel/types" "^7.12.13"
+"@babel/helper-annotate-as-pure@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882"
+ integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==
+ dependencies:
+ "@babel/types" "^7.22.5"
+
"@babel/helper-builder-binary-assignment-operator-visitor@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz#6bc20361c88b0a74d05137a65cac8d3cbf6f61fc"
+ resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz"
integrity sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==
dependencies:
"@babel/helper-explode-assignable-expression" "^7.12.13"
"@babel/types" "^7.12.13"
-"@babel/helper-compilation-targets@^7.12.16":
- version "7.12.16"
- resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.16.tgz#6905238b4a5e02ba2d032c1a49dd1820fe8ce61b"
- integrity sha512-dBHNEEaZx7F3KoUYqagIhRIeqyyuI65xMndMZ3WwGwEBI609I4TleYQHcrS627vbKyNTXqShoN+fvYD9HuQxAg==
+"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15":
+ version "7.22.15"
+ resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956"
+ integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==
dependencies:
- "@babel/compat-data" "^7.12.13"
- "@babel/helper-validator-option" "^7.12.16"
- browserslist "^4.14.5"
- semver "^5.5.0"
+ "@babel/types" "^7.22.15"
"@babel/helper-compilation-targets@^7.12.17":
version "7.12.17"
- resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.17.tgz#91d83fae61ef390d39c3f0507cb83979bab837c7"
+ resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.17.tgz"
integrity sha512-5EkibqLVYOuZ89BSg2lv+GG8feywLuvMXNYgf0Im4MssE0mFWPztSpJbildNnUgw0bLI2EsIN4MpSHC2iUJkQA==
dependencies:
"@babel/compat-data" "^7.12.13"
@@ -121,9 +156,20 @@
browserslist "^4.14.5"
semver "^5.5.0"
+"@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.23.6":
+ version "7.23.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991"
+ integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==
+ dependencies:
+ "@babel/compat-data" "^7.23.5"
+ "@babel/helper-validator-option" "^7.23.5"
+ browserslist "^4.22.2"
+ lru-cache "^5.1.1"
+ semver "^6.3.1"
+
"@babel/helper-create-class-features-plugin@^7.12.13":
version "7.12.16"
- resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.16.tgz#955d5099fd093e5afb05542190f8022105082c61"
+ resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.16.tgz"
integrity sha512-KbSEj8l9zYkMVHpQqM3wJNxS1d9h3U9vm/uE5tpjMbaj3lTp+0noe3KPsV5dSD9jxKnf9jO9Ip9FX5PKNZCKow==
dependencies:
"@babel/helper-function-name" "^7.12.13"
@@ -134,7 +180,7 @@
"@babel/helper-create-class-features-plugin@^7.12.17":
version "7.12.17"
- resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.17.tgz#704b69c8a78d03fb1c5fcc2e7b593f8a65628944"
+ resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.17.tgz"
integrity sha512-I/nurmTxIxHV0M+rIpfQBF1oN342+yvl2kwZUrQuOClMamHF1w5tknfZubgNOLRoA73SzBFAdFcpb4M9HwOeWQ==
dependencies:
"@babel/helper-function-name" "^7.12.13"
@@ -143,68 +189,137 @@
"@babel/helper-replace-supers" "^7.12.13"
"@babel/helper-split-export-declaration" "^7.12.13"
+"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.22.15":
+ version "7.23.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.7.tgz#b2e6826e0e20d337143655198b79d58fdc9bd43d"
+ integrity sha512-xCoqR/8+BoNnXOY7RVSgv6X+o7pmT5q1d+gGcRlXYkI+9B31glE4jeejhKVpA04O1AtzOt7OSQ6VYKP5FcRl9g==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.22.5"
+ "@babel/helper-environment-visitor" "^7.22.20"
+ "@babel/helper-function-name" "^7.23.0"
+ "@babel/helper-member-expression-to-functions" "^7.23.0"
+ "@babel/helper-optimise-call-expression" "^7.22.5"
+ "@babel/helper-replace-supers" "^7.22.20"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5"
+ "@babel/helper-split-export-declaration" "^7.22.6"
+ semver "^6.3.1"
+
"@babel/helper-create-regexp-features-plugin@^7.12.13":
version "7.12.16"
- resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.16.tgz#3b31d13f39f930fad975e151163b7df7d4ffe9d3"
+ resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.16.tgz"
integrity sha512-jAcQ1biDYZBdaAxB4yg46/XirgX7jBDiMHDbwYQOgtViLBXGxJpZQ24jutmBqAIB/q+AwB6j+NbBXjKxEY8vqg==
dependencies:
"@babel/helper-annotate-as-pure" "^7.12.13"
regexpu-core "^4.7.1"
+"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5":
+ version "7.22.15"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1"
+ integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.22.5"
+ regexpu-core "^5.3.1"
+ semver "^6.3.1"
+
+"@babel/helper-define-polyfill-provider@^0.4.4":
+ version "0.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.4.tgz#64df615451cb30e94b59a9696022cffac9a10088"
+ integrity sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==
+ dependencies:
+ "@babel/helper-compilation-targets" "^7.22.6"
+ "@babel/helper-plugin-utils" "^7.22.5"
+ debug "^4.1.1"
+ lodash.debounce "^4.0.8"
+ resolve "^1.14.2"
+
+"@babel/helper-environment-visitor@^7.22.20":
+ version "7.22.20"
+ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167"
+ integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==
+
"@babel/helper-explode-assignable-expression@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.13.tgz#0e46990da9e271502f77507efa4c9918d3d8634a"
+ resolved "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.13.tgz"
integrity sha512-5loeRNvMo9mx1dA/d6yNi+YiKziJZFylZnCo1nmFF4qPU4yJ14abhWESuSMQSlQxWdxdOFzxXjk/PpfudTtYyw==
dependencies:
"@babel/types" "^7.12.13"
"@babel/helper-function-name@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz#93ad656db3c3c2232559fd7b2c3dbdcbe0eb377a"
+ resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz"
integrity sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==
dependencies:
"@babel/helper-get-function-arity" "^7.12.13"
"@babel/template" "^7.12.13"
"@babel/types" "^7.12.13"
+"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0":
+ version "7.23.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759"
+ integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==
+ dependencies:
+ "@babel/template" "^7.22.15"
+ "@babel/types" "^7.23.0"
+
"@babel/helper-get-function-arity@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583"
+ resolved "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz"
integrity sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==
dependencies:
"@babel/types" "^7.12.13"
"@babel/helper-hoist-variables@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.12.13.tgz#13aba58b7480b502362316ea02f52cca0e9796cd"
+ resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.12.13.tgz"
integrity sha512-KSC5XSj5HreRhYQtZ3cnSnQwDzgnbdUDEFsxkN0m6Q3WrCRt72xrnZ8+h+pX7YxM7hr87zIO3a/v5p/H3TrnVw==
dependencies:
"@babel/types" "^7.12.13"
+"@babel/helper-hoist-variables@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb"
+ integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==
+ dependencies:
+ "@babel/types" "^7.22.5"
+
"@babel/helper-member-expression-to-functions@^7.12.13", "@babel/helper-member-expression-to-functions@^7.12.16":
version "7.12.16"
- resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.16.tgz#41e0916b99f8d5f43da4f05d85f4930fa3d62b22"
+ resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.16.tgz"
integrity sha512-zYoZC1uvebBFmj1wFAlXwt35JLEgecefATtKp20xalwEK8vHAixLBXTGxNrVGEmTT+gzOThUgr8UEdgtalc1BQ==
dependencies:
"@babel/types" "^7.12.13"
"@babel/helper-member-expression-to-functions@^7.12.17":
version "7.12.17"
- resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.17.tgz#f82838eb06e1235307b6d71457b6670ff71ee5ac"
+ resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.17.tgz"
integrity sha512-Bzv4p3ODgS/qpBE0DiJ9qf5WxSmrQ8gVTe8ClMfwwsY2x/rhykxxy3bXzG7AGTnPB2ij37zGJ/Q/6FruxHxsxg==
dependencies:
"@babel/types" "^7.12.17"
+"@babel/helper-member-expression-to-functions@^7.22.15", "@babel/helper-member-expression-to-functions@^7.23.0":
+ version "7.23.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366"
+ integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==
+ dependencies:
+ "@babel/types" "^7.23.0"
+
"@babel/helper-module-imports@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz#ec67e4404f41750463e455cc3203f6a32e93fcb0"
+ resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz"
integrity sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g==
dependencies:
"@babel/types" "^7.12.13"
+"@babel/helper-module-imports@^7.22.15":
+ version "7.22.15"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0"
+ integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==
+ dependencies:
+ "@babel/types" "^7.22.15"
+
"@babel/helper-module-transforms@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.13.tgz#01afb052dcad2044289b7b20beb3fa8bd0265bea"
+ resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.13.tgz"
integrity sha512-acKF7EjqOR67ASIlDTupwkKM1eUisNAjaSduo5Cz+793ikfnpe7p4Q7B7EWU2PCoSTPWsQkR7hRUWEIZPiVLGA==
dependencies:
"@babel/helper-module-imports" "^7.12.13"
@@ -219,7 +334,7 @@
"@babel/helper-module-transforms@^7.12.17":
version "7.12.17"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.17.tgz#7c75b987d6dfd5b48e575648f81eaac891539509"
+ resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.17.tgz"
integrity sha512-sFL+p6zOCQMm9vilo06M4VHuTxUAwa6IxgL56Tq1DVtA0ziAGTH1ThmJq7xwPqdQlgAbKX3fb0oZNbtRIyA5KQ==
dependencies:
"@babel/helper-module-imports" "^7.12.13"
@@ -232,30 +347,62 @@
"@babel/types" "^7.12.17"
lodash "^4.17.19"
+"@babel/helper-module-transforms@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1"
+ integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==
+ dependencies:
+ "@babel/helper-environment-visitor" "^7.22.20"
+ "@babel/helper-module-imports" "^7.22.15"
+ "@babel/helper-simple-access" "^7.22.5"
+ "@babel/helper-split-export-declaration" "^7.22.6"
+ "@babel/helper-validator-identifier" "^7.22.20"
+
"@babel/helper-optimise-call-expression@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea"
+ resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz"
integrity sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==
dependencies:
"@babel/types" "^7.12.13"
+"@babel/helper-optimise-call-expression@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e"
+ integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==
+ dependencies:
+ "@babel/types" "^7.22.5"
+
"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.12.13.tgz#174254d0f2424d8aefb4dd48057511247b0a9eeb"
+ resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.12.13.tgz"
integrity sha512-C+10MXCXJLiR6IeG9+Wiejt9jmtFpxUc3MQqCmPY8hfCjyUGl9kT+B2okzEZrtykiwrc4dbCPdDoz0A/HQbDaA==
+"@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295"
+ integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==
+
"@babel/helper-remap-async-to-generator@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.13.tgz#170365f4140e2d20e5c88f8ba23c24468c296878"
+ resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.13.tgz"
integrity sha512-Qa6PU9vNcj1NZacZZI1Mvwt+gXDH6CTfgAkSjeRMLE8HxtDK76+YDId6NQR+z7Rgd5arhD2cIbS74r0SxD6PDA==
dependencies:
"@babel/helper-annotate-as-pure" "^7.12.13"
"@babel/helper-wrap-function" "^7.12.13"
"@babel/types" "^7.12.13"
+"@babel/helper-remap-async-to-generator@^7.22.20":
+ version "7.22.20"
+ resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0"
+ integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.22.5"
+ "@babel/helper-environment-visitor" "^7.22.20"
+ "@babel/helper-wrap-function" "^7.22.20"
+
"@babel/helper-replace-supers@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.13.tgz#00ec4fb6862546bd3d0aff9aac56074277173121"
+ resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.13.tgz"
integrity sha512-pctAOIAMVStI2TMLhozPKbf5yTEXc0OJa0eENheb4w09SrgOWEs+P4nTOZYJQCqs8JlErGLDPDJTiGIp3ygbLg==
dependencies:
"@babel/helper-member-expression-to-functions" "^7.12.13"
@@ -263,45 +410,85 @@
"@babel/traverse" "^7.12.13"
"@babel/types" "^7.12.13"
+"@babel/helper-replace-supers@^7.22.20":
+ version "7.22.20"
+ resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793"
+ integrity sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==
+ dependencies:
+ "@babel/helper-environment-visitor" "^7.22.20"
+ "@babel/helper-member-expression-to-functions" "^7.22.15"
+ "@babel/helper-optimise-call-expression" "^7.22.5"
+
"@babel/helper-simple-access@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz#8478bcc5cacf6aa1672b251c1d2dde5ccd61a6c4"
+ resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz"
integrity sha512-0ski5dyYIHEfwpWGx5GPWhH35j342JaflmCeQmsPWcrOQDtCN6C1zKAVRFVbK53lPW2c9TsuLLSUDf0tIGJ5hA==
dependencies:
"@babel/types" "^7.12.13"
+"@babel/helper-simple-access@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de"
+ integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==
+ dependencies:
+ "@babel/types" "^7.22.5"
+
"@babel/helper-skip-transparent-expression-wrappers@^7.12.1":
version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf"
+ resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz"
integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==
dependencies:
"@babel/types" "^7.12.1"
+"@babel/helper-skip-transparent-expression-wrappers@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847"
+ integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==
+ dependencies:
+ "@babel/types" "^7.22.5"
+
"@babel/helper-split-export-declaration@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05"
+ resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz"
integrity sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==
dependencies:
"@babel/types" "^7.12.13"
+"@babel/helper-split-export-declaration@^7.22.6":
+ version "7.22.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c"
+ integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==
+ dependencies:
+ "@babel/types" "^7.22.5"
+
+"@babel/helper-string-parser@^7.23.4":
+ version "7.23.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83"
+ integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==
+
"@babel/helper-validator-identifier@^7.12.11":
version "7.12.11"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed"
+ resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz"
integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==
-"@babel/helper-validator-option@^7.12.16":
- version "7.12.16"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.16.tgz#f73cbd3bbba51915216c5dea908e9b206bb10051"
- integrity sha512-uCgsDBPUQDvzr11ePPo4TVEocxj8RXjUVSC/Y8N1YpVAI/XDdUwGJu78xmlGhTxj2ntaWM7n9LQdRtyhOzT2YQ==
+"@babel/helper-validator-identifier@^7.22.20":
+ version "7.22.20"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0"
+ integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==
"@babel/helper-validator-option@^7.12.17":
version "7.12.17"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831"
+ resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz"
integrity sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==
+"@babel/helper-validator-option@^7.23.5":
+ version "7.23.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307"
+ integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==
+
"@babel/helper-wrap-function@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.12.13.tgz#e3ea8cb3ee0a16911f9c1b50d9e99fe8fe30f9ff"
+ resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.13.tgz"
integrity sha512-t0aZFEmBJ1LojdtJnhOaQEVejnzYhyjWHSsNSNo8vOYRbAJNh6r6GQF7pd36SqG7OKGbn+AewVQ/0IfYfIuGdw==
dependencies:
"@babel/helper-function-name" "^7.12.13"
@@ -309,71 +496,118 @@
"@babel/traverse" "^7.12.13"
"@babel/types" "^7.12.13"
-"@babel/helpers@^7.12.13":
- version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.13.tgz#3c75e993632e4dadc0274eae219c73eb7645ba47"
- integrity sha512-oohVzLRZ3GQEk4Cjhfs9YkJA4TdIDTObdBEZGrd6F/T0GPSnuV6l22eMcxlvcvzVIPH3VTtxbseudM1zIE+rPQ==
+"@babel/helper-wrap-function@^7.22.20":
+ version "7.22.20"
+ resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569"
+ integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==
dependencies:
- "@babel/template" "^7.12.13"
- "@babel/traverse" "^7.12.13"
- "@babel/types" "^7.12.13"
+ "@babel/helper-function-name" "^7.22.5"
+ "@babel/template" "^7.22.15"
+ "@babel/types" "^7.22.19"
"@babel/helpers@^7.12.17":
version "7.12.17"
- resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.17.tgz#71e03d2981a6b5ee16899964f4101dc8471d60bc"
+ resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.17.tgz"
integrity sha512-tEpjqSBGt/SFEsFikKds1sLNChKKGGR17flIgQKXH4fG6m9gTgl3gnOC1giHNyaBCSKuTfxaSzHi7UnvqiVKxg==
dependencies:
"@babel/template" "^7.12.13"
"@babel/traverse" "^7.12.17"
"@babel/types" "^7.12.17"
+"@babel/helpers@^7.23.7":
+ version "7.23.7"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.7.tgz#eb543c36f81da2873e47b76ee032343ac83bba60"
+ integrity sha512-6AMnjCoC8wjqBzDHkuqpa7jAKwvMo4dC+lr/TFBz+ucfulO1XMpDnwWPGBNwClOKZ8h6xn5N81W/R5OrcKtCbQ==
+ dependencies:
+ "@babel/template" "^7.22.15"
+ "@babel/traverse" "^7.23.7"
+ "@babel/types" "^7.23.6"
+
"@babel/highlight@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.12.13.tgz#8ab538393e00370b26271b01fa08f7f27f2e795c"
+ resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.12.13.tgz"
integrity sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww==
dependencies:
"@babel/helper-validator-identifier" "^7.12.11"
chalk "^2.0.0"
js-tokens "^4.0.0"
-"@babel/parser@^7.12.13", "@babel/parser@^7.12.16":
+"@babel/highlight@^7.23.4":
+ version "7.23.4"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b"
+ integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.22.20"
+ chalk "^2.4.2"
+ js-tokens "^4.0.0"
+
+"@babel/parser@^7.12.13":
version "7.12.16"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.16.tgz#cc31257419d2c3189d394081635703f549fc1ed4"
+ resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.12.16.tgz"
integrity sha512-c/+u9cqV6F0+4Hpq01jnJO+GLp2DdT63ppz9Xa+6cHaajM9VFzK/iDXiKK65YtpeVwu+ctfS6iqlMqRgQRzeCw==
"@babel/parser@^7.12.17":
version "7.12.17"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.17.tgz#bc85d2d47db38094e5bb268fc761716e7d693848"
+ resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.12.17.tgz"
integrity sha512-r1yKkiUTYMQ8LiEI0UcQx5ETw5dpTLn9wijn9hk6KkTtOK95FndDN10M+8/s6k/Ymlbivw0Av9q4SlgF80PtHg==
+"@babel/parser@^7.22.15", "@babel/parser@^7.23.6":
+ version "7.23.6"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.6.tgz#ba1c9e512bda72a47e285ae42aff9d2a635a9e3b"
+ integrity sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==
+
+"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz#5cd1c87ba9380d0afb78469292c954fee5d2411a"
+ integrity sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz#f6652bb16b94f8f9c20c50941e16e9756898dc5d"
+ integrity sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5"
+ "@babel/plugin-transform-optional-chaining" "^7.23.3"
+
+"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.23.7":
+ version "7.23.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz#516462a95d10a9618f197d39ad291a9b47ae1d7b"
+ integrity sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==
+ dependencies:
+ "@babel/helper-environment-visitor" "^7.22.20"
+ "@babel/helper-plugin-utils" "^7.22.5"
+
"@babel/plugin-proposal-async-generator-functions@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.13.tgz#d1c6d841802ffb88c64a2413e311f7345b9e66b5"
+ resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.13.tgz"
integrity sha512-1KH46Hx4WqP77f978+5Ye/VUbuwQld2hph70yaw2hXS2v7ER2f3nlpNMu909HO2rbvP0NKLlMVDPh9KXklVMhA==
dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
"@babel/helper-remap-async-to-generator" "^7.12.13"
"@babel/plugin-syntax-async-generators" "^7.8.0"
-"@babel/plugin-proposal-class-properties@^7.10.4", "@babel/plugin-proposal-class-properties@^7.12.13":
+"@babel/plugin-proposal-class-properties@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.13.tgz#3d2ce350367058033c93c098e348161d6dc0d8c8"
+ resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.13.tgz"
integrity sha512-8SCJ0Ddrpwv4T7Gwb33EmW1V9PY5lggTO+A8WjyIwxrSHDUyBw4MtF96ifn1n8H806YlxbVCoKXbbmzD6RD+cA==
dependencies:
"@babel/helper-create-class-features-plugin" "^7.12.13"
"@babel/helper-plugin-utils" "^7.12.13"
-"@babel/plugin-proposal-dynamic-import@^7.12.16":
- version "7.12.16"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.16.tgz#b9f33b252e3406d492a15a799c9d45a9a9613473"
- integrity sha512-yiDkYFapVxNOCcBfLnsb/qdsliroM+vc3LHiZwS4gh7pFjo5Xq3BDhYBNn3H3ao+hWPvqeeTdU+s+FIvokov+w==
+"@babel/plugin-proposal-class-properties@^7.14.5":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3"
+ integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==
dependencies:
- "@babel/helper-plugin-utils" "^7.12.13"
- "@babel/plugin-syntax-dynamic-import" "^7.8.0"
+ "@babel/helper-create-class-features-plugin" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.18.6"
"@babel/plugin-proposal-dynamic-import@^7.12.17":
version "7.12.17"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.17.tgz#e0ebd8db65acc37eac518fa17bead2174e224512"
+ resolved "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.17.tgz"
integrity sha512-ZNGoFZqrnuy9H2izB2jLlnNDAfVPlGl5NhFEiFe4D84ix9GQGygF+CWMGHKuE+bpyS/AOuDQCnkiRNqW2IzS1Q==
dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
@@ -381,7 +615,7 @@
"@babel/plugin-proposal-export-namespace-from@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz#393be47a4acd03fa2af6e3cde9b06e33de1b446d"
+ resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz"
integrity sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==
dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
@@ -389,7 +623,7 @@
"@babel/plugin-proposal-json-strings@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.13.tgz#ced7888a2db92a3d520a2e35eb421fdb7fcc9b5d"
+ resolved "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.13.tgz"
integrity sha512-v9eEi4GiORDg8x+Dmi5r8ibOe0VXoKDeNPYcTTxdGN4eOWikrJfDJCJrr1l5gKGvsNyGJbrfMftC2dTL6oz7pg==
dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
@@ -397,7 +631,7 @@
"@babel/plugin-proposal-logical-assignment-operators@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.13.tgz#575b5d9a08d8299eeb4db6430da6e16e5cf14350"
+ resolved "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.13.tgz"
integrity sha512-fqmiD3Lz7jVdK6kabeSr1PZlWSUVqSitmHEe3Z00dtGTKieWnX9beafvavc32kjORa5Bai4QNHgFDwWJP+WtSQ==
dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
@@ -405,7 +639,7 @@
"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.13.tgz#24867307285cee4e1031170efd8a7ac807deefde"
+ resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.13.tgz"
integrity sha512-Qoxpy+OxhDBI5kRqliJFAl4uWXk3Bn24WeFstPH0iLymFehSAUR8MHpqU7njyXv/qbo7oN6yTy5bfCmXdKpo1Q==
dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
@@ -413,41 +647,43 @@
"@babel/plugin-proposal-numeric-separator@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz#bd9da3188e787b5120b4f9d465a8261ce67ed1db"
+ resolved "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz"
integrity sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==
dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
"@babel/plugin-syntax-numeric-separator" "^7.10.4"
-"@babel/plugin-proposal-object-rest-spread@^7.10.1", "@babel/plugin-proposal-object-rest-spread@^7.12.13":
+"@babel/plugin-proposal-object-rest-spread@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.13.tgz#f93f3116381ff94bc676fdcb29d71045cd1ec011"
+ resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.13.tgz"
integrity sha512-WvA1okB/0OS/N3Ldb3sziSrXg6sRphsBgqiccfcQq7woEn5wQLNX82Oc4PlaFcdwcWHuQXAtb8ftbS8Fbsg/sg==
dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
"@babel/plugin-syntax-object-rest-spread" "^7.8.0"
"@babel/plugin-transform-parameters" "^7.12.13"
+"@babel/plugin-proposal-object-rest-spread@^7.14.7":
+ version "7.20.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz#aa662940ef425779c75534a5c41e9d936edc390a"
+ integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==
+ dependencies:
+ "@babel/compat-data" "^7.20.5"
+ "@babel/helper-compilation-targets" "^7.20.7"
+ "@babel/helper-plugin-utils" "^7.20.2"
+ "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
+ "@babel/plugin-transform-parameters" "^7.20.7"
+
"@babel/plugin-proposal-optional-catch-binding@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.13.tgz#4640520afe57728af14b4d1574ba844f263bcae5"
+ resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.13.tgz"
integrity sha512-9+MIm6msl9sHWg58NvqpNpLtuFbmpFYk37x8kgnGzAHvX35E1FyAwSUt5hIkSoWJFSAH+iwU8bJ4fcD1zKXOzg==
dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
"@babel/plugin-syntax-optional-catch-binding" "^7.8.0"
-"@babel/plugin-proposal-optional-chaining@^7.12.16":
- version "7.12.16"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.16.tgz#600c7531f754186b0f2096e495a92da7d88aa139"
- integrity sha512-O3ohPwOhkwji5Mckb7F/PJpJVJY3DpPsrt/F0Bk40+QMk9QpAIqeGusHWqu/mYqsM8oBa6TziL/2mbERWsUZjg==
- dependencies:
- "@babel/helper-plugin-utils" "^7.12.13"
- "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1"
- "@babel/plugin-syntax-optional-chaining" "^7.8.0"
-
"@babel/plugin-proposal-optional-chaining@^7.12.17":
version "7.12.17"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.17.tgz#e382becadc2cb16b7913b6c672d92e4b33385b5c"
+ resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.17.tgz"
integrity sha512-TvxwI80pWftrGPKHNfkvX/HnoeSTR7gC4ezWnAL39PuktYUe6r8kEpOLTYnkBTsaoeazXm2jHJ22EQ81sdgfcA==
dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
@@ -456,144 +692,256 @@
"@babel/plugin-proposal-private-methods@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.13.tgz#ea78a12554d784ecf7fc55950b752d469d9c4a71"
+ resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.13.tgz"
integrity sha512-sV0V57uUwpauixvR7s2o75LmwJI6JECwm5oPUY5beZB1nBl2i37hc7CJGqB5G+58fur5Y6ugvl3LRONk5x34rg==
dependencies:
"@babel/helper-create-class-features-plugin" "^7.12.13"
"@babel/helper-plugin-utils" "^7.12.13"
+"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2":
+ version "7.21.0-placeholder-for-preset-env.2"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703"
+ integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==
+
"@babel/plugin-proposal-unicode-property-regex@^7.12.13", "@babel/plugin-proposal-unicode-property-regex@^7.4.4":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz#bebde51339be829c17aaaaced18641deb62b39ba"
+ resolved "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz"
integrity sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==
dependencies:
"@babel/helper-create-regexp-features-plugin" "^7.12.13"
"@babel/helper-plugin-utils" "^7.12.13"
-"@babel/plugin-syntax-async-generators@^7.8.0":
+"@babel/plugin-syntax-async-generators@^7.8.0", "@babel/plugin-syntax-async-generators@^7.8.4":
version "7.8.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz"
integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
"@babel/plugin-syntax-class-properties@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz"
integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==
dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
+"@babel/plugin-syntax-class-static-block@^7.14.5":
+ version "7.14.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406"
+ integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.14.5"
+
"@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3":
version "7.8.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz"
integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
"@babel/plugin-syntax-export-namespace-from@^7.8.3":
version "7.8.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz"
integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==
dependencies:
"@babel/helper-plugin-utils" "^7.8.3"
-"@babel/plugin-syntax-json-strings@^7.8.0":
+"@babel/plugin-syntax-import-assertions@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz#9c05a7f592982aff1a2768260ad84bcd3f0c77fc"
+ integrity sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-syntax-import-attributes@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz#992aee922cf04512461d7dae3ff6951b90a2dc06"
+ integrity sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-syntax-import-meta@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51"
+ integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-syntax-json-strings@^7.8.0", "@babel/plugin-syntax-json-strings@^7.8.3":
version "7.8.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz"
integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
"@babel/plugin-syntax-logical-assignment-operators@^7.10.4":
version "7.10.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz"
integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==
dependencies:
"@babel/helper-plugin-utils" "^7.10.4"
-"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0":
+"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3":
version "7.8.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz"
integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
"@babel/plugin-syntax-numeric-separator@^7.10.4":
version "7.10.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz"
integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==
dependencies:
"@babel/helper-plugin-utils" "^7.10.4"
-"@babel/plugin-syntax-object-rest-spread@^7.8.0":
+"@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3":
version "7.8.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz"
integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
-"@babel/plugin-syntax-optional-catch-binding@^7.8.0":
+"@babel/plugin-syntax-optional-catch-binding@^7.8.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.3":
version "7.8.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz"
integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
-"@babel/plugin-syntax-optional-chaining@^7.8.0":
+"@babel/plugin-syntax-optional-chaining@^7.8.0", "@babel/plugin-syntax-optional-chaining@^7.8.3":
version "7.8.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz"
integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
+"@babel/plugin-syntax-private-property-in-object@^7.14.5":
+ version "7.14.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad"
+ integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.14.5"
+
"@babel/plugin-syntax-top-level-await@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz#c5f0fa6e249f5b739727f923540cf7a806130178"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz"
integrity sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==
dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
+"@babel/plugin-syntax-top-level-await@^7.14.5":
+ version "7.14.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c"
+ integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.14.5"
+
"@babel/plugin-syntax-typescript@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.13.tgz#9dff111ca64154cef0f4dc52cf843d9f12ce4474"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.13.tgz"
integrity sha512-cHP3u1JiUiG2LFDKbXnwVad81GvfyIOmCD6HIEId6ojrY0Drfy2q1jw7BwN7dE84+kTnBjLkXoL3IEy/3JPu2w==
dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
+"@babel/plugin-syntax-unicode-sets-regex@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357"
+ integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.18.6"
+
"@babel/plugin-transform-arrow-functions@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.13.tgz#eda5670b282952100c229f8a3bd49e0f6a72e9fe"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.13.tgz"
integrity sha512-tBtuN6qtCTd+iHzVZVOMNp+L04iIJBpqkdY42tWbmjIT5wvR2kx7gxMBsyhQtFzHwBbyGi9h8J8r9HgnOpQHxg==
dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
+"@babel/plugin-transform-arrow-functions@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz#94c6dcfd731af90f27a79509f9ab7fb2120fc38b"
+ integrity sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-async-generator-functions@^7.23.7":
+ version "7.23.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.7.tgz#3aa0b4f2fa3788b5226ef9346cf6d16ec61f99cd"
+ integrity sha512-PdxEpL71bJp1byMG0va5gwQcXHxuEYC/BgI/e88mGTtohbZN28O5Yit0Plkkm/dBzCF/BxmbNcses1RH1T+urA==
+ dependencies:
+ "@babel/helper-environment-visitor" "^7.22.20"
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/helper-remap-async-to-generator" "^7.22.20"
+ "@babel/plugin-syntax-async-generators" "^7.8.4"
+
"@babel/plugin-transform-async-to-generator@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.13.tgz#fed8c69eebf187a535bfa4ee97a614009b24f7ae"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.13.tgz"
integrity sha512-psM9QHcHaDr+HZpRuJcE1PXESuGWSCcbiGFFhhwfzdbTxaGDVzuVtdNYliAwcRo3GFg0Bc8MmI+AvIGYIJG04A==
dependencies:
"@babel/helper-module-imports" "^7.12.13"
"@babel/helper-plugin-utils" "^7.12.13"
"@babel/helper-remap-async-to-generator" "^7.12.13"
+"@babel/plugin-transform-async-to-generator@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz#d1f513c7a8a506d43f47df2bf25f9254b0b051fa"
+ integrity sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==
+ dependencies:
+ "@babel/helper-module-imports" "^7.22.15"
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/helper-remap-async-to-generator" "^7.22.20"
+
"@babel/plugin-transform-block-scoped-functions@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz#a9bf1836f2a39b4eb6cf09967739de29ea4bf4c4"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz"
integrity sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==
dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
+"@babel/plugin-transform-block-scoped-functions@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz#fe1177d715fb569663095e04f3598525d98e8c77"
+ integrity sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
"@babel/plugin-transform-block-scoping@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz#f36e55076d06f41dfd78557ea039c1b581642e61"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz"
integrity sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==
dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
+"@babel/plugin-transform-block-scoping@^7.23.4":
+ version "7.23.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz#b2d38589531c6c80fbe25e6b58e763622d2d3cf5"
+ integrity sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-class-properties@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz#35c377db11ca92a785a718b6aa4e3ed1eb65dc48"
+ integrity sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.22.15"
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-class-static-block@^7.23.4":
+ version "7.23.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz#2a202c8787a8964dd11dfcedf994d36bfc844ab5"
+ integrity sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.22.15"
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/plugin-syntax-class-static-block" "^7.14.5"
+
"@babel/plugin-transform-classes@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.13.tgz#9728edc1838b5d62fc93ad830bd523b1fcb0e1f6"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.13.tgz"
integrity sha512-cqZlMlhCC1rVnxE5ZGMtIb896ijL90xppMiuWXcwcOAuFczynpd3KYemb91XFFPi3wJSe/OcrX9lXoowatkkxA==
dependencies:
"@babel/helper-annotate-as-pure" "^7.12.13"
@@ -604,84 +952,208 @@
"@babel/helper-split-export-declaration" "^7.12.13"
globals "^11.1.0"
+"@babel/plugin-transform-classes@^7.23.5":
+ version "7.23.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.5.tgz#e7a75f815e0c534cc4c9a39c56636c84fc0d64f2"
+ integrity sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.22.5"
+ "@babel/helper-compilation-targets" "^7.22.15"
+ "@babel/helper-environment-visitor" "^7.22.20"
+ "@babel/helper-function-name" "^7.23.0"
+ "@babel/helper-optimise-call-expression" "^7.22.5"
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/helper-replace-supers" "^7.22.20"
+ "@babel/helper-split-export-declaration" "^7.22.6"
+ globals "^11.1.0"
+
"@babel/plugin-transform-computed-properties@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.13.tgz#6a210647a3d67f21f699cfd2a01333803b27339d"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.13.tgz"
integrity sha512-dDfuROUPGK1mTtLKyDPUavmj2b6kFu82SmgpztBFEO974KMjJT+Ytj3/oWsTUMBmgPcp9J5Pc1SlcAYRpJ2hRA==
dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
-"@babel/plugin-transform-destructuring@^7.10.1", "@babel/plugin-transform-destructuring@^7.12.13":
+"@babel/plugin-transform-computed-properties@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz#652e69561fcc9d2b50ba4f7ac7f60dcf65e86474"
+ integrity sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/template" "^7.22.15"
+
+"@babel/plugin-transform-destructuring@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.13.tgz#fc56c5176940c5b41735c677124d1d20cecc9aeb"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.13.tgz"
integrity sha512-Dn83KykIFzjhA3FDPA1z4N+yfF3btDGhjnJwxIj0T43tP0flCujnU8fKgEkf0C1biIpSv9NZegPBQ1J6jYkwvQ==
dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
+"@babel/plugin-transform-destructuring@^7.14.7", "@babel/plugin-transform-destructuring@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz#8c9ee68228b12ae3dff986e56ed1ba4f3c446311"
+ integrity sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
"@babel/plugin-transform-dotall-regex@^7.12.13", "@babel/plugin-transform-dotall-regex@^7.4.4":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz#3f1601cc29905bfcb67f53910f197aeafebb25ad"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz"
integrity sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==
dependencies:
"@babel/helper-create-regexp-features-plugin" "^7.12.13"
"@babel/helper-plugin-utils" "^7.12.13"
+"@babel/plugin-transform-dotall-regex@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz#3f7af6054882ede89c378d0cf889b854a993da50"
+ integrity sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.22.15"
+ "@babel/helper-plugin-utils" "^7.22.5"
+
"@babel/plugin-transform-duplicate-keys@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz#6f06b87a8b803fd928e54b81c258f0a0033904de"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz"
integrity sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==
dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
+"@babel/plugin-transform-duplicate-keys@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz#664706ca0a5dfe8d066537f99032fc1dc8b720ce"
+ integrity sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-dynamic-import@^7.23.4":
+ version "7.23.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz#c7629e7254011ac3630d47d7f34ddd40ca535143"
+ integrity sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/plugin-syntax-dynamic-import" "^7.8.3"
+
"@babel/plugin-transform-exponentiation-operator@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz#4d52390b9a273e651e4aba6aee49ef40e80cd0a1"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz"
integrity sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==
dependencies:
"@babel/helper-builder-binary-assignment-operator-visitor" "^7.12.13"
"@babel/helper-plugin-utils" "^7.12.13"
+"@babel/plugin-transform-exponentiation-operator@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz#ea0d978f6b9232ba4722f3dbecdd18f450babd18"
+ integrity sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==
+ dependencies:
+ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15"
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-export-namespace-from@^7.23.4":
+ version "7.23.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz#084c7b25e9a5c8271e987a08cf85807b80283191"
+ integrity sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
+
"@babel/plugin-transform-for-of@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.13.tgz#561ff6d74d9e1c8879cb12dbaf4a14cd29d15cf6"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.13.tgz"
integrity sha512-xCbdgSzXYmHGyVX3+BsQjcd4hv4vA/FDy7Kc8eOpzKmBBPEOTurt0w5fCRQaGl+GSBORKgJdstQ1rHl4jbNseQ==
dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
+"@babel/plugin-transform-for-of@^7.23.6":
+ version "7.23.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz#81c37e24171b37b370ba6aaffa7ac86bcb46f94e"
+ integrity sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5"
+
"@babel/plugin-transform-function-name@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz#bb024452f9aaed861d374c8e7a24252ce3a50051"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz"
integrity sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==
dependencies:
"@babel/helper-function-name" "^7.12.13"
"@babel/helper-plugin-utils" "^7.12.13"
+"@babel/plugin-transform-function-name@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz#8f424fcd862bf84cb9a1a6b42bc2f47ed630f8dc"
+ integrity sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==
+ dependencies:
+ "@babel/helper-compilation-targets" "^7.22.15"
+ "@babel/helper-function-name" "^7.23.0"
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-json-strings@^7.23.4":
+ version "7.23.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz#a871d9b6bd171976efad2e43e694c961ffa3714d"
+ integrity sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/plugin-syntax-json-strings" "^7.8.3"
+
"@babel/plugin-transform-literals@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz#2ca45bafe4a820197cf315794a4d26560fe4bdb9"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz"
integrity sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==
dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
+"@babel/plugin-transform-literals@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz#8214665f00506ead73de157eba233e7381f3beb4"
+ integrity sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-logical-assignment-operators@^7.23.4":
+ version "7.23.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz#e599f82c51d55fac725f62ce55d3a0886279ecb5"
+ integrity sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
+
"@babel/plugin-transform-member-expression-literals@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz#5ffa66cd59b9e191314c9f1f803b938e8c081e40"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz"
integrity sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==
dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
+"@babel/plugin-transform-member-expression-literals@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz#e37b3f0502289f477ac0e776b05a833d853cabcc"
+ integrity sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
"@babel/plugin-transform-modules-amd@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.13.tgz#43db16249b274ee2e551e2422090aa1c47692d56"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.13.tgz"
integrity sha512-JHLOU0o81m5UqG0Ulz/fPC68/v+UTuGTWaZBUwpEk1fYQ1D9LfKV6MPn4ttJKqRo5Lm460fkzjLTL4EHvCprvA==
dependencies:
"@babel/helper-module-transforms" "^7.12.13"
"@babel/helper-plugin-utils" "^7.12.13"
babel-plugin-dynamic-import-node "^2.3.3"
+"@babel/plugin-transform-modules-amd@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz#e19b55436a1416829df0a1afc495deedfae17f7d"
+ integrity sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.23.3"
+ "@babel/helper-plugin-utils" "^7.22.5"
+
"@babel/plugin-transform-modules-commonjs@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.13.tgz#5043b870a784a8421fa1fd9136a24f294da13e50"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.13.tgz"
integrity sha512-OGQoeVXVi1259HjuoDnsQMlMkT9UkZT9TpXAsqWplS/M0N1g3TJAn/ByOCeQu7mfjc5WpSsRU+jV1Hd89ts0kQ==
dependencies:
"@babel/helper-module-transforms" "^7.12.13"
@@ -689,9 +1161,18 @@
"@babel/helper-simple-access" "^7.12.13"
babel-plugin-dynamic-import-node "^2.3.3"
+"@babel/plugin-transform-modules-commonjs@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz#661ae831b9577e52be57dd8356b734f9700b53b4"
+ integrity sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.23.3"
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/helper-simple-access" "^7.22.5"
+
"@babel/plugin-transform-modules-systemjs@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.13.tgz#351937f392c7f07493fc79b2118201d50404a3c5"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.13.tgz"
integrity sha512-aHfVjhZ8QekaNF/5aNdStCGzwTbU7SI5hUybBKlMzqIMC7w7Ho8hx5a4R/DkTHfRfLwHGGxSpFt9BfxKCoXKoA==
dependencies:
"@babel/helper-hoist-variables" "^7.12.13"
@@ -700,121 +1181,292 @@
"@babel/helper-validator-identifier" "^7.12.11"
babel-plugin-dynamic-import-node "^2.3.3"
+"@babel/plugin-transform-modules-systemjs@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz#fa7e62248931cb15b9404f8052581c302dd9de81"
+ integrity sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==
+ dependencies:
+ "@babel/helper-hoist-variables" "^7.22.5"
+ "@babel/helper-module-transforms" "^7.23.3"
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/helper-validator-identifier" "^7.22.20"
+
"@babel/plugin-transform-modules-umd@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.13.tgz#26c66f161d3456674e344b4b1255de4d530cfb37"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.13.tgz"
integrity sha512-BgZndyABRML4z6ibpi7Z98m4EVLFI9tVsZDADC14AElFaNHHBcJIovflJ6wtCqFxwy2YJ1tJhGRsr0yLPKoN+w==
dependencies:
"@babel/helper-module-transforms" "^7.12.13"
"@babel/helper-plugin-utils" "^7.12.13"
+"@babel/plugin-transform-modules-umd@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz#5d4395fccd071dfefe6585a4411aa7d6b7d769e9"
+ integrity sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.23.3"
+ "@babel/helper-plugin-utils" "^7.22.5"
+
"@babel/plugin-transform-named-capturing-groups-regex@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz#2213725a5f5bbbe364b50c3ba5998c9599c5c9d9"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz"
integrity sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==
dependencies:
"@babel/helper-create-regexp-features-plugin" "^7.12.13"
+"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f"
+ integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.22.5"
+ "@babel/helper-plugin-utils" "^7.22.5"
+
"@babel/plugin-transform-new-target@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz#e22d8c3af24b150dd528cbd6e685e799bf1c351c"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz"
integrity sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==
dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
+"@babel/plugin-transform-new-target@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz#5491bb78ed6ac87e990957cea367eab781c4d980"
+ integrity sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-nullish-coalescing-operator@^7.23.4":
+ version "7.23.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz#45556aad123fc6e52189ea749e33ce090637346e"
+ integrity sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
+
+"@babel/plugin-transform-numeric-separator@^7.23.4":
+ version "7.23.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz#03d08e3691e405804ecdd19dd278a40cca531f29"
+ integrity sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/plugin-syntax-numeric-separator" "^7.10.4"
+
+"@babel/plugin-transform-object-rest-spread@^7.23.4":
+ version "7.23.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz#2b9c2d26bf62710460bdc0d1730d4f1048361b83"
+ integrity sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==
+ dependencies:
+ "@babel/compat-data" "^7.23.3"
+ "@babel/helper-compilation-targets" "^7.22.15"
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
+ "@babel/plugin-transform-parameters" "^7.23.3"
+
"@babel/plugin-transform-object-super@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz#b4416a2d63b8f7be314f3d349bd55a9c1b5171f7"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz"
integrity sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==
dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
"@babel/helper-replace-supers" "^7.12.13"
+"@babel/plugin-transform-object-super@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz#81fdb636dcb306dd2e4e8fd80db5b2362ed2ebcd"
+ integrity sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/helper-replace-supers" "^7.22.20"
+
+"@babel/plugin-transform-optional-catch-binding@^7.23.4":
+ version "7.23.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz#318066de6dacce7d92fa244ae475aa8d91778017"
+ integrity sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
+
+"@babel/plugin-transform-optional-chaining@^7.23.3", "@babel/plugin-transform-optional-chaining@^7.23.4":
+ version "7.23.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz#6acf61203bdfc4de9d4e52e64490aeb3e52bd017"
+ integrity sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5"
+ "@babel/plugin-syntax-optional-chaining" "^7.8.3"
+
"@babel/plugin-transform-parameters@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.13.tgz#461e76dfb63c2dfd327b8a008a9e802818ce9853"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.13.tgz"
integrity sha512-e7QqwZalNiBRHCpJg/P8s/VJeSRYgmtWySs1JwvfwPqhBbiWfOcHDKdeAi6oAyIimoKWBlwc8oTgbZHdhCoVZA==
dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
+"@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz#83ef5d1baf4b1072fa6e54b2b0999a7b2527e2af"
+ integrity sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-private-methods@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz#b2d7a3c97e278bfe59137a978d53b2c2e038c0e4"
+ integrity sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.22.15"
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-private-property-in-object@^7.23.4":
+ version "7.23.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz#3ec711d05d6608fd173d9b8de39872d8dbf68bf5"
+ integrity sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.22.5"
+ "@babel/helper-create-class-features-plugin" "^7.22.15"
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/plugin-syntax-private-property-in-object" "^7.14.5"
+
"@babel/plugin-transform-property-literals@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz#4e6a9e37864d8f1b3bc0e2dce7bf8857db8b1a81"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz"
integrity sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==
dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
-"@babel/plugin-transform-regenerator@^7.10.1", "@babel/plugin-transform-regenerator@^7.12.13":
+"@babel/plugin-transform-property-literals@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz#54518f14ac4755d22b92162e4a852d308a560875"
+ integrity sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-regenerator@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz#b628bcc9c85260ac1aeb05b45bde25210194a2f5"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz"
integrity sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==
dependencies:
regenerator-transform "^0.14.2"
+"@babel/plugin-transform-regenerator@^7.14.5", "@babel/plugin-transform-regenerator@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz#141afd4a2057298602069fce7f2dc5173e6c561c"
+ integrity sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+ regenerator-transform "^0.15.2"
+
"@babel/plugin-transform-reserved-words@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz#7d9988d4f06e0fe697ea1d9803188aa18b472695"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz"
integrity sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==
dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
-"@babel/plugin-transform-runtime@^7.11.0":
- version "7.12.15"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.15.tgz#4337b2507288007c2b197059301aa0af8d90c085"
- integrity sha512-OwptMSRnRWJo+tJ9v9wgAf72ydXWfYSXWhnQjZing8nGZSDFqU1MBleKM3+DriKkcbv7RagA8gVeB0A1PNlNow==
+"@babel/plugin-transform-reserved-words@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz#4130dcee12bd3dd5705c587947eb715da12efac8"
+ integrity sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==
dependencies:
- "@babel/helper-module-imports" "^7.12.13"
- "@babel/helper-plugin-utils" "^7.12.13"
- semver "^5.5.1"
+ "@babel/helper-plugin-utils" "^7.22.5"
"@babel/plugin-transform-runtime@^7.12.17":
version "7.12.17"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.17.tgz#329cb61d293b7e60a7685b91dda7c300668cee18"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.17.tgz"
integrity sha512-s+kIJxnaTj+E9Q3XxQZ5jOo+xcogSe3V78/iFQ5RmoT0jROdpcdxhfGdq/VLqW1hFSzw6VjqN8aQqTaAMixWsw==
dependencies:
"@babel/helper-module-imports" "^7.12.13"
"@babel/helper-plugin-utils" "^7.12.13"
semver "^5.5.1"
+"@babel/plugin-transform-runtime@^7.15.0":
+ version "7.23.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.7.tgz#52bbd20054855beb9deae3bee9ceb05289c343e6"
+ integrity sha512-fa0hnfmiXc9fq/weK34MUV0drz2pOL/vfKWvN7Qw127hiUPabFCUMgAbYWcchRzMJit4o5ARsK/s+5h0249pLw==
+ dependencies:
+ "@babel/helper-module-imports" "^7.22.15"
+ "@babel/helper-plugin-utils" "^7.22.5"
+ babel-plugin-polyfill-corejs2 "^0.4.7"
+ babel-plugin-polyfill-corejs3 "^0.8.7"
+ babel-plugin-polyfill-regenerator "^0.5.4"
+ semver "^6.3.1"
+
"@babel/plugin-transform-shorthand-properties@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz#db755732b70c539d504c6390d9ce90fe64aff7ad"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz"
integrity sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==
dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
+"@babel/plugin-transform-shorthand-properties@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz#97d82a39b0e0c24f8a981568a8ed851745f59210"
+ integrity sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
"@babel/plugin-transform-spread@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.13.tgz#ca0d5645abbd560719c354451b849f14df4a7949"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.13.tgz"
integrity sha512-dUCrqPIowjqk5pXsx1zPftSq4sT0aCeZVAxhdgs3AMgyaDmoUT0G+5h3Dzja27t76aUEIJWlFgPJqJ/d4dbTtg==
dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
"@babel/helper-skip-transparent-expression-wrappers" "^7.12.1"
+"@babel/plugin-transform-spread@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz#41d17aacb12bde55168403c6f2d6bdca563d362c"
+ integrity sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5"
+
"@babel/plugin-transform-sticky-regex@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz#760ffd936face73f860ae646fb86ee82f3d06d1f"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz"
integrity sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==
dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
+"@babel/plugin-transform-sticky-regex@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz#dec45588ab4a723cb579c609b294a3d1bd22ff04"
+ integrity sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
"@babel/plugin-transform-template-literals@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.13.tgz#655037b07ebbddaf3b7752f55d15c2fd6f5aa865"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.13.tgz"
integrity sha512-arIKlWYUgmNsF28EyfmiQHJLJFlAJNYkuQO10jL46ggjBpeb2re1P9K9YGxNJB45BqTbaslVysXDYm/g3sN/Qg==
dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
+"@babel/plugin-transform-template-literals@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz#5f0f028eb14e50b5d0f76be57f90045757539d07"
+ integrity sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
"@babel/plugin-transform-typeof-symbol@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz#785dd67a1f2ea579d9c2be722de8c84cb85f5a7f"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz"
integrity sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==
dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
+"@babel/plugin-transform-typeof-symbol@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz#9dfab97acc87495c0c449014eb9c547d8966bca4"
+ integrity sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
"@babel/plugin-transform-typescript@^7.12.17":
version "7.12.17"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.12.17.tgz#4aa6a5041888dd2e5d316ec39212b0cf855211bb"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.12.17.tgz"
integrity sha512-1bIYwnhRoetxkFonuZRtDZPFEjl1l5r+3ITkxLC3mlMaFja+GQFo94b/WHEPjqWLU9Bc+W4oFZbvCGe9eYMu1g==
dependencies:
"@babel/helper-create-class-features-plugin" "^7.12.17"
@@ -823,94 +1475,53 @@
"@babel/plugin-transform-unicode-escapes@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz#840ced3b816d3b5127dd1d12dcedc5dead1a5e74"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz"
integrity sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==
dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
+"@babel/plugin-transform-unicode-escapes@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz#1f66d16cab01fab98d784867d24f70c1ca65b925"
+ integrity sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-unicode-property-regex@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz#19e234129e5ffa7205010feec0d94c251083d7ad"
+ integrity sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.22.15"
+ "@babel/helper-plugin-utils" "^7.22.5"
+
"@babel/plugin-transform-unicode-regex@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz#b52521685804e155b1202e83fc188d34bb70f5ac"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz"
integrity sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==
dependencies:
"@babel/helper-create-regexp-features-plugin" "^7.12.13"
"@babel/helper-plugin-utils" "^7.12.13"
-"@babel/preset-env@^7.11.0":
- version "7.12.16"
- resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.16.tgz#16710e3490e37764b2f41886de0a33bc4ae91082"
- integrity sha512-BXCAXy8RE/TzX416pD2hsVdkWo0G+tYd16pwnRV4Sc0fRwTLRS/Ssv8G5RLXUGQv7g4FG7TXkdDJxCjQ5I+Zjg==
+"@babel/plugin-transform-unicode-regex@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz#26897708d8f42654ca4ce1b73e96140fbad879dc"
+ integrity sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==
dependencies:
- "@babel/compat-data" "^7.12.13"
- "@babel/helper-compilation-targets" "^7.12.16"
- "@babel/helper-module-imports" "^7.12.13"
- "@babel/helper-plugin-utils" "^7.12.13"
- "@babel/helper-validator-option" "^7.12.16"
- "@babel/plugin-proposal-async-generator-functions" "^7.12.13"
- "@babel/plugin-proposal-class-properties" "^7.12.13"
- "@babel/plugin-proposal-dynamic-import" "^7.12.16"
- "@babel/plugin-proposal-export-namespace-from" "^7.12.13"
- "@babel/plugin-proposal-json-strings" "^7.12.13"
- "@babel/plugin-proposal-logical-assignment-operators" "^7.12.13"
- "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.13"
- "@babel/plugin-proposal-numeric-separator" "^7.12.13"
- "@babel/plugin-proposal-object-rest-spread" "^7.12.13"
- "@babel/plugin-proposal-optional-catch-binding" "^7.12.13"
- "@babel/plugin-proposal-optional-chaining" "^7.12.16"
- "@babel/plugin-proposal-private-methods" "^7.12.13"
- "@babel/plugin-proposal-unicode-property-regex" "^7.12.13"
- "@babel/plugin-syntax-async-generators" "^7.8.0"
- "@babel/plugin-syntax-class-properties" "^7.12.13"
- "@babel/plugin-syntax-dynamic-import" "^7.8.0"
- "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
- "@babel/plugin-syntax-json-strings" "^7.8.0"
- "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
- "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0"
- "@babel/plugin-syntax-numeric-separator" "^7.10.4"
- "@babel/plugin-syntax-object-rest-spread" "^7.8.0"
- "@babel/plugin-syntax-optional-catch-binding" "^7.8.0"
- "@babel/plugin-syntax-optional-chaining" "^7.8.0"
- "@babel/plugin-syntax-top-level-await" "^7.12.13"
- "@babel/plugin-transform-arrow-functions" "^7.12.13"
- "@babel/plugin-transform-async-to-generator" "^7.12.13"
- "@babel/plugin-transform-block-scoped-functions" "^7.12.13"
- "@babel/plugin-transform-block-scoping" "^7.12.13"
- "@babel/plugin-transform-classes" "^7.12.13"
- "@babel/plugin-transform-computed-properties" "^7.12.13"
- "@babel/plugin-transform-destructuring" "^7.12.13"
- "@babel/plugin-transform-dotall-regex" "^7.12.13"
- "@babel/plugin-transform-duplicate-keys" "^7.12.13"
- "@babel/plugin-transform-exponentiation-operator" "^7.12.13"
- "@babel/plugin-transform-for-of" "^7.12.13"
- "@babel/plugin-transform-function-name" "^7.12.13"
- "@babel/plugin-transform-literals" "^7.12.13"
- "@babel/plugin-transform-member-expression-literals" "^7.12.13"
- "@babel/plugin-transform-modules-amd" "^7.12.13"
- "@babel/plugin-transform-modules-commonjs" "^7.12.13"
- "@babel/plugin-transform-modules-systemjs" "^7.12.13"
- "@babel/plugin-transform-modules-umd" "^7.12.13"
- "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.13"
- "@babel/plugin-transform-new-target" "^7.12.13"
- "@babel/plugin-transform-object-super" "^7.12.13"
- "@babel/plugin-transform-parameters" "^7.12.13"
- "@babel/plugin-transform-property-literals" "^7.12.13"
- "@babel/plugin-transform-regenerator" "^7.12.13"
- "@babel/plugin-transform-reserved-words" "^7.12.13"
- "@babel/plugin-transform-shorthand-properties" "^7.12.13"
- "@babel/plugin-transform-spread" "^7.12.13"
- "@babel/plugin-transform-sticky-regex" "^7.12.13"
- "@babel/plugin-transform-template-literals" "^7.12.13"
- "@babel/plugin-transform-typeof-symbol" "^7.12.13"
- "@babel/plugin-transform-unicode-escapes" "^7.12.13"
- "@babel/plugin-transform-unicode-regex" "^7.12.13"
- "@babel/preset-modules" "^0.1.3"
- "@babel/types" "^7.12.13"
- core-js-compat "^3.8.0"
- semver "^5.5.0"
+ "@babel/helper-create-regexp-features-plugin" "^7.22.15"
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-unicode-sets-regex@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz#4fb6f0a719c2c5859d11f6b55a050cc987f3799e"
+ integrity sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.22.15"
+ "@babel/helper-plugin-utils" "^7.22.5"
"@babel/preset-env@^7.12.17":
version "7.12.17"
- resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.17.tgz#94a3793ff089c32ee74d76a3c03a7597693ebaaa"
+ resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.17.tgz"
integrity sha512-9PMijx8zFbCwTHrd2P4PJR5nWGH3zWebx2OcpTjqQrHhCiL2ssSR2Sc9ko2BsI2VmVBfoaQmPrlMTCui4LmXQg==
dependencies:
"@babel/compat-data" "^7.12.13"
@@ -980,9 +1591,104 @@
core-js-compat "^3.8.0"
semver "^5.5.0"
+"@babel/preset-env@^7.15.0":
+ version "7.23.7"
+ resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.7.tgz#e5d69b9f14db8a13bae4d8e5ce7f360973626241"
+ integrity sha512-SY27X/GtTz/L4UryMNJ6p4fH4nsgWbz84y9FE0bQeWJP6O5BhgVCt53CotQKHCOeXJel8VyhlhujhlltKms/CA==
+ dependencies:
+ "@babel/compat-data" "^7.23.5"
+ "@babel/helper-compilation-targets" "^7.23.6"
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/helper-validator-option" "^7.23.5"
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.23.3"
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.23.3"
+ "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.23.7"
+ "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2"
+ "@babel/plugin-syntax-async-generators" "^7.8.4"
+ "@babel/plugin-syntax-class-properties" "^7.12.13"
+ "@babel/plugin-syntax-class-static-block" "^7.14.5"
+ "@babel/plugin-syntax-dynamic-import" "^7.8.3"
+ "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
+ "@babel/plugin-syntax-import-assertions" "^7.23.3"
+ "@babel/plugin-syntax-import-attributes" "^7.23.3"
+ "@babel/plugin-syntax-import-meta" "^7.10.4"
+ "@babel/plugin-syntax-json-strings" "^7.8.3"
+ "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
+ "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
+ "@babel/plugin-syntax-numeric-separator" "^7.10.4"
+ "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
+ "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
+ "@babel/plugin-syntax-optional-chaining" "^7.8.3"
+ "@babel/plugin-syntax-private-property-in-object" "^7.14.5"
+ "@babel/plugin-syntax-top-level-await" "^7.14.5"
+ "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6"
+ "@babel/plugin-transform-arrow-functions" "^7.23.3"
+ "@babel/plugin-transform-async-generator-functions" "^7.23.7"
+ "@babel/plugin-transform-async-to-generator" "^7.23.3"
+ "@babel/plugin-transform-block-scoped-functions" "^7.23.3"
+ "@babel/plugin-transform-block-scoping" "^7.23.4"
+ "@babel/plugin-transform-class-properties" "^7.23.3"
+ "@babel/plugin-transform-class-static-block" "^7.23.4"
+ "@babel/plugin-transform-classes" "^7.23.5"
+ "@babel/plugin-transform-computed-properties" "^7.23.3"
+ "@babel/plugin-transform-destructuring" "^7.23.3"
+ "@babel/plugin-transform-dotall-regex" "^7.23.3"
+ "@babel/plugin-transform-duplicate-keys" "^7.23.3"
+ "@babel/plugin-transform-dynamic-import" "^7.23.4"
+ "@babel/plugin-transform-exponentiation-operator" "^7.23.3"
+ "@babel/plugin-transform-export-namespace-from" "^7.23.4"
+ "@babel/plugin-transform-for-of" "^7.23.6"
+ "@babel/plugin-transform-function-name" "^7.23.3"
+ "@babel/plugin-transform-json-strings" "^7.23.4"
+ "@babel/plugin-transform-literals" "^7.23.3"
+ "@babel/plugin-transform-logical-assignment-operators" "^7.23.4"
+ "@babel/plugin-transform-member-expression-literals" "^7.23.3"
+ "@babel/plugin-transform-modules-amd" "^7.23.3"
+ "@babel/plugin-transform-modules-commonjs" "^7.23.3"
+ "@babel/plugin-transform-modules-systemjs" "^7.23.3"
+ "@babel/plugin-transform-modules-umd" "^7.23.3"
+ "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5"
+ "@babel/plugin-transform-new-target" "^7.23.3"
+ "@babel/plugin-transform-nullish-coalescing-operator" "^7.23.4"
+ "@babel/plugin-transform-numeric-separator" "^7.23.4"
+ "@babel/plugin-transform-object-rest-spread" "^7.23.4"
+ "@babel/plugin-transform-object-super" "^7.23.3"
+ "@babel/plugin-transform-optional-catch-binding" "^7.23.4"
+ "@babel/plugin-transform-optional-chaining" "^7.23.4"
+ "@babel/plugin-transform-parameters" "^7.23.3"
+ "@babel/plugin-transform-private-methods" "^7.23.3"
+ "@babel/plugin-transform-private-property-in-object" "^7.23.4"
+ "@babel/plugin-transform-property-literals" "^7.23.3"
+ "@babel/plugin-transform-regenerator" "^7.23.3"
+ "@babel/plugin-transform-reserved-words" "^7.23.3"
+ "@babel/plugin-transform-shorthand-properties" "^7.23.3"
+ "@babel/plugin-transform-spread" "^7.23.3"
+ "@babel/plugin-transform-sticky-regex" "^7.23.3"
+ "@babel/plugin-transform-template-literals" "^7.23.3"
+ "@babel/plugin-transform-typeof-symbol" "^7.23.3"
+ "@babel/plugin-transform-unicode-escapes" "^7.23.3"
+ "@babel/plugin-transform-unicode-property-regex" "^7.23.3"
+ "@babel/plugin-transform-unicode-regex" "^7.23.3"
+ "@babel/plugin-transform-unicode-sets-regex" "^7.23.3"
+ "@babel/preset-modules" "0.1.6-no-external-plugins"
+ babel-plugin-polyfill-corejs2 "^0.4.7"
+ babel-plugin-polyfill-corejs3 "^0.8.7"
+ babel-plugin-polyfill-regenerator "^0.5.4"
+ core-js-compat "^3.31.0"
+ semver "^6.3.1"
+
+"@babel/preset-modules@0.1.6-no-external-plugins":
+ version "0.1.6-no-external-plugins"
+ resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a"
+ integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/types" "^7.4.4"
+ esutils "^2.0.2"
+
"@babel/preset-modules@^0.1.3":
version "0.1.4"
- resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e"
+ resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz"
integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
@@ -993,32 +1699,53 @@
"@babel/preset-typescript@~7.12":
version "7.12.17"
- resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.12.17.tgz#8ecf04618956c268359dd9feab775dc14a666eb5"
+ resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.12.17.tgz"
integrity sha512-T513uT4VSThRcmWeqcLkITKJ1oGQho9wfWuhQm10paClQkp1qyd0Wf8mvC8Se7UYssMyRSj4tZYpVTkCmAK/mA==
dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
"@babel/helper-validator-option" "^7.12.17"
"@babel/plugin-transform-typescript" "^7.12.17"
-"@babel/runtime@^7.11.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4":
+"@babel/regjsgen@^0.8.0":
+ version "0.8.0"
+ resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310"
+ integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==
+
+"@babel/runtime@^7.15.3":
+ version "7.23.7"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.7.tgz#dd7c88deeb218a0f8bd34d5db1aa242e0f203193"
+ integrity sha512-w06OXVOFso7LcbzMiDGt+3X7Rh7Ho8MmgPoWU3rarH+8upf+wSU/grlGbWzQyr3DkdN6ZeuMFjpdwW0Q+HxobA==
+ dependencies:
+ regenerator-runtime "^0.14.0"
+
+"@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.13.tgz#0a21452352b02542db0ffb928ac2d3ca7cb6d66d"
+ resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.13.tgz"
integrity sha512-8+3UMPBrjFa/6TtKi/7sehPKqfAm4g6K+YQjyyFOLUTxzOngcRZTlAVY8sc2CORJYqdHQY8gRPHmn+qo15rCBw==
dependencies:
regenerator-runtime "^0.13.4"
"@babel/template@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327"
+ resolved "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz"
integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==
dependencies:
"@babel/code-frame" "^7.12.13"
"@babel/parser" "^7.12.13"
"@babel/types" "^7.12.13"
+"@babel/template@^7.22.15":
+ version "7.22.15"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38"
+ integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==
+ dependencies:
+ "@babel/code-frame" "^7.22.13"
+ "@babel/parser" "^7.22.15"
+ "@babel/types" "^7.22.15"
+
"@babel/traverse@^7.12.13":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.13.tgz#689f0e4b4c08587ad26622832632735fb8c4e0c0"
+ resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.13.tgz"
integrity sha512-3Zb4w7eE/OslI0fTp8c7b286/cQps3+vdLW3UcwC8VSJC6GbKn55aeVVu2QJNuCDoeKyptLOFrPq8WqZZBodyA==
dependencies:
"@babel/code-frame" "^7.12.13"
@@ -1033,7 +1760,7 @@
"@babel/traverse@^7.12.17":
version "7.12.17"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.17.tgz#40ec8c7ffb502c4e54c7f95492dc11b88d718619"
+ resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.17.tgz"
integrity sha512-LGkTqDqdiwC6Q7fWSwQoas/oyiEYw6Hqjve5KOSykXkmFJFqzvGMb9niaUEag3Rlve492Mkye3gLw9FTv94fdQ==
dependencies:
"@babel/code-frame" "^7.12.13"
@@ -1046,9 +1773,25 @@
globals "^11.1.0"
lodash "^4.17.19"
+"@babel/traverse@^7.23.7":
+ version "7.23.7"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.7.tgz#9a7bf285c928cb99b5ead19c3b1ce5b310c9c305"
+ integrity sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==
+ dependencies:
+ "@babel/code-frame" "^7.23.5"
+ "@babel/generator" "^7.23.6"
+ "@babel/helper-environment-visitor" "^7.22.20"
+ "@babel/helper-function-name" "^7.23.0"
+ "@babel/helper-hoist-variables" "^7.22.5"
+ "@babel/helper-split-export-declaration" "^7.22.6"
+ "@babel/parser" "^7.23.6"
+ "@babel/types" "^7.23.6"
+ debug "^4.3.1"
+ globals "^11.1.0"
+
"@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.4.4":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.13.tgz#8be1aa8f2c876da11a9cf650c0ecf656913ad611"
+ resolved "https://registry.npmjs.org/@babel/types/-/types-7.12.13.tgz"
integrity sha512-oKrdZTld2im1z8bDwTOQvUbxKwE+854zc16qWZQlcTqMN00pWxHQ4ZeOq0yDMnisOpRykH2/5Qqcrk/OlbAjiQ==
dependencies:
"@babel/helper-validator-identifier" "^7.12.11"
@@ -1057,21 +1800,82 @@
"@babel/types@^7.12.17":
version "7.12.17"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.17.tgz#9d711eb807e0934c90b8b1ca0eb1f7230d150963"
+ resolved "https://registry.npmjs.org/@babel/types/-/types-7.12.17.tgz"
integrity sha512-tNMDjcv/4DIcHxErTgwB9q2ZcYyN0sUfgGKUK/mm1FJK7Wz+KstoEekxrl/tBiNDgLK1HGi+sppj1An/1DR4fQ==
dependencies:
"@babel/helper-validator-identifier" "^7.12.11"
lodash "^4.17.19"
to-fast-properties "^2.0.0"
+"@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.6":
+ version "7.23.6"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.6.tgz#be33fdb151e1f5a56877d704492c240fc71c7ccd"
+ integrity sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==
+ dependencies:
+ "@babel/helper-string-parser" "^7.23.4"
+ "@babel/helper-validator-identifier" "^7.22.20"
+ to-fast-properties "^2.0.0"
+
"@csstools/convert-colors@^1.4.0":
version "1.4.0"
- resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7"
+ resolved "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz"
integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==
+"@floating-ui/core@^1.0.0":
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.0.tgz#fa41b87812a16bf123122bf945946bae3fdf7fc1"
+ integrity sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==
+ dependencies:
+ "@floating-ui/utils" "^0.2.1"
+
+"@floating-ui/dom@^1.5.1":
+ version "1.6.3"
+ resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.3.tgz#954e46c1dd3ad48e49db9ada7218b0985cee75ef"
+ integrity sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==
+ dependencies:
+ "@floating-ui/core" "^1.0.0"
+ "@floating-ui/utils" "^0.2.0"
+
+"@floating-ui/utils@^0.2.0", "@floating-ui/utils@^0.2.1":
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.1.tgz#16308cea045f0fc777b6ff20a9f25474dd8293d2"
+ integrity sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==
+
+"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2":
+ version "0.3.3"
+ resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098"
+ integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==
+ dependencies:
+ "@jridgewell/set-array" "^1.0.1"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
+ "@jridgewell/trace-mapping" "^0.3.9"
+
+"@jridgewell/resolve-uri@^3.1.0":
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721"
+ integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==
+
+"@jridgewell/set-array@^1.0.1":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72"
+ integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==
+
+"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14":
+ version "1.4.15"
+ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
+ integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
+
+"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9":
+ version "0.3.20"
+ resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f"
+ integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==
+ dependencies:
+ "@jridgewell/resolve-uri" "^3.1.0"
+ "@jridgewell/sourcemap-codec" "^1.4.14"
+
"@npmcli/move-file@^1.0.1":
version "1.1.2"
- resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674"
+ resolved "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz"
integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==
dependencies:
mkdirp "^1.0.4"
@@ -1079,106 +1883,115 @@
"@rails/actiontext@^6.0.0":
version "6.1.2"
- resolved "https://registry.yarnpkg.com/@rails/actiontext/-/actiontext-6.1.2.tgz#a58b008c604a8b221bc1c41a7cc806a373625863"
+ resolved "https://registry.npmjs.org/@rails/actiontext/-/actiontext-6.1.2.tgz"
integrity sha512-6CK7E0mpsARpy2khor6bNUhziI5qAwJeKh5P/sYL3vN1kJ4Ma6+WC+jvsZI+uQ8hecbpFTGR9fuhV9OHCnLe6Q==
dependencies:
"@rails/activestorage" "^6.0.0-alpha"
"@rails/activestorage@^6.0.0-alpha":
version "6.1.2"
- resolved "https://registry.yarnpkg.com/@rails/activestorage/-/activestorage-6.1.2.tgz#e56c01314a85cacb53e5911ddc957578ac720c9c"
+ resolved "https://registry.npmjs.org/@rails/activestorage/-/activestorage-6.1.2.tgz"
integrity sha512-7rwFGtUBDrwDAjXs2jl7MG20Z5Pd9+42RpH1N3xDF4PaqC9wfBzvPfT31hd5JTgXJH+/DtYepgrZK2e5Zps4Bg==
dependencies:
spark-md5 "^3.0.0"
"@rails/activestorage@^6.1.3-1":
version "6.1.3-1"
- resolved "https://registry.yarnpkg.com/@rails/activestorage/-/activestorage-6.1.3-1.tgz#3304eaf597279c5943f793068b0147cb639239ed"
+ resolved "https://registry.npmjs.org/@rails/activestorage/-/activestorage-6.1.3-1.tgz"
integrity sha512-BCrnyrRWIZX3eQieMHrmWuMCEZgwSifmSVFg46tGjdbDa6wjK3jitFDQ+gYXhyN3Cs4Hb+kAJb+0oMiprkzY0A==
dependencies:
spark-md5 "^3.0.0"
"@rails/ujs@^6.1.3-1":
version "6.1.3-1"
- resolved "https://registry.yarnpkg.com/@rails/ujs/-/ujs-6.1.3-1.tgz#c25ca8473a40298ecab7b0020214e77c0e6f5188"
+ resolved "https://registry.npmjs.org/@rails/ujs/-/ujs-6.1.3-1.tgz"
integrity sha512-mygePdimLMOQ2nr9YclG1UIyKgaNfb2dMhsjhTs18j6DvlKR9VRz1j/Mbd2E7VL7HX7hlMBD1cltDrQsTZPjEw==
-"@rails/webpacker@5.2.1":
- version "5.2.1"
- resolved "https://registry.yarnpkg.com/@rails/webpacker/-/webpacker-5.2.1.tgz#87cdbd4af2090ae2d74bdc51f6f04717d907c5b3"
- integrity sha512-rO0kOv0o4ESB8ZnKX+b54ZKogNJGWSMULGmsJacREfm9SahKEQwXBeHNsqSGtS9NAPsU6YUFhGKRd4i/kbMNrQ==
+"@rails/webpacker@5.4.4":
+ version "5.4.4"
+ resolved "https://registry.yarnpkg.com/@rails/webpacker/-/webpacker-5.4.4.tgz#971a41b987c096c908ce4088accd57c1a9a7e2f7"
+ integrity sha512-hp9myb2MChYFPfE5Fd/3gF4q2m4wpxC+WWCkxcg6My3HYCptWuqMVXRwrBZ5EJHYiL/WRyMLvVNWwlFV47xhUw==
dependencies:
- "@babel/core" "^7.11.1"
- "@babel/plugin-proposal-class-properties" "^7.10.4"
- "@babel/plugin-proposal-object-rest-spread" "^7.10.1"
+ "@babel/core" "^7.15.0"
+ "@babel/plugin-proposal-class-properties" "^7.14.5"
+ "@babel/plugin-proposal-object-rest-spread" "^7.14.7"
"@babel/plugin-syntax-dynamic-import" "^7.8.3"
- "@babel/plugin-transform-destructuring" "^7.10.1"
- "@babel/plugin-transform-regenerator" "^7.10.1"
- "@babel/plugin-transform-runtime" "^7.11.0"
- "@babel/preset-env" "^7.11.0"
- "@babel/runtime" "^7.11.2"
- babel-loader "^8.1.0"
+ "@babel/plugin-transform-destructuring" "^7.14.7"
+ "@babel/plugin-transform-regenerator" "^7.14.5"
+ "@babel/plugin-transform-runtime" "^7.15.0"
+ "@babel/preset-env" "^7.15.0"
+ "@babel/runtime" "^7.15.3"
+ babel-loader "^8.2.2"
babel-plugin-dynamic-import-node "^2.3.3"
babel-plugin-macros "^2.8.0"
- case-sensitive-paths-webpack-plugin "^2.3.0"
- compression-webpack-plugin "^4.0.0"
- core-js "^3.6.5"
- css-loader "^3.5.3"
- file-loader "^6.0.0"
- flatted "^3.0.4"
- glob "^7.1.6"
- js-yaml "^3.14.0"
+ case-sensitive-paths-webpack-plugin "^2.4.0"
+ compression-webpack-plugin "^4.0.1"
+ core-js "^3.16.2"
+ css-loader "^3.6.0"
+ file-loader "^6.2.0"
+ flatted "^3.2.2"
+ glob "^7.1.7"
+ js-yaml "^3.14.1"
mini-css-extract-plugin "^0.9.0"
- node-sass "^4.14.1"
- optimize-css-assets-webpack-plugin "^5.0.3"
+ optimize-css-assets-webpack-plugin "^5.0.8"
path-complete-extname "^1.0.0"
- pnp-webpack-plugin "^1.6.4"
+ pnp-webpack-plugin "^1.7.0"
postcss-flexbugs-fixes "^4.2.1"
postcss-import "^12.0.1"
postcss-loader "^3.0.0"
postcss-preset-env "^6.7.0"
postcss-safe-parser "^4.0.2"
- regenerator-runtime "^0.13.7"
- sass-loader "^8.0.2"
- style-loader "^1.2.1"
- terser-webpack-plugin "^4.0.0"
- webpack "^4.44.1"
+ regenerator-runtime "^0.13.9"
+ sass "^1.38.0"
+ sass-loader "10.1.1"
+ style-loader "^1.3.0"
+ terser-webpack-plugin "^4.2.3"
+ webpack "^4.46.0"
webpack-assets-manifest "^3.1.1"
webpack-cli "^3.3.12"
webpack-sources "^1.4.3"
"@stimulus/core@^1.1.1":
version "1.1.1"
- resolved "https://registry.yarnpkg.com/@stimulus/core/-/core-1.1.1.tgz#42b0cfe5b73ca492f41de64b77a03980bae92c82"
+ resolved "https://registry.npmjs.org/@stimulus/core/-/core-1.1.1.tgz"
integrity sha512-PVJv7IpuQx0MVPCBblXc6O2zbCmU8dlxXNH4bC9KK6LsvGaE+PCXXrXQfXUwAsse1/CmRu/iQG7Ov58himjiGg==
dependencies:
"@stimulus/mutation-observers" "^1.1.1"
"@stimulus/multimap@^1.1.1":
version "1.1.1"
- resolved "https://registry.yarnpkg.com/@stimulus/multimap/-/multimap-1.1.1.tgz#b95e3fd607345ab36e5d5b55486ee1a12d56b331"
+ resolved "https://registry.npmjs.org/@stimulus/multimap/-/multimap-1.1.1.tgz"
integrity sha512-26R1fI3a8uUj0WlMmta4qcfIQGlagegdP4PTz6lz852q/dXlG6r+uPS/bx+H8GtfyS+OOXVr3SkZ0Zg0iRqRfQ==
"@stimulus/mutation-observers@^1.1.1":
version "1.1.1"
- resolved "https://registry.yarnpkg.com/@stimulus/mutation-observers/-/mutation-observers-1.1.1.tgz#0f6c6f081308427fed2a26360dda0c173b79cfc0"
+ resolved "https://registry.npmjs.org/@stimulus/mutation-observers/-/mutation-observers-1.1.1.tgz"
integrity sha512-/zCnnw1KJlWO2mrx0yxYaRFZWMGnDMdOgSnI4hxDLxdWVuL2HMROU8FpHWVBLjKY3T9A+lGkcrmPGDHF3pfS9w==
dependencies:
"@stimulus/multimap" "^1.1.1"
"@stimulus/webpack-helpers@^1.1.1":
version "1.1.1"
- resolved "https://registry.yarnpkg.com/@stimulus/webpack-helpers/-/webpack-helpers-1.1.1.tgz#eff60cd4e58b921d1a2764dc5215f5141510f2c2"
+ resolved "https://registry.npmjs.org/@stimulus/webpack-helpers/-/webpack-helpers-1.1.1.tgz"
integrity sha512-XOkqSw53N9072FLHvpLM25PIwy+ndkSSbnTtjKuyzsv8K5yfkFB2rv68jU1pzqYa9FZLcvZWP4yazC0V38dx9A==
+"@suttyweb/editor@^0.1.29":
+ version "0.1.29"
+ resolved "https://registry.yarnpkg.com/@suttyweb/editor/-/editor-0.1.29.tgz#8b5c6ae4e4d546002a96ecd65765d77d2a88d415"
+ integrity sha512-GshI8wE5UqXge2RhwAUxUXTRLPoOX7US9xVu1aLqT/deT/hDyN9S3PxVn9cJBf7uPHEqBzYXGDKWWF79PLqGHw==
+ dependencies:
+ "@floating-ui/dom" "^1.5.1"
+ linkifyjs "^4.1.1"
+ prosemirror-svelte-nodeview "^1.0.2"
+
"@types/caseless@*":
version "0.12.2"
- resolved "https://registry.yarnpkg.com/@types/caseless/-/caseless-0.12.2.tgz#f65d3d6389e01eeb458bd54dc8f52b95a9463bc8"
+ resolved "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.2.tgz"
integrity sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w==
"@types/glob@^7.1.1":
version "7.1.3"
- resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183"
+ resolved "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz"
integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==
dependencies:
"@types/minimatch" "*"
@@ -1186,42 +1999,42 @@
"@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6":
version "7.0.7"
- resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad"
+ resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz"
integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==
"@types/minimatch@*":
version "3.0.3"
- resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
+ resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz"
integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
"@types/node@*":
version "14.14.27"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.27.tgz#c7127f8da0498993e13b1a42faf1303d3110d2f2"
+ resolved "https://registry.npmjs.org/@types/node/-/node-14.14.27.tgz"
integrity sha512-Ecfmo4YDQPwuqTCl1yBxLV5ihKfRlkBmzUEDcfIRvDxOTGQEeikr317Ln7Gcv0tjA8dVgKI3rniqW2G1OyKDng==
"@types/parse-json@^4.0.0":
version "4.0.0"
- resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0"
+ resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz"
integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==
"@types/promise-polyfill@^6.0.3":
version "6.0.3"
- resolved "https://registry.yarnpkg.com/@types/promise-polyfill/-/promise-polyfill-6.0.3.tgz#e2f38fcd244a9e0df2cc7528e0711abcbc707b5e"
+ resolved "https://registry.npmjs.org/@types/promise-polyfill/-/promise-polyfill-6.0.3.tgz"
integrity sha512-f/BFgF9a+cgsMseC7rpv9+9TAE3YNjhfYrtwCo/pIeCDDfQtE6PY0b5bao2eIIEpZCBUy8Y5ToXd4ObjPSJuFw==
"@types/q@^1.5.1":
version "1.5.4"
- resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24"
+ resolved "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz"
integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==
"@types/rails__activestorage@^6.0.0":
version "6.0.0"
- resolved "https://registry.yarnpkg.com/@types/rails__activestorage/-/rails__activestorage-6.0.0.tgz#e633f2a430993f754792dfdbe2b64fc1f2d33869"
+ resolved "https://registry.npmjs.org/@types/rails__activestorage/-/rails__activestorage-6.0.0.tgz"
integrity sha512-Qk6dASfYYHym/95KQbPmUECuaveB5+sYEQdHDwKHvmwtrEbqjMH4t56MMCyzarweFDrA6ysULoCoa1f2nydwLg==
"@types/request@2.48.5":
version "2.48.5"
- resolved "https://registry.yarnpkg.com/@types/request/-/request-2.48.5.tgz#019b8536b402069f6d11bee1b2c03e7f232937a0"
+ resolved "https://registry.npmjs.org/@types/request/-/request-2.48.5.tgz"
integrity sha512-/LO7xRVnL3DxJ1WkPGDQrp4VTV1reX9RkC85mJ+Qzykj2Bdw+mG15aAfDahc76HtknjzE16SX/Yddn6MxVbmGQ==
dependencies:
"@types/caseless" "*"
@@ -1231,12 +2044,12 @@
"@types/tough-cookie@*":
version "4.0.0"
- resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.0.tgz#fef1904e4668b6e5ecee60c52cc6a078ffa6697d"
+ resolved "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.0.tgz"
integrity sha512-I99sngh224D0M7XgW1s120zxCt3VYQ3IQsuw3P3jbq5GG4yc79+ZjyKznyOGIQrflfylLgcfekeZW/vk0yng6A==
"@webassemblyjs/ast@1.9.0":
version "1.9.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964"
+ resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz"
integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==
dependencies:
"@webassemblyjs/helper-module-context" "1.9.0"
@@ -1245,46 +2058,46 @@
"@webassemblyjs/floating-point-hex-parser@1.9.0":
version "1.9.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4"
+ resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz"
integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==
"@webassemblyjs/helper-api-error@1.9.0":
version "1.9.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2"
+ resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz"
integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==
"@webassemblyjs/helper-buffer@1.9.0":
version "1.9.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00"
+ resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz"
integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==
"@webassemblyjs/helper-code-frame@1.9.0":
version "1.9.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27"
+ resolved "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz"
integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==
dependencies:
"@webassemblyjs/wast-printer" "1.9.0"
"@webassemblyjs/helper-fsm@1.9.0":
version "1.9.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8"
+ resolved "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz"
integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==
"@webassemblyjs/helper-module-context@1.9.0":
version "1.9.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07"
+ resolved "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz"
integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==
dependencies:
"@webassemblyjs/ast" "1.9.0"
"@webassemblyjs/helper-wasm-bytecode@1.9.0":
version "1.9.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790"
+ resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz"
integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==
"@webassemblyjs/helper-wasm-section@1.9.0":
version "1.9.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346"
+ resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz"
integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==
dependencies:
"@webassemblyjs/ast" "1.9.0"
@@ -1294,26 +2107,26 @@
"@webassemblyjs/ieee754@1.9.0":
version "1.9.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4"
+ resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz"
integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==
dependencies:
"@xtuc/ieee754" "^1.2.0"
"@webassemblyjs/leb128@1.9.0":
version "1.9.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95"
+ resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz"
integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==
dependencies:
"@xtuc/long" "4.2.2"
"@webassemblyjs/utf8@1.9.0":
version "1.9.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab"
+ resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz"
integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==
"@webassemblyjs/wasm-edit@1.9.0":
version "1.9.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf"
+ resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz"
integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==
dependencies:
"@webassemblyjs/ast" "1.9.0"
@@ -1327,7 +2140,7 @@
"@webassemblyjs/wasm-gen@1.9.0":
version "1.9.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c"
+ resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz"
integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==
dependencies:
"@webassemblyjs/ast" "1.9.0"
@@ -1338,7 +2151,7 @@
"@webassemblyjs/wasm-opt@1.9.0":
version "1.9.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61"
+ resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz"
integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==
dependencies:
"@webassemblyjs/ast" "1.9.0"
@@ -1348,7 +2161,7 @@
"@webassemblyjs/wasm-parser@1.9.0":
version "1.9.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e"
+ resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz"
integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==
dependencies:
"@webassemblyjs/ast" "1.9.0"
@@ -1360,7 +2173,7 @@
"@webassemblyjs/wast-parser@1.9.0":
version "1.9.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914"
+ resolved "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz"
integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==
dependencies:
"@webassemblyjs/ast" "1.9.0"
@@ -1372,7 +2185,7 @@
"@webassemblyjs/wast-printer@1.9.0":
version "1.9.0"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899"
+ resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz"
integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==
dependencies:
"@webassemblyjs/ast" "1.9.0"
@@ -1381,22 +2194,17 @@
"@xtuc/ieee754@^1.2.0":
version "1.2.0"
- resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790"
+ resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz"
integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==
"@xtuc/long@4.2.2":
version "4.2.2"
- resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
+ resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz"
integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
-abbrev@1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
- integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
-
accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7:
version "1.3.7"
- resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
+ resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz"
integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==
dependencies:
mime-types "~2.1.24"
@@ -1404,12 +2212,12 @@ accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7:
acorn@^6.4.1:
version "6.4.2"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6"
+ resolved "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz"
integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==
aggregate-error@^3.0.0:
version "3.1.0"
- resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a"
+ resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz"
integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==
dependencies:
clean-stack "^2.0.0"
@@ -1417,17 +2225,17 @@ aggregate-error@^3.0.0:
ajv-errors@^1.0.0:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d"
+ resolved "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz"
integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==
ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2:
version "3.5.2"
- resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d"
+ resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz"
integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
-ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5:
+ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5:
version "6.12.6"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
+ resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz"
integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
dependencies:
fast-deep-equal "^3.1.1"
@@ -1437,61 +2245,46 @@ ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5:
alphanum-sort@^1.0.0:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
+ resolved "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz"
integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=
-amdefine@>=0.0.4:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
- integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=
-
ansi-colors@^3.0.0:
version "3.2.4"
- resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf"
+ resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz"
integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==
ansi-html@0.0.7:
version "0.0.7"
- resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e"
+ resolved "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz"
integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4=
ansi-regex@^2.0.0:
version "2.1.1"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
+ resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz"
integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
-ansi-regex@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
- integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
-
ansi-regex@^4.1.0:
version "4.1.0"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
+ resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz"
integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
-ansi-styles@^2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
- integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
-
ansi-styles@^3.2.0, ansi-styles@^3.2.1:
version "3.2.1"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
+ resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz"
integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
dependencies:
color-convert "^1.9.0"
ansi-styles@^4.1.0:
version "4.3.0"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
+ resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"
integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
dependencies:
color-convert "^2.0.1"
anymatch@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
+ resolved "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz"
integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==
dependencies:
micromatch "^3.1.4"
@@ -1499,82 +2292,77 @@ anymatch@^2.0.0:
anymatch@~3.1.1:
version "3.1.1"
- resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142"
+ resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz"
integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==
dependencies:
normalize-path "^3.0.0"
picomatch "^2.0.4"
-aproba@^1.0.3, aproba@^1.1.1:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
- integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
-
-are-we-there-yet@~1.1.2:
- version "1.1.5"
- resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21"
- integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==
+anymatch@~3.1.2:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
+ integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
dependencies:
- delegates "^1.0.0"
- readable-stream "^2.0.6"
+ normalize-path "^3.0.0"
+ picomatch "^2.0.4"
+
+aproba@^1.1.1:
+ version "1.2.0"
+ resolved "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz"
+ integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
argparse@^1.0.7:
version "1.0.10"
- resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
+ resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz"
integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
dependencies:
sprintf-js "~1.0.2"
arr-diff@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
+ resolved "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz"
integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=
arr-flatten@^1.1.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
+ resolved "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz"
integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==
arr-union@^3.1.0:
version "3.1.0"
- resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
+ resolved "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz"
integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
-array-find-index@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
- integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=
-
array-flatten@1.1.1:
version "1.1.1"
- resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
+ resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz"
integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=
array-flatten@^2.1.0:
version "2.1.2"
- resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099"
+ resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz"
integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==
array-union@^1.0.1:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
+ resolved "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz"
integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=
dependencies:
array-uniq "^1.0.1"
array-uniq@^1.0.1:
version "1.0.3"
- resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
+ resolved "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz"
integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=
array-unique@^0.3.2:
version "0.3.2"
- resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
+ resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz"
integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
asn1.js@^5.2.0:
version "5.4.1"
- resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07"
+ resolved "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz"
integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==
dependencies:
bn.js "^4.0.0"
@@ -1582,21 +2370,9 @@ asn1.js@^5.2.0:
minimalistic-assert "^1.0.0"
safer-buffer "^2.1.0"
-asn1@~0.2.3:
- version "0.2.4"
- resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
- integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==
- dependencies:
- safer-buffer "~2.1.0"
-
-assert-plus@1.0.0, assert-plus@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
- integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
-
assert@^1.1.1:
version "1.5.0"
- resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb"
+ resolved "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz"
integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==
dependencies:
object-assign "^4.1.1"
@@ -1604,49 +2380,44 @@ assert@^1.1.1:
assign-symbols@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
+ resolved "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz"
integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
async-each@^1.0.1:
version "1.0.3"
- resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf"
+ resolved "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz"
integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==
-async-foreach@^0.1.3:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542"
- integrity sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=
-
async-limiter@~1.0.0:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
+ resolved "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz"
integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
async@^2.6.2:
version "2.6.3"
- resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff"
+ resolved "https://registry.npmjs.org/async/-/async-2.6.3.tgz"
integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==
dependencies:
lodash "^4.17.14"
asynckit@^0.4.0:
version "0.4.0"
- resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
+ resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz"
integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
at-least-node@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
+ resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz"
integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
atob@^2.1.2:
version "2.1.2"
- resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
+ resolved "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz"
integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
autoprefixer@^9.6.1:
version "9.8.6"
- resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.6.tgz#3b73594ca1bf9266320c5acf1588d74dea74210f"
+ resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz"
integrity sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==
dependencies:
browserslist "^4.12.0"
@@ -1657,19 +2428,9 @@ autoprefixer@^9.6.1:
postcss "^7.0.32"
postcss-value-parser "^4.1.0"
-aws-sign2@~0.7.0:
- version "0.7.0"
- resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
- integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
-
-aws4@^1.8.0:
- version "1.11.0"
- resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59"
- integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==
-
-babel-loader@^8.1.0, babel-loader@^8.2.2:
+babel-loader@^8.2.2:
version "8.2.2"
- resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81"
+ resolved "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz"
integrity sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==
dependencies:
find-cache-dir "^3.3.1"
@@ -1679,33 +2440,57 @@ babel-loader@^8.1.0, babel-loader@^8.2.2:
babel-plugin-dynamic-import-node@^2.3.3:
version "2.3.3"
- resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3"
+ resolved "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz"
integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==
dependencies:
object.assign "^4.1.0"
babel-plugin-macros@^2.8.0:
version "2.8.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138"
+ resolved "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz"
integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==
dependencies:
"@babel/runtime" "^7.7.2"
cosmiconfig "^6.0.0"
resolve "^1.12.0"
+babel-plugin-polyfill-corejs2@^0.4.7:
+ version "0.4.7"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.7.tgz#679d1b94bf3360f7682e11f2cb2708828a24fe8c"
+ integrity sha512-LidDk/tEGDfuHW2DWh/Hgo4rmnw3cduK6ZkOI1NPFceSK3n/yAGeOsNT7FLnSGHkXj3RHGSEVkN3FsCTY6w2CQ==
+ dependencies:
+ "@babel/compat-data" "^7.22.6"
+ "@babel/helper-define-polyfill-provider" "^0.4.4"
+ semver "^6.3.1"
+
+babel-plugin-polyfill-corejs3@^0.8.7:
+ version "0.8.7"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.7.tgz#941855aa7fdaac06ed24c730a93450d2b2b76d04"
+ integrity sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==
+ dependencies:
+ "@babel/helper-define-polyfill-provider" "^0.4.4"
+ core-js-compat "^3.33.1"
+
+babel-plugin-polyfill-regenerator@^0.5.4:
+ version "0.5.4"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.4.tgz#c6fc8eab610d3a11eb475391e52584bacfc020f4"
+ integrity sha512-S/x2iOCvDaCASLYsOOgWOq4bCfKYVqvO/uxjkaYyZ3rVsVE3CeAI/c84NpyuBBymEgNvHgjEot3a9/Z/kXvqsg==
+ dependencies:
+ "@babel/helper-define-polyfill-provider" "^0.4.4"
+
balanced-match@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
+ resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz"
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
base64-js@^1.0.2:
version "1.5.1"
- resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
+ resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz"
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
base@^0.11.1:
version "0.11.2"
- resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
+ resolved "https://registry.npmjs.org/base/-/base-0.11.2.tgz"
integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==
dependencies:
cache-base "^1.0.1"
@@ -1718,29 +2503,22 @@ base@^0.11.1:
batch@0.6.1:
version "0.6.1"
- resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
+ resolved "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz"
integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=
-bcrypt-pbkdf@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
- integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=
- dependencies:
- tweetnacl "^0.14.3"
-
big.js@^5.2.2:
version "5.2.2"
- resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
+ resolved "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz"
integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
binary-extensions@^1.0.0:
version "1.13.1"
- resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65"
+ resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz"
integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==
binary-extensions@^2.0.0:
version "2.2.0"
- resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
+ resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz"
integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
bindings@^1.5.0:
@@ -1752,34 +2530,27 @@ bindings@^1.5.0:
bintrees@1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/bintrees/-/bintrees-1.0.1.tgz#0e655c9b9c2435eaab68bf4027226d2b55a34524"
+ resolved "https://registry.npmjs.org/bintrees/-/bintrees-1.0.1.tgz"
integrity sha1-DmVcm5wkNeqraL9AJyJtK1WjRSQ=
-block-stream@*:
- version "0.0.9"
- resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
- integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=
- dependencies:
- inherits "~2.0.0"
-
bluebird@^3.5.5:
version "3.7.2"
- resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
+ resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz"
integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9:
version "4.11.9"
- resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828"
+ resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz"
integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==
bn.js@^5.0.0, bn.js@^5.1.1:
version "5.1.3"
- resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b"
+ resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz"
integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==
body-parser@1.19.0:
version "1.19.0"
- resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a"
+ resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz"
integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==
dependencies:
bytes "3.1.0"
@@ -1795,7 +2566,7 @@ body-parser@1.19.0:
bonjour@^3.5.0:
version "3.5.0"
- resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5"
+ resolved "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz"
integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU=
dependencies:
array-flatten "^2.1.0"
@@ -1807,12 +2578,12 @@ bonjour@^3.5.0:
boolbase@^1.0.0, boolbase@~1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
+ resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz"
integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
brace-expansion@^1.1.7:
version "1.1.11"
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+ resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz"
integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
dependencies:
balanced-match "^1.0.0"
@@ -1820,7 +2591,7 @@ brace-expansion@^1.1.7:
braces@^2.3.1, braces@^2.3.2:
version "2.3.2"
- resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
+ resolved "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz"
integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==
dependencies:
arr-flatten "^1.1.0"
@@ -1836,19 +2607,19 @@ braces@^2.3.1, braces@^2.3.2:
braces@~3.0.2:
version "3.0.2"
- resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
+ resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz"
integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
dependencies:
fill-range "^7.0.1"
brorand@^1.0.1, brorand@^1.1.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
+ resolved "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz"
integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=
browserify-aes@^1.0.0, browserify-aes@^1.0.4:
version "1.2.0"
- resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48"
+ resolved "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz"
integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==
dependencies:
buffer-xor "^1.0.3"
@@ -1860,7 +2631,7 @@ browserify-aes@^1.0.0, browserify-aes@^1.0.4:
browserify-cipher@^1.0.0:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0"
+ resolved "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz"
integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==
dependencies:
browserify-aes "^1.0.4"
@@ -1869,7 +2640,7 @@ browserify-cipher@^1.0.0:
browserify-des@^1.0.0:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c"
+ resolved "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz"
integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==
dependencies:
cipher-base "^1.0.1"
@@ -1879,7 +2650,7 @@ browserify-des@^1.0.0:
browserify-rsa@^4.0.0, browserify-rsa@^4.0.1:
version "4.1.0"
- resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d"
+ resolved "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz"
integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==
dependencies:
bn.js "^5.0.0"
@@ -1887,7 +2658,7 @@ browserify-rsa@^4.0.0, browserify-rsa@^4.0.1:
browserify-sign@^4.0.0:
version "4.2.1"
- resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3"
+ resolved "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz"
integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==
dependencies:
bn.js "^5.1.1"
@@ -1902,14 +2673,14 @@ browserify-sign@^4.0.0:
browserify-zlib@^0.2.0:
version "0.2.0"
- resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f"
+ resolved "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz"
integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==
dependencies:
pako "~1.0.5"
browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.1, browserslist@^4.6.4:
version "4.16.3"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.3.tgz#340aa46940d7db878748567c5dea24a48ddf3717"
+ resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz"
integrity sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==
dependencies:
caniuse-lite "^1.0.30001181"
@@ -1918,24 +2689,39 @@ browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4
escalade "^3.1.1"
node-releases "^1.1.70"
+browserslist@^4.22.2:
+ version "4.22.2"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.2.tgz#704c4943072bd81ea18997f3bd2180e89c77874b"
+ integrity sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==
+ dependencies:
+ caniuse-lite "^1.0.30001565"
+ electron-to-chromium "^1.4.601"
+ node-releases "^2.0.14"
+ update-browserslist-db "^1.0.13"
+
+bs-custom-file-input@^1.3.4:
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/bs-custom-file-input/-/bs-custom-file-input-1.3.4.tgz#c275cb8d4f1c02ba026324292509fa9a747dbda8"
+ integrity sha512-NBsQzTnef3OW1MvdKBbMHAYHssCd613MSeJV7z2McXznWtVMnJCy7Ckyc+PwxV6Pk16cu6YBcYWh/ZE0XWNKCA==
+
buffer-from@^1.0.0:
version "1.1.1"
- resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
+ resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz"
integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
buffer-indexof@^1.0.0:
version "1.1.1"
- resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c"
+ resolved "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz"
integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==
buffer-xor@^1.0.3:
version "1.0.3"
- resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
+ resolved "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz"
integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=
buffer@^4.3.0:
version "4.9.2"
- resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8"
+ resolved "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz"
integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==
dependencies:
base64-js "^1.0.2"
@@ -1944,22 +2730,22 @@ buffer@^4.3.0:
builtin-status-codes@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
+ resolved "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz"
integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=
bytes@3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
+ resolved "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz"
integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=
bytes@3.1.0:
version "3.1.0"
- resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6"
+ resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz"
integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==
cacache@^12.0.2:
version "12.0.4"
- resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c"
+ resolved "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz"
integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==
dependencies:
bluebird "^3.5.5"
@@ -1980,7 +2766,7 @@ cacache@^12.0.2:
cacache@^15.0.5:
version "15.0.5"
- resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.5.tgz#69162833da29170d6732334643c60e005f5f17d0"
+ resolved "https://registry.npmjs.org/cacache/-/cacache-15.0.5.tgz"
integrity sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A==
dependencies:
"@npmcli/move-file" "^1.0.1"
@@ -2003,7 +2789,7 @@ cacache@^15.0.5:
cache-base@^1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
+ resolved "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz"
integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==
dependencies:
collection-visit "^1.0.0"
@@ -2018,7 +2804,7 @@ cache-base@^1.0.1:
call-bind@^1.0.0, call-bind@^1.0.2:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
+ resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz"
integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
dependencies:
function-bind "^1.1.1"
@@ -2026,49 +2812,36 @@ call-bind@^1.0.0, call-bind@^1.0.2:
caller-callsite@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134"
+ resolved "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz"
integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=
dependencies:
callsites "^2.0.0"
caller-path@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4"
+ resolved "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz"
integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=
dependencies:
caller-callsite "^2.0.0"
callsites@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50"
+ resolved "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz"
integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=
callsites@^3.0.0:
version "3.1.0"
- resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
+ resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz"
integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
-camelcase-keys@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
- integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc=
- dependencies:
- camelcase "^2.0.0"
- map-obj "^1.0.0"
-
-camelcase@^2.0.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
- integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=
-
camelcase@^5.0.0, camelcase@^5.3.1:
version "5.3.1"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
+ resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz"
integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
caniuse-api@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0"
+ resolved "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz"
integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==
dependencies:
browserslist "^4.0.0"
@@ -2078,33 +2851,22 @@ caniuse-api@^3.0.0:
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001181:
version "1.0.30001187"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001187.tgz#5706942631f83baa5a0218b7dfa6ced29f845438"
+ resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001187.tgz"
integrity sha512-w7/EP1JRZ9552CyrThUnay2RkZ1DXxKe/Q2swTC4+LElLh9RRYrL1Z+27LlakB8kzY0fSmHw9mc7XYDUKAKWMA==
-case-sensitive-paths-webpack-plugin@^2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz#23ac613cc9a856e4f88ff8bb73bbb5e989825cf7"
- integrity sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ==
+caniuse-lite@^1.0.30001565:
+ version "1.0.30001576"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001576.tgz#893be772cf8ee6056d6c1e2d07df365b9ec0a5c4"
+ integrity sha512-ff5BdakGe2P3SQsMsiqmt1Lc8221NR1VzHj5jXN5vBny9A6fpze94HiVV/n7XRosOlsShJcvMv5mdnpjOGCEgg==
-caseless@~0.12.0:
- version "0.12.0"
- resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
- integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
-
-chalk@^1.1.1:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
- integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
- dependencies:
- ansi-styles "^2.2.1"
- escape-string-regexp "^1.0.2"
- has-ansi "^2.0.0"
- strip-ansi "^3.0.0"
- supports-color "^2.0.0"
+case-sensitive-paths-webpack-plugin@^2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4"
+ integrity sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==
chalk@^2.0, chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2:
version "2.4.2"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
+ resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz"
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
dependencies:
ansi-styles "^3.2.1"
@@ -2113,7 +2875,7 @@ chalk@^2.0, chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2:
chalk@^4.1.0:
version "4.1.0"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a"
+ resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz"
integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==
dependencies:
ansi-styles "^4.1.0"
@@ -2121,26 +2883,41 @@ chalk@^4.1.0:
chart.js@>=3.0.2, chart.js@^3.5.1:
version "3.5.1"
- resolved "https://registry.yarnpkg.com/chart.js/-/chart.js-3.5.1.tgz#73e24d23a4134a70ccdb5e79a917f156b6f3644a"
+ resolved "https://registry.npmjs.org/chart.js/-/chart.js-3.5.1.tgz"
integrity sha512-m5kzt72I1WQ9LILwQC4syla/LD/N413RYv2Dx2nnTkRS9iv/ey1xLTt0DnPc/eWV4zI+BgEgDYBIzbQhZHc/PQ==
chartjs-adapter-date-fns@>=2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/chartjs-adapter-date-fns/-/chartjs-adapter-date-fns-2.0.0.tgz#5e53b2f660b993698f936f509c86dddf9ed44c6b"
+ resolved "https://registry.npmjs.org/chartjs-adapter-date-fns/-/chartjs-adapter-date-fns-2.0.0.tgz"
integrity sha512-rmZINGLe+9IiiEB0kb57vH3UugAtYw33anRiw5kS2Tu87agpetDDoouquycWc9pRsKtQo5j+vLsYHyr8etAvFw==
chartkick@^4.0.5:
version "4.0.5"
- resolved "https://registry.yarnpkg.com/chartkick/-/chartkick-4.0.5.tgz#310a60c931e8ceedc39adee2ef8e9d1e474cb0e6"
+ resolved "https://registry.npmjs.org/chartkick/-/chartkick-4.0.5.tgz"
integrity sha512-xKak4Fsgfvp1hj/LykRKkniDMaZASx2A4TdVc/sfsiNFFNf1m+D7PGwP1vgj1UsbsCjOCSfGWWyJpOYxkUCBug==
optionalDependencies:
chart.js ">=3.0.2"
chartjs-adapter-date-fns ">=2.0.0"
date-fns ">=2.0.0"
+"chokidar@>=3.0.0 <4.0.0":
+ version "3.5.3"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
+ integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
+ dependencies:
+ anymatch "~3.1.2"
+ braces "~3.0.2"
+ glob-parent "~5.1.2"
+ is-binary-path "~2.1.0"
+ is-glob "~4.0.1"
+ normalize-path "~3.0.0"
+ readdirp "~3.6.0"
+ optionalDependencies:
+ fsevents "~2.3.2"
+
chokidar@^2.1.8:
version "2.1.8"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917"
+ resolved "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz"
integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==
dependencies:
anymatch "^2.0.0"
@@ -2159,7 +2936,7 @@ chokidar@^2.1.8:
chokidar@^3.4.1, chokidar@^3.4.2:
version "3.5.1"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a"
+ resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz"
integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==
dependencies:
anymatch "~3.1.1"
@@ -2174,24 +2951,24 @@ chokidar@^3.4.1, chokidar@^3.4.2:
chownr@^1.1.1:
version "1.1.4"
- resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
+ resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz"
integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
chownr@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece"
+ resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz"
integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==
chrome-trace-event@^1.0.2:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4"
+ resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz"
integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==
dependencies:
tslib "^1.9.0"
cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
version "1.0.4"
- resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de"
+ resolved "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz"
integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==
dependencies:
inherits "^2.0.1"
@@ -2199,12 +2976,12 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
circular-dependency-plugin@^5.2.2:
version "5.2.2"
- resolved "https://registry.yarnpkg.com/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz#39e836079db1d3cf2f988dc48c5188a44058b600"
+ resolved "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz"
integrity sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==
class-utils@^0.3.5:
version "0.3.6"
- resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
+ resolved "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz"
integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==
dependencies:
arr-union "^3.1.0"
@@ -2214,76 +2991,67 @@ class-utils@^0.3.5:
clean-stack@^2.0.0:
version "2.2.0"
- resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
+ resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz"
integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==
cliui@^5.0.0:
version "5.0.0"
- resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5"
+ resolved "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz"
integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==
dependencies:
string-width "^3.1.0"
strip-ansi "^5.2.0"
wrap-ansi "^5.1.0"
-clone-deep@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387"
- integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==
- dependencies:
- is-plain-object "^2.0.4"
- kind-of "^6.0.2"
- shallow-clone "^3.0.0"
+clone@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f"
+ integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==
coa@^2.0.2:
version "2.0.2"
- resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3"
+ resolved "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz"
integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==
dependencies:
"@types/q" "^1.5.1"
chalk "^2.4.1"
q "^1.1.2"
-code-point-at@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
- integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
-
collection-visit@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
+ resolved "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz"
integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=
dependencies:
map-visit "^1.0.0"
object-visit "^1.0.0"
-color-convert@^1.9.0, color-convert@^1.9.1, color-convert@^1.9.3:
+color-convert@^1.9.0, color-convert@^1.9.1:
version "1.9.3"
- resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
+ resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz"
integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
dependencies:
color-name "1.1.3"
color-convert@^2.0.1:
version "2.0.1"
- resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
+ resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz"
integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
dependencies:
color-name "~1.1.4"
color-name@1.1.3:
version "1.1.3"
- resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
+ resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz"
integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
color-name@^1.0.0, color-name@~1.1.4:
version "1.1.4"
- resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
+ resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
color-string@^1.5.4:
version "1.5.4"
- resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.4.tgz#dd51cd25cfee953d138fe4002372cc3d0e504cb6"
+ resolved "https://registry.npmjs.org/color-string/-/color-string-1.5.4.tgz"
integrity sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==
dependencies:
color-name "^1.0.0"
@@ -2291,7 +3059,7 @@ color-string@^1.5.4:
color@^3.0.0:
version "3.1.3"
- resolved "https://registry.yarnpkg.com/color/-/color-3.1.3.tgz#ca67fb4e7b97d611dcde39eceed422067d91596e"
+ resolved "https://registry.npmjs.org/color/-/color-3.1.3.tgz"
integrity sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==
dependencies:
color-convert "^1.9.1"
@@ -2299,29 +3067,29 @@ color@^3.0.0:
colorette@^1.2.1:
version "1.2.1"
- resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b"
+ resolved "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz"
integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==
-combined-stream@^1.0.6, combined-stream@~1.0.6:
+combined-stream@^1.0.6:
version "1.0.8"
- resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
+ resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz"
integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
dependencies:
delayed-stream "~1.0.0"
commander@^2.20.0:
version "2.20.3"
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
+ resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz"
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
commondir@^1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
+ resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz"
integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
commonmark@^0.29.0:
version "0.29.3"
- resolved "https://registry.yarnpkg.com/commonmark/-/commonmark-0.29.3.tgz#bb1d5733bfe3ea213b412f33f16439cc12999c2c"
+ resolved "https://registry.npmjs.org/commonmark/-/commonmark-0.29.3.tgz"
integrity sha512-fvt/NdOFKaL2gyhltSy6BC4LxbbxbnPxBMl923ittqO/JBM0wQHaoYZliE4tp26cRxX/ZZtRsJlZzQrVdUkXAA==
dependencies:
entities "~2.0"
@@ -2331,17 +3099,17 @@ commonmark@^0.29.0:
component-emitter@^1.2.1:
version "1.3.0"
- resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
+ resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz"
integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
compressible@~2.0.16:
version "2.0.18"
- resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba"
+ resolved "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz"
integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==
dependencies:
mime-db ">= 1.43.0 < 2"
-compression-webpack-plugin@^4.0.0:
+compression-webpack-plugin@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/compression-webpack-plugin/-/compression-webpack-plugin-4.0.1.tgz#33eda97f1170dd38c5556771de10f34245aa0274"
integrity sha512-0mg6PgwTsUe5LEcUrOu3ob32vraDx2VdbMGAT1PARcOV+UJWDYZFdkSo6RbHoGQ061mmmkC7XpRKOlvwm/gzJQ==
@@ -2354,7 +3122,7 @@ compression-webpack-plugin@^4.0.0:
compression@^1.7.4:
version "1.7.4"
- resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f"
+ resolved "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz"
integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==
dependencies:
accepts "~1.3.5"
@@ -2367,12 +3135,12 @@ compression@^1.7.4:
concat-map@0.0.1:
version "0.0.1"
- resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+ resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
concat-stream@^1.5.0:
version "1.6.2"
- resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
+ resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz"
integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
dependencies:
buffer-from "^1.0.0"
@@ -2382,56 +3150,56 @@ concat-stream@^1.5.0:
connect-history-api-fallback@^1.6.0:
version "1.6.0"
- resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc"
+ resolved "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz"
integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==
console-browserify@^1.1.0:
version "1.2.0"
- resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336"
+ resolved "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz"
integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==
-console-control-strings@^1.0.0, console-control-strings@~1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
- integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
-
constants-browserify@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
+ resolved "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz"
integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=
content-disposition@0.5.3:
version "0.5.3"
- resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd"
+ resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz"
integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==
dependencies:
safe-buffer "5.1.2"
content-type@~1.0.4:
version "1.0.4"
- resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
+ resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz"
integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
convert-source-map@^1.7.0:
version "1.7.0"
- resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442"
+ resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz"
integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==
dependencies:
safe-buffer "~5.1.1"
+convert-source-map@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a"
+ integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==
+
cookie-signature@1.0.6:
version "1.0.6"
- resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
+ resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz"
integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw=
cookie@0.4.0:
version "0.4.0"
- resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba"
+ resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz"
integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==
copy-concurrently@^1.0.0:
version "1.0.5"
- resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0"
+ resolved "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz"
integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==
dependencies:
aproba "^1.1.1"
@@ -2443,30 +3211,37 @@ copy-concurrently@^1.0.0:
copy-descriptor@^0.1.0:
version "0.1.1"
- resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
+ resolved "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz"
integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
+core-js-compat@^3.31.0, core-js-compat@^3.33.1:
+ version "3.35.0"
+ resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.35.0.tgz#c149a3d1ab51e743bc1da61e39cb51f461a41873"
+ integrity sha512-5blwFAddknKeNgsjBzilkdQ0+YK8L1PfqPYq40NOYMYFSS38qj+hpTcLLWwpIwA2A5bje/x5jmVn2tzUMg9IVw==
+ dependencies:
+ browserslist "^4.22.2"
+
core-js-compat@^3.8.0:
version "3.8.3"
- resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.8.3.tgz#9123fb6b9cad30f0651332dc77deba48ef9b0b3f"
+ resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.8.3.tgz"
integrity sha512-1sCb0wBXnBIL16pfFG1Gkvei6UzvKyTNYpiC41yrdjEv0UoJoq9E/abTMzyYJ6JpTkAj15dLjbqifIzEBDVvog==
dependencies:
browserslist "^4.16.1"
semver "7.0.0"
-core-js@^3.6.5:
- version "3.8.3"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.8.3.tgz#c21906e1f14f3689f93abcc6e26883550dd92dd0"
- integrity sha512-KPYXeVZYemC2TkNEkX/01I+7yd+nX3KddKwZ1Ww7SKWdI2wQprSgLmrTddT8nw92AjEklTsPBoSdQBhbI1bQ6Q==
+core-js@^3.16.2:
+ version "3.35.0"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.35.0.tgz#58e651688484f83c34196ca13f099574ee53d6b4"
+ integrity sha512-ntakECeqg81KqMueeGJ79Q5ZgQNR+6eaE8sxGCx62zMbAIj65q+uYvatToew3m6eAGdU4gNZwpZ34NMe4GYswg==
-core-util-is@1.0.2, core-util-is@~1.0.0:
+core-util-is@~1.0.0:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
+ resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz"
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
cosmiconfig@^5.0.0:
version "5.2.1"
- resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a"
+ resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz"
integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==
dependencies:
import-fresh "^2.0.0"
@@ -2476,7 +3251,7 @@ cosmiconfig@^5.0.0:
cosmiconfig@^6.0.0:
version "6.0.0"
- resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982"
+ resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz"
integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==
dependencies:
"@types/parse-json" "^4.0.0"
@@ -2487,7 +3262,7 @@ cosmiconfig@^6.0.0:
create-ecdh@^4.0.0:
version "4.0.4"
- resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e"
+ resolved "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz"
integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==
dependencies:
bn.js "^4.1.0"
@@ -2495,7 +3270,7 @@ create-ecdh@^4.0.0:
create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0:
version "1.2.0"
- resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196"
+ resolved "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz"
integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==
dependencies:
cipher-base "^1.0.1"
@@ -2506,7 +3281,7 @@ create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0:
create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7:
version "1.1.7"
- resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff"
+ resolved "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz"
integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==
dependencies:
cipher-base "^1.0.3"
@@ -2518,27 +3293,19 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7:
crelt@^1.0.0:
version "1.0.5"
- resolved "https://registry.yarnpkg.com/crelt/-/crelt-1.0.5.tgz#57c0d52af8c859e354bace1883eb2e1eb182bb94"
+ resolved "https://registry.npmjs.org/crelt/-/crelt-1.0.5.tgz"
integrity sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA==
cross-fetch@^3.0.4:
version "3.0.6"
- resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.0.6.tgz#3a4040bc8941e653e0e9cf17f29ebcd177d3365c"
+ resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.0.6.tgz"
integrity sha512-KBPUbqgFjzWlVcURG+Svp9TlhA5uliYtiNx/0r8nv0pdypeQCRJ9IaSIc3q/x3q8t3F75cHuwxVql1HFGHCNJQ==
dependencies:
node-fetch "2.6.1"
-cross-spawn@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982"
- integrity sha1-ElYDfsufDF9549bvE14wdwGEuYI=
- dependencies:
- lru-cache "^4.0.1"
- which "^1.2.9"
-
cross-spawn@^6.0.0, cross-spawn@^6.0.5:
version "6.0.5"
- resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
+ resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz"
integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
dependencies:
nice-try "^1.0.4"
@@ -2549,7 +3316,7 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5:
crypto-browserify@^3.11.0:
version "3.12.0"
- resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
+ resolved "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz"
integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==
dependencies:
browserify-cipher "^1.0.0"
@@ -2566,19 +3333,19 @@ crypto-browserify@^3.11.0:
css-blank-pseudo@^0.1.4:
version "0.1.4"
- resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5"
+ resolved "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz"
integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==
dependencies:
postcss "^7.0.5"
css-color-names@0.0.4, css-color-names@^0.0.4:
version "0.0.4"
- resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
+ resolved "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz"
integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=
css-declaration-sorter@^4.0.1:
version "4.0.1"
- resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22"
+ resolved "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz"
integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==
dependencies:
postcss "^7.0.1"
@@ -2586,13 +3353,13 @@ css-declaration-sorter@^4.0.1:
css-has-pseudo@^0.10.0:
version "0.10.0"
- resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee"
+ resolved "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz"
integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==
dependencies:
postcss "^7.0.6"
postcss-selector-parser "^5.0.0-rc.4"
-css-loader@^3.5.3:
+css-loader@^3.6.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.6.0.tgz#2e4b2c7e6e2d27f8c8f28f61bffcd2e6c91ef645"
integrity sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==
@@ -2613,19 +3380,19 @@ css-loader@^3.5.3:
css-prefers-color-scheme@^3.1.1:
version "3.1.1"
- resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz#6f830a2714199d4f0d0d0bb8a27916ed65cff1f4"
+ resolved "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz"
integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==
dependencies:
postcss "^7.0.5"
css-select-base-adapter@^0.1.1:
version "0.1.1"
- resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7"
+ resolved "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz"
integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==
css-select@^2.0.0:
version "2.1.0"
- resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef"
+ resolved "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz"
integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==
dependencies:
boolbase "^1.0.0"
@@ -2635,7 +3402,7 @@ css-select@^2.0.0:
css-tree@1.0.0-alpha.37:
version "1.0.0-alpha.37"
- resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22"
+ resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz"
integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==
dependencies:
mdn-data "2.0.4"
@@ -2643,7 +3410,7 @@ css-tree@1.0.0-alpha.37:
css-tree@^1.1.2:
version "1.1.2"
- resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.2.tgz#9ae393b5dafd7dae8a622475caec78d3d8fbd7b5"
+ resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.1.2.tgz"
integrity sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ==
dependencies:
mdn-data "2.0.14"
@@ -2651,27 +3418,27 @@ css-tree@^1.1.2:
css-what@^3.2.1:
version "3.4.2"
- resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4"
+ resolved "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz"
integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==
cssdb@^4.4.0:
version "4.4.0"
- resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0"
+ resolved "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz"
integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==
cssesc@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703"
+ resolved "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz"
integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==
cssesc@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
+ resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz"
integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
cssnano-preset-default@^4.0.7:
version "4.0.7"
- resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76"
+ resolved "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz"
integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==
dependencies:
css-declaration-sorter "^4.0.1"
@@ -2707,29 +3474,29 @@ cssnano-preset-default@^4.0.7:
cssnano-util-get-arguments@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f"
+ resolved "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz"
integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=
cssnano-util-get-match@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d"
+ resolved "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz"
integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=
cssnano-util-raw-cache@^4.0.1:
version "4.0.1"
- resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282"
+ resolved "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz"
integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==
dependencies:
postcss "^7.0.0"
cssnano-util-same-parent@^4.0.0:
version "4.0.1"
- resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3"
+ resolved "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz"
integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==
cssnano@^4.1.10:
version "4.1.10"
- resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2"
+ resolved "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz"
integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==
dependencies:
cosmiconfig "^5.0.0"
@@ -2739,69 +3506,62 @@ cssnano@^4.1.10:
csso@^4.0.2:
version "4.2.0"
- resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529"
+ resolved "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz"
integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==
dependencies:
css-tree "^1.1.2"
-currently-unhandled@^0.4.1:
- version "0.4.1"
- resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
- integrity sha1-mI3zP+qxke95mmE2nddsF635V+o=
- dependencies:
- array-find-index "^1.0.1"
-
cyclist@^1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9"
+ resolved "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz"
integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=
-dashdash@^1.12.0:
- version "1.14.1"
- resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
- integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=
- dependencies:
- assert-plus "^1.0.0"
-
date-fns@>=2.0.0:
version "2.24.0"
- resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.24.0.tgz#7d86dc0d93c87b76b63d213b4413337cfd1c105d"
+ resolved "https://registry.npmjs.org/date-fns/-/date-fns-2.24.0.tgz"
integrity sha512-6ujwvwgPID6zbI0o7UbURi2vlLDR9uP26+tW6Lg+Ji3w7dd0i3DOcjcClLjLPranT60SSEFBwdSyYwn/ZkPIuw==
debug@2.6.9, debug@^2.2.0, debug@^2.3.3:
version "2.6.9"
- resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
+ resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
dependencies:
ms "2.0.0"
debug@^3.1.1, debug@^3.2.6:
version "3.2.7"
- resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
+ resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz"
integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
dependencies:
ms "^2.1.1"
debug@^4.1.0, debug@^4.1.1:
version "4.3.1"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
+ resolved "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz"
integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==
dependencies:
ms "2.1.2"
-decamelize@^1.1.2, decamelize@^1.2.0:
+debug@^4.3.1:
+ version "4.3.4"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
+ integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
+ dependencies:
+ ms "2.1.2"
+
+decamelize@^1.2.0:
version "1.2.0"
- resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
+ resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz"
integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
decode-uri-component@^0.2.0:
version "0.2.0"
- resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
+ resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz"
integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
deep-equal@^1.0.1:
version "1.1.1"
- resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a"
+ resolved "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz"
integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==
dependencies:
is-arguments "^1.0.4"
@@ -2813,12 +3573,12 @@ deep-equal@^1.0.1:
deepmerge@^4.2.2:
version "4.2.2"
- resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955"
+ resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz"
integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==
default-gateway@^4.2.0:
version "4.2.0"
- resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b"
+ resolved "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz"
integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==
dependencies:
execa "^1.0.0"
@@ -2826,28 +3586,28 @@ default-gateway@^4.2.0:
define-properties@^1.1.3:
version "1.1.3"
- resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
+ resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz"
integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
dependencies:
object-keys "^1.0.12"
define-property@^0.2.5:
version "0.2.5"
- resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
+ resolved "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz"
integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=
dependencies:
is-descriptor "^0.1.0"
define-property@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
+ resolved "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz"
integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY=
dependencies:
is-descriptor "^1.0.0"
define-property@^2.0.2:
version "2.0.2"
- resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
+ resolved "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz"
integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==
dependencies:
is-descriptor "^1.0.2"
@@ -2855,7 +3615,7 @@ define-property@^2.0.2:
del@^4.1.1:
version "4.1.1"
- resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4"
+ resolved "https://registry.npmjs.org/del/-/del-4.1.1.tgz"
integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==
dependencies:
"@types/glob" "^7.1.1"
@@ -2868,22 +3628,17 @@ del@^4.1.1:
delayed-stream@~1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
+ resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz"
integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
-delegates@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
- integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
-
depd@~1.1.2:
version "1.1.2"
- resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
+ resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz"
integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
des.js@^1.0.0:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843"
+ resolved "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz"
integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==
dependencies:
inherits "^2.0.1"
@@ -2891,22 +3646,22 @@ des.js@^1.0.0:
destroy@~1.0.4:
version "1.0.4"
- resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
+ resolved "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz"
integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
detect-file@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7"
+ resolved "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz"
integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=
detect-node@^2.0.4:
version "2.0.4"
- resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c"
+ resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz"
integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==
diffie-hellman@^5.0.0:
version "5.0.3"
- resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875"
+ resolved "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz"
integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==
dependencies:
bn.js "^4.1.0"
@@ -2915,12 +3670,12 @@ diffie-hellman@^5.0.0:
dns-equal@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d"
+ resolved "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz"
integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0=
dns-packet@^1.3.1:
version "1.3.1"
- resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a"
+ resolved "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz"
integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==
dependencies:
ip "^1.1.0"
@@ -2928,14 +3683,14 @@ dns-packet@^1.3.1:
dns-txt@^2.0.2:
version "2.0.2"
- resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6"
+ resolved "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz"
integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=
dependencies:
buffer-indexof "^1.0.0"
dom-serializer@0:
version "0.2.2"
- resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51"
+ resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz"
integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==
dependencies:
domelementtype "^2.0.1"
@@ -2943,22 +3698,22 @@ dom-serializer@0:
domain-browser@^1.1.1:
version "1.2.0"
- resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
+ resolved "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz"
integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==
domelementtype@1:
version "1.3.1"
- resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f"
+ resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz"
integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==
domelementtype@^2.0.1:
version "2.1.0"
- resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e"
+ resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz"
integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==
domutils@^1.7.0:
version "1.7.0"
- resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
+ resolved "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz"
integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==
dependencies:
dom-serializer "0"
@@ -2966,14 +3721,14 @@ domutils@^1.7.0:
dot-prop@^5.2.0:
version "5.3.0"
- resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88"
+ resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz"
integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==
dependencies:
is-obj "^2.0.0"
duplexify@^3.4.2, duplexify@^3.6.0:
version "3.7.1"
- resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309"
+ resolved "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz"
integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==
dependencies:
end-of-stream "^1.0.0"
@@ -2981,27 +3736,24 @@ duplexify@^3.4.2, duplexify@^3.6.0:
readable-stream "^2.0.0"
stream-shift "^1.0.0"
-ecc-jsbn@~0.1.1:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
- integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=
- dependencies:
- jsbn "~0.1.0"
- safer-buffer "^2.1.0"
-
ee-first@1.1.1:
version "1.1.1"
- resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
+ resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz"
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
electron-to-chromium@^1.3.649:
version "1.3.663"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.663.tgz#dd54adfd8d7f0e01b80d236c6e232efbaa0c686c"
+ resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.663.tgz"
integrity sha512-xkVkzHj6k3oRRGlmdgUCCLSLhtFYHDCTH7SeK+LJdJjnsLcrdbpr8EYmfMQhez3V/KPO5UScSpzQ0feYX6Qoyw==
+electron-to-chromium@^1.4.601:
+ version "1.4.623"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.623.tgz#0f7400114ac3425500e9244d2b0e9c3107c331cb"
+ integrity sha512-lKoz10iCYlP1WtRYdh5MvocQPWVRoI7ysp6qf18bmeBgR8abE6+I2CsfyNKztRDZvhdWc+krKT6wS7Neg8sw3A==
+
elliptic@^6.5.3:
version "6.5.4"
- resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb"
+ resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz"
integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==
dependencies:
bn.js "^4.11.9"
@@ -3014,29 +3766,29 @@ elliptic@^6.5.3:
emoji-regex@^7.0.1:
version "7.0.3"
- resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
+ resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz"
integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
emojis-list@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
+ resolved "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz"
integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
encodeurl@~1.0.2:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
+ resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz"
integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
end-of-stream@^1.0.0, end-of-stream@^1.1.0:
version "1.4.4"
- resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
+ resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz"
integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
dependencies:
once "^1.4.0"
enhanced-resolve@^4.1.1, enhanced-resolve@^4.5.0:
version "4.5.0"
- resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec"
+ resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz"
integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==
dependencies:
graceful-fs "^4.1.2"
@@ -3045,38 +3797,38 @@ enhanced-resolve@^4.1.1, enhanced-resolve@^4.5.0:
entities@^2.0.0:
version "2.2.0"
- resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
+ resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz"
integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
entities@~2.0, entities@~2.0.0:
version "2.0.3"
- resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f"
+ resolved "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz"
integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==
errno@^0.1.3, errno@~0.1.7:
version "0.1.8"
- resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f"
+ resolved "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz"
integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==
dependencies:
prr "~1.0.1"
-error-ex@^1.2.0, error-ex@^1.3.1:
+error-ex@^1.3.1:
version "1.3.2"
- resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
+ resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz"
integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
dependencies:
is-arrayish "^0.2.1"
error-stack-parser@^2.0.4:
version "2.0.6"
- resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.6.tgz#5a99a707bd7a4c58a797902d48d82803ede6aad8"
+ resolved "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.6.tgz"
integrity sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ==
dependencies:
stackframe "^1.1.1"
es-abstract@^1.17.2:
version "1.17.7"
- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c"
+ resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz"
integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==
dependencies:
es-to-primitive "^1.2.1"
@@ -3093,7 +3845,7 @@ es-abstract@^1.17.2:
es-abstract@^1.18.0-next.1:
version "1.18.0-next.2"
- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.2.tgz#088101a55f0541f595e7e057199e27ddc8f3a5c2"
+ resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.2.tgz"
integrity sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw==
dependencies:
call-bind "^1.0.2"
@@ -3113,7 +3865,7 @@ es-abstract@^1.18.0-next.1:
es-to-primitive@^1.2.1:
version "1.2.1"
- resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
+ resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz"
integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
dependencies:
is-callable "^1.1.4"
@@ -3122,22 +3874,22 @@ es-to-primitive@^1.2.1:
escalade@^3.1.1:
version "3.1.1"
- resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
+ resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz"
integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
escape-html@~1.0.3:
version "1.0.3"
- resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
+ resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz"
integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
-escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
+escape-string-regexp@^1.0.5:
version "1.0.5"
- resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+ resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
eslint-scope@^4.0.3:
version "4.0.3"
- resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848"
+ resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz"
integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==
dependencies:
esrecurse "^4.1.0"
@@ -3145,56 +3897,56 @@ eslint-scope@^4.0.3:
esprima@^4.0.0:
version "4.0.1"
- resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
+ resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
esrecurse@^4.1.0:
version "4.3.0"
- resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
+ resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz"
integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
dependencies:
estraverse "^5.2.0"
estraverse@^4.1.1:
version "4.3.0"
- resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
+ resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz"
integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
estraverse@^5.2.0:
version "5.2.0"
- resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880"
+ resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz"
integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==
esutils@^2.0.2:
version "2.0.3"
- resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
+ resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz"
integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
etag@~1.8.1:
version "1.8.1"
- resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
+ resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz"
integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
eventemitter3@^4.0.0:
version "4.0.7"
- resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
+ resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz"
integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
events@^3.0.0:
version "3.2.0"
- resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379"
+ resolved "https://registry.npmjs.org/events/-/events-3.2.0.tgz"
integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==
eventsource@^1.0.7:
version "1.0.7"
- resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0"
+ resolved "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz"
integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==
dependencies:
original "^1.0.0"
evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
version "1.0.3"
- resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02"
+ resolved "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz"
integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==
dependencies:
md5.js "^1.3.4"
@@ -3202,7 +3954,7 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
execa@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
+ resolved "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz"
integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==
dependencies:
cross-spawn "^6.0.0"
@@ -3215,7 +3967,7 @@ execa@^1.0.0:
expand-brackets@^2.1.4:
version "2.1.4"
- resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
+ resolved "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz"
integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI=
dependencies:
debug "^2.3.3"
@@ -3228,14 +3980,14 @@ expand-brackets@^2.1.4:
expand-tilde@^2.0.0, expand-tilde@^2.0.2:
version "2.0.2"
- resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502"
+ resolved "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz"
integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=
dependencies:
homedir-polyfill "^1.0.1"
express@^4.17.1:
version "4.17.1"
- resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134"
+ resolved "https://registry.npmjs.org/express/-/express-4.17.1.tgz"
integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==
dependencies:
accepts "~1.3.7"
@@ -3271,27 +4023,22 @@ express@^4.17.1:
extend-shallow@^2.0.1:
version "2.0.1"
- resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
+ resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz"
integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=
dependencies:
is-extendable "^0.1.0"
extend-shallow@^3.0.0, extend-shallow@^3.0.2:
version "3.0.2"
- resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
+ resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz"
integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
dependencies:
assign-symbols "^1.0.0"
is-extendable "^1.0.1"
-extend@~3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
- integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
-
extglob@^2.0.4:
version "2.0.4"
- resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
+ resolved "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz"
integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==
dependencies:
array-unique "^0.3.2"
@@ -3303,39 +4050,29 @@ extglob@^2.0.4:
snapdragon "^0.8.1"
to-regex "^3.0.1"
-extsprintf@1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
- integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=
-
-extsprintf@^1.2.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
- integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
-
fast-deep-equal@^3.1.1:
version "3.1.3"
- resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
+ resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz"
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
fast-json-stable-stringify@^2.0.0:
version "2.1.0"
- resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
+ resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz"
integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
faye-websocket@^0.11.3:
version "0.11.3"
- resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e"
+ resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz"
integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==
dependencies:
websocket-driver ">=0.5.1"
figgy-pudding@^3.5.1:
version "3.5.2"
- resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e"
+ resolved "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz"
integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==
-file-loader@^6.0.0:
+file-loader@^6.2.0:
version "6.2.0"
resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d"
integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==
@@ -3350,7 +4087,7 @@ file-uri-to-path@1.0.0:
fill-range@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
+ resolved "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz"
integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=
dependencies:
extend-shallow "^2.0.1"
@@ -3360,14 +4097,14 @@ fill-range@^4.0.0:
fill-range@^7.0.1:
version "7.0.1"
- resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
+ resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz"
integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
dependencies:
to-regex-range "^5.0.1"
finalhandler@~1.1.2:
version "1.1.2"
- resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d"
+ resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz"
integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==
dependencies:
debug "2.6.9"
@@ -3380,7 +4117,7 @@ finalhandler@~1.1.2:
find-cache-dir@^2.1.0:
version "2.1.0"
- resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7"
+ resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz"
integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==
dependencies:
commondir "^1.0.1"
@@ -3389,31 +4126,23 @@ find-cache-dir@^2.1.0:
find-cache-dir@^3.3.1:
version "3.3.1"
- resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880"
+ resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz"
integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==
dependencies:
commondir "^1.0.1"
make-dir "^3.0.2"
pkg-dir "^4.1.0"
-find-up@^1.0.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
- integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=
- dependencies:
- path-exists "^2.0.0"
- pinkie-promise "^2.0.0"
-
find-up@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
+ resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz"
integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
dependencies:
locate-path "^3.0.0"
find-up@^4.0.0:
version "4.1.0"
- resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
+ resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz"
integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
dependencies:
locate-path "^5.0.0"
@@ -3421,7 +4150,7 @@ find-up@^4.0.0:
findup-sync@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1"
+ resolved "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz"
integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==
dependencies:
detect-file "^1.0.0"
@@ -3429,19 +4158,19 @@ findup-sync@^3.0.0:
micromatch "^3.0.4"
resolve-dir "^1.0.1"
-flatted@^3.0.4:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469"
- integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==
+flatted@^3.2.2:
+ version "3.2.9"
+ resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf"
+ integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==
flatten@^1.0.2:
version "1.0.3"
- resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b"
+ resolved "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz"
integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==
flush-write-stream@^1.0.0:
version "1.1.1"
- resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8"
+ resolved "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz"
integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==
dependencies:
inherits "^2.0.3"
@@ -3449,27 +4178,22 @@ flush-write-stream@^1.0.0:
follow-redirects@^1.0.0:
version "1.13.2"
- resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.2.tgz#dd73c8effc12728ba5cf4259d760ea5fb83e3147"
+ resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.2.tgz"
integrity sha512-6mPTgLxYm3r6Bkkg0vNM0HTjfGrOEtsfbhagQvbxDEsEkpNhw582upBaoRZylzen6krEmxXJgt9Ju6HiI4O7BA==
for-in@^1.0.2:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
+ resolved "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz"
integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
-forever-agent@~0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
- integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
-
fork-awesome@^1.1.7:
version "1.1.7"
- resolved "https://registry.yarnpkg.com/fork-awesome/-/fork-awesome-1.1.7.tgz#1427da1cac3d1713046ee88427e5fcecb9501d21"
+ resolved "https://registry.npmjs.org/fork-awesome/-/fork-awesome-1.1.7.tgz"
integrity sha512-IHI7XCSXrKfUIWslse8c/PaaVDT1oBaYge+ju40ihL2ooiQeBpTr4wvIXhgTd2NuhntlvX+M5jYHAPTzNlmv0g==
fork-ts-checker-webpack-plugin@^6.1.0:
version "6.1.0"
- resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.1.0.tgz#7581a6ccd7cbbed9ecce3de64fb1f599d7a2990b"
+ resolved "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.1.0.tgz"
integrity sha512-xLNufWQ1dfQUdZe48TGQlER/0OkcMnUB6lfbN9Tt13wsYyo+2DwcCbnOaPBo1PoFow/WL8pJPktGIdbJaHxAnw==
dependencies:
"@babel/code-frame" "^7.8.3"
@@ -3487,42 +4211,33 @@ fork-ts-checker-webpack-plugin@^6.1.0:
form-data@^2.5.0:
version "2.5.1"
- resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4"
+ resolved "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz"
integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==
dependencies:
asynckit "^0.4.0"
combined-stream "^1.0.6"
mime-types "^2.1.12"
-form-data@~2.3.2:
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
- integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==
- dependencies:
- asynckit "^0.4.0"
- combined-stream "^1.0.6"
- mime-types "^2.1.12"
-
forwarded@~0.1.2:
version "0.1.2"
- resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
+ resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz"
integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=
fragment-cache@^0.2.1:
version "0.2.1"
- resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
+ resolved "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz"
integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=
dependencies:
map-cache "^0.2.2"
fresh@0.5.2:
version "0.5.2"
- resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
+ resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz"
integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
from2@^2.1.0:
version "2.3.0"
- resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af"
+ resolved "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz"
integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=
dependencies:
inherits "^2.0.1"
@@ -3530,7 +4245,7 @@ from2@^2.1.0:
fs-extra@^9.0.0:
version "9.1.0"
- resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d"
+ resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz"
integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==
dependencies:
at-least-node "^1.0.0"
@@ -3540,19 +4255,19 @@ fs-extra@^9.0.0:
fs-minipass@^2.0.0:
version "2.1.0"
- resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb"
+ resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz"
integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==
dependencies:
minipass "^3.0.0"
fs-monkey@1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.1.tgz#4a82f36944365e619f4454d9fff106553067b781"
+ resolved "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.1.tgz"
integrity sha512-fcSa+wyTqZa46iWweI7/ZiUfegOZl0SG8+dltIwFXo7+zYU9J9kpS3NB6pZcSlJdhvIwp81Adx2XhZorncxiaA==
fs-write-stream-atomic@^1.0.8:
version "1.0.10"
- resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9"
+ resolved "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz"
integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=
dependencies:
graceful-fs "^4.1.2"
@@ -3562,7 +4277,7 @@ fs-write-stream-atomic@^1.0.8:
fs.realpath@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+ resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
fsevents@^1.2.7:
@@ -3578,88 +4293,55 @@ fsevents@~2.3.1:
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
-fstream@^1.0.0, fstream@^1.0.12:
- version "1.0.12"
- resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045"
- integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==
- dependencies:
- graceful-fs "^4.1.2"
- inherits "~2.0.0"
- mkdirp ">=0.5 0"
- rimraf "2"
+fsevents@~2.3.2:
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
+ integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
function-bind@^1.1.1:
version "1.1.1"
- resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
+ resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz"
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
-gauge@~2.7.3:
- version "2.7.4"
- resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
- integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=
- dependencies:
- aproba "^1.0.3"
- console-control-strings "^1.0.0"
- has-unicode "^2.0.0"
- object-assign "^4.1.0"
- signal-exit "^3.0.0"
- string-width "^1.0.1"
- strip-ansi "^3.0.1"
- wide-align "^1.1.0"
+function-bind@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
+ integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
-gaze@^1.0.0:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a"
- integrity sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==
- dependencies:
- globule "^1.0.0"
-
-gensync@^1.0.0-beta.1:
+gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2:
version "1.0.0-beta.2"
- resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
+ resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz"
integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
get-caller-file@^2.0.1:
version "2.0.5"
- resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
+ resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz"
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
get-intrinsic@^1.0.2:
version "1.1.1"
- resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6"
+ resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz"
integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==
dependencies:
function-bind "^1.1.1"
has "^1.0.3"
has-symbols "^1.0.1"
-get-stdin@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
- integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=
-
get-stream@^4.0.0:
version "4.1.0"
- resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
+ resolved "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz"
integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
dependencies:
pump "^3.0.0"
get-value@^2.0.3, get-value@^2.0.6:
version "2.0.6"
- resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
+ resolved "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz"
integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
-getpass@^0.1.1:
- version "0.1.7"
- resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
- integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=
- dependencies:
- assert-plus "^1.0.0"
-
glob-parent@^3.1.0:
version "3.1.0"
- resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
+ resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz"
integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=
dependencies:
is-glob "^3.1.0"
@@ -3667,14 +4349,21 @@ glob-parent@^3.1.0:
glob-parent@~5.1.0:
version "5.1.1"
- resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229"
+ resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz"
integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==
dependencies:
is-glob "^4.0.1"
-glob@^7.0.0, glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@~7.1.1:
+glob-parent@~5.1.2:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
+ integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
+ dependencies:
+ is-glob "^4.0.1"
+
+glob@^7.0.3, glob@^7.1.3, glob@^7.1.4:
version "7.1.6"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
+ resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz"
integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
dependencies:
fs.realpath "^1.0.0"
@@ -3684,9 +4373,21 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, gl
once "^1.3.0"
path-is-absolute "^1.0.0"
+glob@^7.1.7:
+ version "7.2.3"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
+ integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.1.1"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
global-modules@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea"
+ resolved "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz"
integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==
dependencies:
global-prefix "^1.0.1"
@@ -3695,14 +4396,14 @@ global-modules@^1.0.0:
global-modules@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780"
+ resolved "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz"
integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==
dependencies:
global-prefix "^3.0.0"
global-prefix@^1.0.1:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe"
+ resolved "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz"
integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=
dependencies:
expand-tilde "^2.0.2"
@@ -3713,7 +4414,7 @@ global-prefix@^1.0.1:
global-prefix@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97"
+ resolved "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz"
integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==
dependencies:
ini "^1.3.5"
@@ -3722,12 +4423,12 @@ global-prefix@^3.0.0:
globals@^11.1.0:
version "11.12.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
+ resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz"
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
globby@^6.1.0:
version "6.1.0"
- resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c"
+ resolved "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz"
integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=
dependencies:
array-union "^1.0.1"
@@ -3736,68 +4437,34 @@ globby@^6.1.0:
pify "^2.0.0"
pinkie-promise "^2.0.0"
-globule@^1.0.0:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/globule/-/globule-1.3.2.tgz#d8bdd9e9e4eef8f96e245999a5dee7eb5d8529c4"
- integrity sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA==
- dependencies:
- glob "~7.1.1"
- lodash "~4.17.10"
- minimatch "~3.0.2"
-
graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0:
version "4.2.6"
- resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee"
+ resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz"
integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==
handle-thing@^2.0.0:
version "2.0.1"
- resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e"
+ resolved "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz"
integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==
-har-schema@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
- integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
-
-har-validator@~5.1.3:
- version "5.1.5"
- resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd"
- integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==
- dependencies:
- ajv "^6.12.3"
- har-schema "^2.0.0"
-
-has-ansi@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
- integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
- dependencies:
- ansi-regex "^2.0.0"
-
has-flag@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+ resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz"
integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
has-flag@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
+ resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz"
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
has-symbols@^1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
+ resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz"
integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==
-has-unicode@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
- integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
-
has-value@^0.3.1:
version "0.3.1"
- resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
+ resolved "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz"
integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=
dependencies:
get-value "^2.0.3"
@@ -3806,7 +4473,7 @@ has-value@^0.3.1:
has-value@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
+ resolved "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz"
integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=
dependencies:
get-value "^2.0.6"
@@ -3815,12 +4482,12 @@ has-value@^1.0.0:
has-values@^0.1.4:
version "0.1.4"
- resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
+ resolved "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz"
integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E=
has-values@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
+ resolved "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz"
integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=
dependencies:
is-number "^3.0.0"
@@ -3828,14 +4495,14 @@ has-values@^1.0.0:
has@^1.0.0, has@^1.0.3:
version "1.0.3"
- resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
+ resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz"
integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
dependencies:
function-bind "^1.1.1"
hash-base@^3.0.0:
version "3.1.0"
- resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33"
+ resolved "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz"
integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==
dependencies:
inherits "^2.0.4"
@@ -3844,20 +4511,27 @@ hash-base@^3.0.0:
hash.js@^1.0.0, hash.js@^1.0.3:
version "1.1.7"
- resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42"
+ resolved "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz"
integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==
dependencies:
inherits "^2.0.3"
minimalistic-assert "^1.0.1"
+hasown@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c"
+ integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==
+ dependencies:
+ function-bind "^1.1.2"
+
hex-color-regex@^1.1.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e"
+ resolved "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz"
integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==
hmac-drbg@^1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
+ resolved "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz"
integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=
dependencies:
hash.js "^1.0.3"
@@ -3866,19 +4540,14 @@ hmac-drbg@^1.0.1:
homedir-polyfill@^1.0.1:
version "1.0.3"
- resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8"
+ resolved "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz"
integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==
dependencies:
parse-passwd "^1.0.0"
-hosted-git-info@^2.1.4:
- version "2.8.8"
- resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488"
- integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==
-
hpack.js@^2.1.6:
version "2.1.6"
- resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2"
+ resolved "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz"
integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=
dependencies:
inherits "^2.0.1"
@@ -3888,32 +4557,37 @@ hpack.js@^2.1.6:
hsl-regex@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e"
+ resolved "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz"
integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=
hsla-regex@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38"
+ resolved "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz"
integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg=
html-comment-regex@^1.1.0:
version "1.1.2"
- resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7"
+ resolved "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz"
integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==
html-entities@^1.3.1:
version "1.4.0"
- resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc"
+ resolved "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz"
integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==
+htmx.org@^1.9.11:
+ version "1.9.11"
+ resolved "https://registry.yarnpkg.com/htmx.org/-/htmx.org-1.9.11.tgz#00192041ee682d6ca7146d0fbd901169ffe72d87"
+ integrity sha512-WlVuICn8dfNOOgYmdYzYG8zSnP3++AdHkMHooQAzGZObWpVXYathpz/I37ycF4zikR6YduzfCvEcxk20JkIUsw==
+
http-deceiver@^1.2.7:
version "1.2.7"
- resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87"
+ resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz"
integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=
http-errors@1.7.2:
version "1.7.2"
- resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f"
+ resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz"
integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==
dependencies:
depd "~1.1.2"
@@ -3924,7 +4598,7 @@ http-errors@1.7.2:
http-errors@~1.6.2:
version "1.6.3"
- resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
+ resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz"
integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=
dependencies:
depd "~1.1.2"
@@ -3934,7 +4608,7 @@ http-errors@~1.6.2:
http-errors@~1.7.2:
version "1.7.3"
- resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06"
+ resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz"
integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==
dependencies:
depd "~1.1.2"
@@ -3945,12 +4619,12 @@ http-errors@~1.7.2:
http-parser-js@>=0.5.1:
version "0.5.3"
- resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9"
+ resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz"
integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==
http-proxy-middleware@0.19.1:
version "0.19.1"
- resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a"
+ resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz"
integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==
dependencies:
http-proxy "^1.17.0"
@@ -3960,61 +4634,57 @@ http-proxy-middleware@0.19.1:
http-proxy@^1.17.0:
version "1.18.1"
- resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549"
+ resolved "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz"
integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==
dependencies:
eventemitter3 "^4.0.0"
follow-redirects "^1.0.0"
requires-port "^1.0.0"
-http-signature@~1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
- integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=
- dependencies:
- assert-plus "^1.0.0"
- jsprim "^1.2.2"
- sshpk "^1.7.0"
-
https-browserify@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
+ resolved "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz"
integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=
iconv-lite@0.4.24:
version "0.4.24"
- resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
+ resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz"
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
dependencies:
safer-buffer ">= 2.1.2 < 3"
icss-utils@^4.0.0, icss-utils@^4.1.1:
version "4.1.1"
- resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467"
+ resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz"
integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==
dependencies:
postcss "^7.0.14"
ieee754@^1.1.4:
version "1.2.1"
- resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
+ resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz"
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
iferr@^0.1.5:
version "0.1.5"
- resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501"
+ resolved "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz"
integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE=
+immutable@^4.0.0:
+ version "4.3.4"
+ resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.4.tgz#2e07b33837b4bb7662f288c244d1ced1ef65a78f"
+ integrity sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==
+
import-cwd@^2.0.0:
version "2.1.0"
- resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9"
+ resolved "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz"
integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=
dependencies:
import-from "^2.1.0"
import-fresh@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546"
+ resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz"
integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY=
dependencies:
caller-path "^2.0.0"
@@ -4022,7 +4692,7 @@ import-fresh@^2.0.0:
import-fresh@^3.1.0:
version "3.3.0"
- resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
+ resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz"
integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
dependencies:
parent-module "^1.0.0"
@@ -4030,14 +4700,14 @@ import-fresh@^3.1.0:
import-from@^2.1.0:
version "2.1.0"
- resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1"
+ resolved "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz"
integrity sha1-M1238qev/VOqpHHUuAId7ja387E=
dependencies:
resolve-from "^3.0.0"
import-local@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d"
+ resolved "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz"
integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==
dependencies:
pkg-dir "^3.0.0"
@@ -4045,62 +4715,50 @@ import-local@^2.0.0:
imurmurhash@^0.1.4:
version "0.1.4"
- resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
+ resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz"
integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
-in-publish@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.1.tgz#948b1a535c8030561cea522f73f78f4be357e00c"
- integrity sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==
-
-indent-string@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
- integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=
- dependencies:
- repeating "^2.0.0"
-
indent-string@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
+ resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz"
integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
indexes-of@^1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607"
+ resolved "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz"
integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc=
infer-owner@^1.0.3, infer-owner@^1.0.4:
version "1.0.4"
- resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467"
+ resolved "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz"
integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==
inflight@^1.0.4:
version "1.0.6"
- resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+ resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"
integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
dependencies:
once "^1.3.0"
wrappy "1"
-inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3:
+inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3:
version "2.0.4"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+ resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
inherits@2.0.1:
version "2.0.1"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
+ resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=
inherits@2.0.3:
version "2.0.3"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
+ resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz"
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
ini@^1.3.4, ini@^1.3.5:
version "1.3.8"
- resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
+ resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz"
integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
"input-map@git+https://0xacab.org/sutty/input-map.git":
@@ -4113,7 +4771,7 @@ ini@^1.3.4, ini@^1.3.5:
internal-ip@^4.3.0:
version "4.3.0"
- resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907"
+ resolved "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz"
integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==
dependencies:
default-gateway "^4.2.0"
@@ -4121,92 +4779,92 @@ internal-ip@^4.3.0:
interpret@^1.4.0:
version "1.4.0"
- resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e"
+ resolved "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz"
integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==
ip-regex@^2.1.0:
version "2.1.0"
- resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9"
+ resolved "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz"
integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=
ip@^1.1.0, ip@^1.1.5:
version "1.1.5"
- resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
+ resolved "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz"
integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=
ipaddr.js@1.9.1, ipaddr.js@^1.9.0:
version "1.9.1"
- resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
+ resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz"
integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
is-absolute-url@^2.0.0:
version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6"
+ resolved "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz"
integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=
is-absolute-url@^3.0.3:
version "3.0.3"
- resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698"
+ resolved "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz"
integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==
is-accessor-descriptor@^0.1.6:
version "0.1.6"
- resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
+ resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz"
integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=
dependencies:
kind-of "^3.0.2"
is-accessor-descriptor@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
+ resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz"
integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==
dependencies:
kind-of "^6.0.0"
is-arguments@^1.0.4:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9"
+ resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz"
integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==
dependencies:
call-bind "^1.0.0"
is-arrayish@^0.2.1:
version "0.2.1"
- resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+ resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz"
integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
is-arrayish@^0.3.1:
version "0.3.2"
- resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
+ resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz"
integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
is-binary-path@^1.0.0:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
+ resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz"
integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=
dependencies:
binary-extensions "^1.0.0"
is-binary-path@~2.1.0:
version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
+ resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz"
integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
dependencies:
binary-extensions "^2.0.0"
is-buffer@^1.1.5:
version "1.1.6"
- resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
+ resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz"
integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
is-callable@^1.1.4, is-callable@^1.2.2:
version "1.2.3"
- resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e"
+ resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz"
integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==
is-color-stop@^1.0.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345"
+ resolved "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz"
integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=
dependencies:
css-color-names "^0.0.4"
@@ -4216,35 +4874,42 @@ is-color-stop@^1.0.0:
rgb-regex "^1.0.1"
rgba-regex "^1.0.0"
+is-core-module@^2.13.0:
+ version "2.13.1"
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384"
+ integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==
+ dependencies:
+ hasown "^2.0.0"
+
is-core-module@^2.2.0:
version "2.2.0"
- resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a"
+ resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz"
integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==
dependencies:
has "^1.0.3"
is-data-descriptor@^0.1.4:
version "0.1.4"
- resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
+ resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz"
integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=
dependencies:
kind-of "^3.0.2"
is-data-descriptor@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
+ resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz"
integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==
dependencies:
kind-of "^6.0.0"
is-date-object@^1.0.1:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e"
+ resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz"
integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==
is-descriptor@^0.1.0:
version "0.1.6"
- resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
+ resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz"
integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==
dependencies:
is-accessor-descriptor "^0.1.6"
@@ -4253,7 +4918,7 @@ is-descriptor@^0.1.0:
is-descriptor@^1.0.0, is-descriptor@^1.0.2:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
+ resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz"
integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==
dependencies:
is-accessor-descriptor "^1.0.0"
@@ -4262,113 +4927,101 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2:
is-directory@^0.3.1:
version "0.3.1"
- resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1"
+ resolved "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz"
integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=
is-extendable@^0.1.0, is-extendable@^0.1.1:
version "0.1.1"
- resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+ resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz"
integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
is-extendable@^1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
+ resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz"
integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
dependencies:
is-plain-object "^2.0.4"
is-extglob@^2.1.0, is-extglob@^2.1.1:
version "2.1.1"
- resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+ resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz"
integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
-is-finite@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3"
- integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==
-
-is-fullwidth-code-point@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
- integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
- dependencies:
- number-is-nan "^1.0.0"
-
is-fullwidth-code-point@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
+ resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz"
integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
is-glob@^3.1.0:
version "3.1.0"
- resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
+ resolved "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz"
integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=
dependencies:
is-extglob "^2.1.0"
is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
version "4.0.1"
- resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
+ resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz"
integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
dependencies:
is-extglob "^2.1.1"
is-negative-zero@^2.0.1:
version "2.0.1"
- resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24"
+ resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz"
integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==
is-number@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
+ resolved "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz"
integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=
dependencies:
kind-of "^3.0.2"
is-number@^7.0.0:
version "7.0.0"
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
+ resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
is-obj@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982"
+ resolved "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz"
integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==
is-path-cwd@^2.0.0:
version "2.2.0"
- resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb"
+ resolved "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz"
integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==
is-path-in-cwd@^2.0.0:
version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb"
+ resolved "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz"
integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==
dependencies:
is-path-inside "^2.1.0"
is-path-inside@^2.1.0:
version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2"
+ resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz"
integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==
dependencies:
path-is-inside "^1.0.2"
is-plain-obj@^1.0.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
+ resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz"
integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4=
is-plain-object@^2.0.3, is-plain-object@^2.0.4:
version "2.0.4"
- resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
+ resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz"
integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
dependencies:
isobject "^3.0.1"
is-regex@^1.0.4, is-regex@^1.1.1:
version "1.1.2"
- resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251"
+ resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz"
integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==
dependencies:
call-bind "^1.0.2"
@@ -4376,212 +5029,177 @@ is-regex@^1.0.4, is-regex@^1.1.1:
is-resolvable@^1.0.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88"
+ resolved "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz"
integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==
is-stream@^1.1.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
+ resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz"
integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
is-svg@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75"
+ resolved "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz"
integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==
dependencies:
html-comment-regex "^1.1.0"
is-symbol@^1.0.2:
version "1.0.3"
- resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937"
+ resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz"
integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==
dependencies:
has-symbols "^1.0.1"
-is-typedarray@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
- integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
-
-is-utf8@^0.2.0:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
- integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
-
is-windows@^1.0.1, is-windows@^1.0.2:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
+ resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz"
integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
is-wsl@^1.1.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
+ resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz"
integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=
isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
+ resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
isexe@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
+ resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
isobject@^2.0.0:
version "2.1.0"
- resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
+ resolved "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz"
integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
dependencies:
isarray "1.0.0"
isobject@^3.0.0, isobject@^3.0.1:
version "3.0.1"
- resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
+ resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz"
integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
-isstream@~0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
- integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
-
jest-worker@^26.5.0:
version "26.6.2"
- resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed"
+ resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz"
integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==
dependencies:
"@types/node" "*"
merge-stream "^2.0.0"
supports-color "^7.0.0"
-js-base64@^2.1.8:
- version "2.6.4"
- resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.6.4.tgz#f4e686c5de1ea1f867dbcad3d46d969428df98c4"
- integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==
-
js-tokens@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
+ resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz"
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
-js-yaml@^3.13.1, js-yaml@^3.14.0:
+js-yaml@^3.13.1, js-yaml@^3.14.1:
version "3.14.1"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
+ resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz"
integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
dependencies:
argparse "^1.0.7"
esprima "^4.0.0"
-jsbn@~0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
- integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
-
jsesc@^2.5.1:
version "2.5.2"
- resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
+ resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz"
integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
jsesc@~0.5.0:
version "0.5.0"
- resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
+ resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz"
integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
+ resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz"
integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
json-parse-even-better-errors@^2.3.0:
version "2.3.1"
- resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
+ resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz"
integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
json-schema-traverse@^0.4.1:
version "0.4.1"
- resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
+ resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz"
integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
-json-schema@0.2.3:
- version "0.2.3"
- resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
- integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
-
-json-stringify-safe@~5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
- integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
-
json3@^3.3.3:
version "3.3.3"
- resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81"
+ resolved "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz"
integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==
json5@^1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
+ resolved "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz"
integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
dependencies:
minimist "^1.2.0"
json5@^2.1.2:
version "2.2.0"
- resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3"
+ resolved "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz"
integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==
dependencies:
minimist "^1.2.5"
+json5@^2.2.3:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
+ integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
+
jsonfile@^6.0.1:
version "6.1.0"
- resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
+ resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz"
integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==
dependencies:
universalify "^2.0.0"
optionalDependencies:
graceful-fs "^4.1.6"
-jsprim@^1.2.2:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
- integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=
- dependencies:
- assert-plus "1.0.0"
- extsprintf "1.3.0"
- json-schema "0.2.3"
- verror "1.10.0"
-
killable@^1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892"
+ resolved "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz"
integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==
kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
version "3.2.2"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
+ resolved "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz"
integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=
dependencies:
is-buffer "^1.1.5"
kind-of@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
+ resolved "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz"
integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc=
dependencies:
is-buffer "^1.1.5"
kind-of@^5.0.0:
version "5.1.0"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
+ resolved "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz"
integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
kind-of@^6.0.0, kind-of@^6.0.2:
version "6.0.3"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
+ resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz"
integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
+klona@^2.0.4:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.6.tgz#85bffbf819c03b2f53270412420a4555ef882e22"
+ integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==
+
last-call-webpack-plugin@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555"
+ resolved "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz"
integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==
dependencies:
lodash "^4.17.5"
@@ -4589,40 +5207,34 @@ last-call-webpack-plugin@^3.0.0:
leaflet@^1.7.1:
version "1.7.1"
- resolved "https://registry.yarnpkg.com/leaflet/-/leaflet-1.7.1.tgz#10d684916edfe1bf41d688a3b97127c0322a2a19"
+ resolved "https://registry.npmjs.org/leaflet/-/leaflet-1.7.1.tgz"
integrity sha512-/xwPEBidtg69Q3HlqPdU3DnrXQOvQU/CCHA1tcDQVzOwm91YMYaILjNp7L4Eaw5Z4sOYdbBz6koWyibppd8Zqw==
lines-and-columns@^1.1.6:
version "1.1.6"
- resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
+ resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz"
integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=
linkify-it@^2.0.0:
version "2.2.0"
- resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.2.0.tgz#e3b54697e78bf915c70a38acd78fd09e0058b1cf"
+ resolved "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz"
integrity sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==
dependencies:
uc.micro "^1.0.1"
-load-json-file@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
- integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=
- dependencies:
- graceful-fs "^4.1.2"
- parse-json "^2.2.0"
- pify "^2.0.0"
- pinkie-promise "^2.0.0"
- strip-bom "^2.0.0"
+linkifyjs@^4.1.1:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/linkifyjs/-/linkifyjs-4.1.3.tgz#0edbc346428a7390a23ea2e5939f76112c9ae07f"
+ integrity sha512-auMesunaJ8yfkHvK4gfg1K0SaKX/6Wn9g2Aac/NwX+l5VdmFZzo/hdPGxEOETj+ryRa4/fiOPjeeKURSAJx1sg==
loader-runner@^2.4.0:
version "2.4.0"
- resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357"
+ resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz"
integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==
loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0:
version "1.4.0"
- resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613"
+ resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz"
integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==
dependencies:
big.js "^5.2.2"
@@ -4631,7 +5243,7 @@ loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0:
loader-utils@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0"
+ resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz"
integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==
dependencies:
big.js "^5.2.2"
@@ -4640,7 +5252,7 @@ loader-utils@^2.0.0:
locate-path@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
+ resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz"
integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
dependencies:
p-locate "^3.0.0"
@@ -4648,34 +5260,39 @@ locate-path@^3.0.0:
locate-path@^5.0.0:
version "5.0.0"
- resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
+ resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz"
integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
dependencies:
p-locate "^4.1.0"
lodash._reinterpolate@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
+ resolved "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz"
integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=
+lodash.debounce@^4.0.8:
+ version "4.0.8"
+ resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
+ integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==
+
lodash.get@^4.0:
version "4.4.2"
- resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
+ resolved "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz"
integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=
lodash.has@^4.0:
version "4.5.2"
- resolved "https://registry.yarnpkg.com/lodash.has/-/lodash.has-4.5.2.tgz#d19f4dc1095058cccbe2b0cdf4ee0fe4aa37c862"
+ resolved "https://registry.npmjs.org/lodash.has/-/lodash.has-4.5.2.tgz"
integrity sha1-0Z9NwQlQWMzL4rDN9O4P5Ko3yGI=
lodash.memoize@^4.1.2:
version "4.1.2"
- resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
+ resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz"
integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=
lodash.template@^4.5.0:
version "4.5.0"
- resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab"
+ resolved "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz"
integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==
dependencies:
lodash._reinterpolate "^3.0.0"
@@ -4683,64 +5300,48 @@ lodash.template@^4.5.0:
lodash.templatesettings@^4.0.0:
version "4.2.0"
- resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33"
+ resolved "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz"
integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==
dependencies:
lodash._reinterpolate "^3.0.0"
lodash.uniq@^4.5.0:
version "4.5.0"
- resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
+ resolved "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz"
integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
-lodash@^4.0.0, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.5, lodash@~4.17.10:
- version "4.17.20"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
- integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
-
lodash@^4.17.11, lodash@^4.17.14:
version "4.17.21"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
+ resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
+lodash@^4.17.19, lodash@^4.17.5:
+ version "4.17.20"
+ resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz"
+ integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
+
loglevel@^1.6.8:
version "1.7.1"
- resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197"
+ resolved "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz"
integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==
-loud-rejection@^1.0.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
- integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=
- dependencies:
- currently-unhandled "^0.4.1"
- signal-exit "^3.0.0"
-
-lru-cache@^4.0.1:
- version "4.1.5"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
- integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
- dependencies:
- pseudomap "^1.0.2"
- yallist "^2.1.2"
-
lru-cache@^5.1.1:
version "5.1.1"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
+ resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz"
integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
dependencies:
yallist "^3.0.2"
lru-cache@^6.0.0:
version "6.0.0"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
+ resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz"
integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
dependencies:
yallist "^4.0.0"
make-dir@^2.0.0:
version "2.1.0"
- resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
+ resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz"
integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
dependencies:
pify "^4.0.1"
@@ -4748,31 +5349,26 @@ make-dir@^2.0.0:
make-dir@^3.0.2, make-dir@^3.1.0:
version "3.1.0"
- resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
+ resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz"
integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
dependencies:
semver "^6.0.0"
map-cache@^0.2.2:
version "0.2.2"
- resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
+ resolved "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz"
integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=
-map-obj@^1.0.0, map-obj@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
- integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=
-
map-visit@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
+ resolved "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz"
integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=
dependencies:
object-visit "^1.0.0"
markdown-it@^10.0.0:
version "10.0.0"
- resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-10.0.0.tgz#abfc64f141b1722d663402044e43927f1f50a8dc"
+ resolved "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz"
integrity sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==
dependencies:
argparse "^1.0.7"
@@ -4783,7 +5379,7 @@ markdown-it@^10.0.0:
md5.js@^1.3.4:
version "1.3.5"
- resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
+ resolved "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz"
integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==
dependencies:
hash-base "^3.0.0"
@@ -4792,34 +5388,34 @@ md5.js@^1.3.4:
mdn-data@2.0.14:
version "2.0.14"
- resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50"
+ resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz"
integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==
mdn-data@2.0.4:
version "2.0.4"
- resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b"
+ resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz"
integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==
mdurl@^1.0.1, mdurl@~1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e"
+ resolved "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz"
integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=
media-typer@0.3.0:
version "0.3.0"
- resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
+ resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz"
integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
memfs@^3.1.2:
version "3.2.0"
- resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.2.0.tgz#f9438e622b5acd1daa8a4ae160c496fdd1325b26"
+ resolved "https://registry.npmjs.org/memfs/-/memfs-3.2.0.tgz"
integrity sha512-f/xxz2TpdKv6uDn6GtHee8ivFyxwxmPuXatBb1FBwxYNuVpbM3k/Y1Z+vC0mH/dIXXrukYfe3qe5J32Dfjg93A==
dependencies:
fs-monkey "1.0.1"
memory-fs@^0.4.1:
version "0.4.1"
- resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
+ resolved "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz"
integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=
dependencies:
errno "^0.1.3"
@@ -4827,46 +5423,30 @@ memory-fs@^0.4.1:
memory-fs@^0.5.0:
version "0.5.0"
- resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c"
+ resolved "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz"
integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==
dependencies:
errno "^0.1.3"
readable-stream "^2.0.1"
-meow@^3.7.0:
- version "3.7.0"
- resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
- integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=
- dependencies:
- camelcase-keys "^2.0.0"
- decamelize "^1.1.2"
- loud-rejection "^1.0.0"
- map-obj "^1.0.1"
- minimist "^1.1.3"
- normalize-package-data "^2.3.4"
- object-assign "^4.0.1"
- read-pkg-up "^1.0.1"
- redent "^1.0.0"
- trim-newlines "^1.0.0"
-
merge-descriptors@1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
+ resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz"
integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=
merge-stream@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
+ resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz"
integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
methods@~1.1.2:
version "1.1.2"
- resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
+ resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz"
integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4:
version "3.1.10"
- resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
+ resolved "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz"
integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
dependencies:
arr-diff "^4.0.0"
@@ -4885,7 +5465,7 @@ micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4:
miller-rabin@^4.0.0:
version "4.0.1"
- resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
+ resolved "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz"
integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==
dependencies:
bn.js "^4.0.0"
@@ -4893,41 +5473,41 @@ miller-rabin@^4.0.0:
mime-db@1.45.0:
version "1.45.0"
- resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea"
+ resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.45.0.tgz"
integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==
mime-db@1.46.0, "mime-db@>= 1.43.0 < 2":
version "1.46.0"
- resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.46.0.tgz#6267748a7f799594de3cbc8cde91def349661cee"
+ resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz"
integrity sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==
-mime-types@^2.1.12, mime-types@~2.1.19:
+mime-types@^2.1.12:
version "2.1.28"
- resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.28.tgz#1160c4757eab2c5363888e005273ecf79d2a0ecd"
+ resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.28.tgz"
integrity sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==
dependencies:
mime-db "1.45.0"
mime-types@~2.1.17, mime-types@~2.1.24:
version "2.1.29"
- resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.29.tgz#1d4ab77da64b91f5f72489df29236563754bb1b2"
+ resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz"
integrity sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==
dependencies:
mime-db "1.46.0"
mime@1.6.0:
version "1.6.0"
- resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
+ resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz"
integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
mime@^2.4.4:
version "2.5.2"
- resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe"
+ resolved "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz"
integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==
mini-css-extract-plugin@^0.9.0:
version "0.9.0"
- resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz#47f2cf07aa165ab35733b1fc97d4c46c0564339e"
+ resolved "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz"
integrity sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==
dependencies:
loader-utils "^1.1.0"
@@ -4937,57 +5517,64 @@ mini-css-extract-plugin@^0.9.0:
minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
+ resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz"
integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
minimalistic-crypto-utils@^1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
+ resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz"
integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
-minimatch@^3.0.4, minimatch@~3.0.2:
+minimatch@^3.0.4:
version "3.0.4"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
+ resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz"
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
dependencies:
brace-expansion "^1.1.7"
-minimist@>=1.2.2, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5:
+minimatch@^3.1.1:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
+ integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+minimist@>=1.2.2, minimist@^1.2.0, minimist@^1.2.5:
version "1.2.5"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
+ resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz"
integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
minipass-collect@^1.0.2:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617"
+ resolved "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz"
integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==
dependencies:
minipass "^3.0.0"
minipass-flush@^1.0.5:
version "1.0.5"
- resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373"
+ resolved "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz"
integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==
dependencies:
minipass "^3.0.0"
minipass-pipeline@^1.2.2:
version "1.2.4"
- resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c"
+ resolved "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz"
integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==
dependencies:
minipass "^3.0.0"
minipass@^3.0.0, minipass@^3.1.1:
version "3.1.3"
- resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd"
+ resolved "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz"
integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==
dependencies:
yallist "^4.0.0"
minizlib@^2.1.1:
version "2.1.2"
- resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931"
+ resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz"
integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==
dependencies:
minipass "^3.0.0"
@@ -4995,7 +5582,7 @@ minizlib@^2.1.1:
mississippi@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022"
+ resolved "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz"
integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==
dependencies:
concat-stream "^1.5.0"
@@ -5011,32 +5598,27 @@ mississippi@^3.0.0:
mixin-deep@^1.2.0:
version "1.3.2"
- resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
+ resolved "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz"
integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==
dependencies:
for-in "^1.0.2"
is-extendable "^1.0.1"
-"mkdirp@>=0.5 0", mkdirp@^0.5, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1:
+mkdirp@^0.5, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1:
version "0.5.5"
- resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
+ resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz"
integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
dependencies:
minimist "^1.2.5"
mkdirp@^1.0.3, mkdirp@^1.0.4:
version "1.0.4"
- resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
+ resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
-moment@^2.10.2:
- version "2.29.1"
- resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3"
- integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==
-
move-concurrently@^1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92"
+ resolved "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz"
integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=
dependencies:
aproba "^1.1.1"
@@ -5048,45 +5630,45 @@ move-concurrently@^1.0.1:
ms@2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
+ resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz"
integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
ms@2.1.1:
version "2.1.1"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
+ resolved "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz"
integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
ms@2.1.2:
version "2.1.2"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
+ resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
ms@^2.1.1:
version "2.1.3"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
+ resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz"
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
multicast-dns-service-types@^1.1.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901"
+ resolved "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz"
integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=
multicast-dns@^6.0.1:
version "6.2.3"
- resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229"
+ resolved "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz"
integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==
dependencies:
dns-packet "^1.3.1"
thunky "^1.0.2"
-nan@^2.12.1, nan@^2.13.2:
- version "2.14.2"
- resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19"
- integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==
+nan@^2.12.1:
+ version "2.17.0"
+ resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb"
+ integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==
nanomatch@^1.2.9:
version "1.2.13"
- resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
+ resolved "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz"
integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==
dependencies:
arr-diff "^4.0.0"
@@ -5103,50 +5685,32 @@ nanomatch@^1.2.9:
negotiator@0.6.2:
version "0.6.2"
- resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
+ resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz"
integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
-neo-async@^2.5.0, neo-async@^2.6.1:
+neo-async@^2.5.0, neo-async@^2.6.1, neo-async@^2.6.2:
version "2.6.2"
- resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
+ resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz"
integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
nice-try@^1.0.4:
version "1.0.5"
- resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
+ resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz"
integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
node-fetch@2.6.1:
version "2.6.1"
- resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052"
+ resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz"
integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==
node-forge@^0.10.0:
version "0.10.0"
- resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3"
+ resolved "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz"
integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==
-node-gyp@^3.8.0:
- version "3.8.0"
- resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c"
- integrity sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==
- dependencies:
- fstream "^1.0.0"
- glob "^7.0.3"
- graceful-fs "^4.1.2"
- mkdirp "^0.5.0"
- nopt "2 || 3"
- npmlog "0 || 1 || 2 || 3 || 4"
- osenv "0"
- request "^2.87.0"
- rimraf "2"
- semver "~5.3.0"
- tar "^2.0.0"
- which "1"
-
node-libs-browser@^2.2.1:
version "2.2.1"
- resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425"
+ resolved "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz"
integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==
dependencies:
assert "^1.1.1"
@@ -5175,69 +5739,34 @@ node-libs-browser@^2.2.1:
node-releases@^1.1.70:
version "1.1.70"
- resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.70.tgz#66e0ed0273aa65666d7fe78febe7634875426a08"
+ resolved "https://registry.npmjs.org/node-releases/-/node-releases-1.1.70.tgz"
integrity sha512-Slf2s69+2/uAD79pVVQo8uSiC34+g8GWY8UH2Qtqv34ZfhYrxpYpfzs9Js9d6O0mbDmALuxaTlplnBTnSELcrw==
-node-sass@^4.14.1:
- version "4.14.1"
- resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.14.1.tgz#99c87ec2efb7047ed638fb4c9db7f3a42e2217b5"
- integrity sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==
- dependencies:
- async-foreach "^0.1.3"
- chalk "^1.1.1"
- cross-spawn "^3.0.0"
- gaze "^1.0.0"
- get-stdin "^4.0.1"
- glob "^7.0.3"
- in-publish "^2.0.0"
- lodash "^4.17.15"
- meow "^3.7.0"
- mkdirp "^0.5.1"
- nan "^2.13.2"
- node-gyp "^3.8.0"
- npmlog "^4.0.0"
- request "^2.88.0"
- sass-graph "2.2.5"
- stdout-stream "^1.4.0"
- "true-case-path" "^1.0.2"
-
-"nopt@2 || 3":
- version "3.0.6"
- resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
- integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k=
- dependencies:
- abbrev "1"
-
-normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
- integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
- dependencies:
- hosted-git-info "^2.1.4"
- resolve "^1.10.0"
- semver "2 || 3 || 4 || 5"
- validate-npm-package-license "^3.0.1"
+node-releases@^2.0.14:
+ version "2.0.14"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b"
+ integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==
normalize-path@^2.1.1:
version "2.1.1"
- resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
+ resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz"
integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=
dependencies:
remove-trailing-separator "^1.0.1"
normalize-path@^3.0.0, normalize-path@~3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
+ resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz"
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
normalize-range@^0.1.2:
version "0.1.2"
- resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
+ resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz"
integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=
normalize-url@1.9.1:
version "1.9.1"
- resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c"
+ resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz"
integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=
dependencies:
object-assign "^4.0.1"
@@ -5247,56 +5776,36 @@ normalize-url@1.9.1:
normalize-url@^3.0.0:
version "3.3.0"
- resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559"
+ resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz"
integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==
npm-run-path@^2.0.0:
version "2.0.2"
- resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
+ resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz"
integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=
dependencies:
path-key "^2.0.0"
-"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
- integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
- dependencies:
- are-we-there-yet "~1.1.2"
- console-control-strings "~1.1.0"
- gauge "~2.7.3"
- set-blocking "~2.0.0"
-
nth-check@^1.0.2:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c"
+ resolved "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz"
integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==
dependencies:
boolbase "~1.0.0"
num2fraction@^1.2.2:
version "1.2.2"
- resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede"
+ resolved "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz"
integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=
-number-is-nan@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
- integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
-
-oauth-sign@~0.9.0:
- version "0.9.0"
- resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
- integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
-
object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
version "4.1.1"
- resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+ resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz"
integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
object-copy@^0.1.0:
version "0.1.0"
- resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
+ resolved "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz"
integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw=
dependencies:
copy-descriptor "^0.1.0"
@@ -5305,12 +5814,12 @@ object-copy@^0.1.0:
object-inspect@^1.8.0, object-inspect@^1.9.0:
version "1.9.0"
- resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a"
+ resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz"
integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==
object-is@^1.0.1:
version "1.1.5"
- resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac"
+ resolved "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz"
integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==
dependencies:
call-bind "^1.0.2"
@@ -5318,19 +5827,19 @@ object-is@^1.0.1:
object-keys@^1.0.12, object-keys@^1.1.1:
version "1.1.1"
- resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
+ resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz"
integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
object-visit@^1.0.0:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
+ resolved "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz"
integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=
dependencies:
isobject "^3.0.0"
object.assign@^4.1.0, object.assign@^4.1.1, object.assign@^4.1.2:
version "4.1.2"
- resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940"
+ resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz"
integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==
dependencies:
call-bind "^1.0.0"
@@ -5340,7 +5849,7 @@ object.assign@^4.1.0, object.assign@^4.1.1, object.assign@^4.1.2:
object.getownpropertydescriptors@^2.1.0:
version "2.1.1"
- resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz#0dfda8d108074d9c563e80490c883b6661091544"
+ resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz"
integrity sha512-6DtXgZ/lIZ9hqx4GtZETobXLR/ZLaa0aqV0kzbn80Rf8Z2e/XFnhA0I7p07N2wH8bBBltr2xQPi6sbKWAY2Eng==
dependencies:
call-bind "^1.0.0"
@@ -5349,14 +5858,14 @@ object.getownpropertydescriptors@^2.1.0:
object.pick@^1.3.0:
version "1.3.0"
- resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
+ resolved "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz"
integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=
dependencies:
isobject "^3.0.1"
object.values@^1.1.0:
version "1.1.2"
- resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.2.tgz#7a2015e06fcb0f546bd652486ce8583a4731c731"
+ resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.2.tgz"
integrity sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag==
dependencies:
call-bind "^1.0.0"
@@ -5366,143 +5875,130 @@ object.values@^1.1.0:
obuf@^1.0.0, obuf@^1.1.2:
version "1.1.2"
- resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
+ resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz"
integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==
on-finished@~2.3.0:
version "2.3.0"
- resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
+ resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz"
integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
dependencies:
ee-first "1.1.1"
on-headers@~1.0.2:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f"
+ resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz"
integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==
once@^1.3.0, once@^1.3.1, once@^1.4.0:
version "1.4.0"
- resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
+ resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz"
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
dependencies:
wrappy "1"
opn@^5.5.0:
version "5.5.0"
- resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc"
+ resolved "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz"
integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==
dependencies:
is-wsl "^1.1.0"
-optimize-css-assets-webpack-plugin@^5.0.3:
- version "5.0.4"
- resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.4.tgz#85883c6528aaa02e30bbad9908c92926bb52dc90"
- integrity sha512-wqd6FdI2a5/FdoiCNNkEvLeA//lHHfG24Ln2Xm2qqdIk4aOlsR18jwpyOihqQ8849W3qu2DX8fOYxpvTMj+93A==
+optimize-css-assets-webpack-plugin@^5.0.8:
+ version "5.0.8"
+ resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.8.tgz#cbccdcf5a6ef61d4f8cc78cf083a67446e5f402a"
+ integrity sha512-mgFS1JdOtEGzD8l+EuISqL57cKO+We9GcoiQEmdCWRqqck+FGNmYJtx9qfAPzEz+lRrlThWMuGDaRkI/yWNx/Q==
dependencies:
cssnano "^4.1.10"
last-call-webpack-plugin "^3.0.0"
orderedmap@^1.1.0:
version "1.1.1"
- resolved "https://registry.yarnpkg.com/orderedmap/-/orderedmap-1.1.1.tgz#c618e77611b3b21d0fe3edc92586265e0059c789"
+ resolved "https://registry.npmjs.org/orderedmap/-/orderedmap-1.1.1.tgz"
integrity sha512-3Ux8um0zXbVacKUkcytc0u3HgC0b0bBLT+I60r2J/En72cI0nZffqrA7Xtf2Hqs27j1g82llR5Mhbd0Z1XW4AQ==
+orderedmap@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/orderedmap/-/orderedmap-2.1.1.tgz#61481269c44031c449915497bf5a4ad273c512d2"
+ integrity sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==
+
original@^1.0.0:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f"
+ resolved "https://registry.npmjs.org/original/-/original-1.0.2.tgz"
integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==
dependencies:
url-parse "^1.4.3"
os-browserify@^0.3.0:
version "0.3.0"
- resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
+ resolved "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz"
integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=
-os-homedir@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
- integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
-
-os-tmpdir@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
- integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
-
-osenv@0:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
- integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==
- dependencies:
- os-homedir "^1.0.0"
- os-tmpdir "^1.0.0"
-
p-finally@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
+ resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz"
integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
p-limit@^2.0.0, p-limit@^2.2.0:
version "2.3.0"
- resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
+ resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz"
integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
dependencies:
p-try "^2.0.0"
p-limit@^3.0.2:
version "3.1.0"
- resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
+ resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz"
integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
dependencies:
yocto-queue "^0.1.0"
p-locate@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
+ resolved "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz"
integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
dependencies:
p-limit "^2.0.0"
p-locate@^4.1.0:
version "4.1.0"
- resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
+ resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz"
integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
dependencies:
p-limit "^2.2.0"
p-map@^2.0.0:
version "2.1.0"
- resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175"
+ resolved "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz"
integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==
p-map@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b"
+ resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz"
integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==
dependencies:
aggregate-error "^3.0.0"
p-retry@^3.0.1:
version "3.0.1"
- resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328"
+ resolved "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz"
integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==
dependencies:
retry "^0.12.0"
p-try@^2.0.0:
version "2.2.0"
- resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
+ resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz"
integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
pako@~1.0.5:
version "1.0.11"
- resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
+ resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz"
integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
parallel-transform@^1.1.0:
version "1.2.0"
- resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc"
+ resolved "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz"
integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==
dependencies:
cyclist "^1.0.1"
@@ -5511,14 +6007,14 @@ parallel-transform@^1.1.0:
parent-module@^1.0.0:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
+ resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz"
integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
dependencies:
callsites "^3.0.0"
parse-asn1@^5.0.0, parse-asn1@^5.1.5:
version "5.1.6"
- resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4"
+ resolved "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz"
integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==
dependencies:
asn1.js "^5.2.0"
@@ -5527,16 +6023,9 @@ parse-asn1@^5.0.0, parse-asn1@^5.1.5:
pbkdf2 "^3.0.3"
safe-buffer "^5.1.1"
-parse-json@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
- integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
- dependencies:
- error-ex "^1.2.0"
-
parse-json@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
+ resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz"
integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=
dependencies:
error-ex "^1.3.1"
@@ -5544,7 +6033,7 @@ parse-json@^4.0.0:
parse-json@^5.0.0:
version "5.2.0"
- resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
+ resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz"
integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
dependencies:
"@babel/code-frame" "^7.0.0"
@@ -5554,93 +6043,82 @@ parse-json@^5.0.0:
parse-passwd@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
+ resolved "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz"
integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=
parseurl@~1.3.2, parseurl@~1.3.3:
version "1.3.3"
- resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
+ resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz"
integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
pascalcase@^0.1.1:
version "0.1.1"
- resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
+ resolved "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz"
integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
path-browserify@0.0.1:
version "0.0.1"
- resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a"
+ resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz"
integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==
path-complete-extname@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/path-complete-extname/-/path-complete-extname-1.0.0.tgz#f889985dc91000c815515c0bfed06c5acda0752b"
+ resolved "https://registry.npmjs.org/path-complete-extname/-/path-complete-extname-1.0.0.tgz"
integrity sha512-CVjiWcMRdGU8ubs08YQVzhutOR5DEfO97ipRIlOGMK5Bek5nQySknBpuxVAVJ36hseTNs+vdIcv57ZrWxH7zvg==
path-dirname@^1.0.0:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
+ resolved "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz"
integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=
-path-exists@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
- integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=
- dependencies:
- pinkie-promise "^2.0.0"
-
path-exists@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
+ resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz"
integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
path-exists@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
+ resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz"
integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
path-is-absolute@^1.0.0:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+ resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
path-is-inside@^1.0.2:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
+ resolved "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz"
integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=
path-key@^2.0.0, path-key@^2.0.1:
version "2.0.1"
- resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
+ resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz"
integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
path-parse@^1.0.6:
version "1.0.6"
- resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
+ resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz"
integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
+path-parse@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
+ integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
+
path-to-regexp@0.1.7:
version "0.1.7"
- resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
+ resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz"
integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=
-path-type@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
- integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=
- dependencies:
- graceful-fs "^4.1.2"
- pify "^2.0.0"
- pinkie-promise "^2.0.0"
-
path-type@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
+ resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz"
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
pbkdf2@^3.0.3:
version "3.1.1"
- resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94"
+ resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz"
integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==
dependencies:
create-hash "^1.1.2"
@@ -5649,62 +6127,62 @@ pbkdf2@^3.0.3:
safe-buffer "^5.0.1"
sha.js "^2.4.8"
-performance-now@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
- integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
+picocolors@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
+ integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
picomatch@^2.0.4, picomatch@^2.2.1:
version "2.2.2"
- resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
+ resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz"
integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
pify@^2.0.0, pify@^2.3.0:
version "2.3.0"
- resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
+ resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz"
integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
pify@^4.0.1:
version "4.0.1"
- resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
+ resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz"
integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
pinkie-promise@^2.0.0:
version "2.0.1"
- resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
+ resolved "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz"
integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o=
dependencies:
pinkie "^2.0.0"
pinkie@^2.0.0:
version "2.0.4"
- resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
+ resolved "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz"
integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
pkg-dir@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3"
+ resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz"
integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==
dependencies:
find-up "^3.0.0"
pkg-dir@^4.1.0:
version "4.2.0"
- resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
+ resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz"
integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
dependencies:
find-up "^4.0.0"
-pnp-webpack-plugin@^1.6.4:
- version "1.6.4"
- resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149"
- integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==
+pnp-webpack-plugin@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.7.0.tgz#65741384f6d8056f36e2255a8d67ffc20866f5c9"
+ integrity sha512-2Rb3vm+EXble/sMXNSu6eoBx8e79gKqhNq9F5ZWW6ERNCTE/Q0wQNne5541tE5vKjfM8hpNCYL+LGc1YTfI0dg==
dependencies:
ts-pnp "^1.1.6"
portfinder@^1.0.26:
version "1.0.28"
- resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778"
+ resolved "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz"
integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==
dependencies:
async "^2.6.2"
@@ -5713,12 +6191,12 @@ portfinder@^1.0.26:
posix-character-classes@^0.1.0:
version "0.1.1"
- resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
+ resolved "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz"
integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
postcss-attribute-case-insensitive@^4.0.1:
version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880"
+ resolved "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz"
integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==
dependencies:
postcss "^7.0.2"
@@ -5726,7 +6204,7 @@ postcss-attribute-case-insensitive@^4.0.1:
postcss-calc@^7.0.1:
version "7.0.5"
- resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.5.tgz#f8a6e99f12e619c2ebc23cf6c486fdc15860933e"
+ resolved "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz"
integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==
dependencies:
postcss "^7.0.27"
@@ -5735,7 +6213,7 @@ postcss-calc@^7.0.1:
postcss-color-functional-notation@^2.0.1:
version "2.0.1"
- resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0"
+ resolved "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz"
integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==
dependencies:
postcss "^7.0.2"
@@ -5743,7 +6221,7 @@ postcss-color-functional-notation@^2.0.1:
postcss-color-gray@^5.0.0:
version "5.0.0"
- resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz#532a31eb909f8da898ceffe296fdc1f864be8547"
+ resolved "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz"
integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==
dependencies:
"@csstools/convert-colors" "^1.4.0"
@@ -5752,7 +6230,7 @@ postcss-color-gray@^5.0.0:
postcss-color-hex-alpha@^5.0.3:
version "5.0.3"
- resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388"
+ resolved "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz"
integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==
dependencies:
postcss "^7.0.14"
@@ -5760,7 +6238,7 @@ postcss-color-hex-alpha@^5.0.3:
postcss-color-mod-function@^3.0.3:
version "3.0.3"
- resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d"
+ resolved "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz"
integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==
dependencies:
"@csstools/convert-colors" "^1.4.0"
@@ -5769,7 +6247,7 @@ postcss-color-mod-function@^3.0.3:
postcss-color-rebeccapurple@^4.0.1:
version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77"
+ resolved "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz"
integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==
dependencies:
postcss "^7.0.2"
@@ -5777,7 +6255,7 @@ postcss-color-rebeccapurple@^4.0.1:
postcss-colormin@^4.0.3:
version "4.0.3"
- resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381"
+ resolved "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz"
integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==
dependencies:
browserslist "^4.0.0"
@@ -5788,7 +6266,7 @@ postcss-colormin@^4.0.3:
postcss-convert-values@^4.0.1:
version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f"
+ resolved "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz"
integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==
dependencies:
postcss "^7.0.0"
@@ -5796,14 +6274,14 @@ postcss-convert-values@^4.0.1:
postcss-custom-media@^7.0.8:
version "7.0.8"
- resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c"
+ resolved "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz"
integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==
dependencies:
postcss "^7.0.14"
postcss-custom-properties@^8.0.11:
version "8.0.11"
- resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97"
+ resolved "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz"
integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==
dependencies:
postcss "^7.0.17"
@@ -5811,7 +6289,7 @@ postcss-custom-properties@^8.0.11:
postcss-custom-selectors@^5.1.2:
version "5.1.2"
- resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba"
+ resolved "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz"
integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==
dependencies:
postcss "^7.0.2"
@@ -5819,7 +6297,7 @@ postcss-custom-selectors@^5.1.2:
postcss-dir-pseudo-class@^5.0.0:
version "5.0.0"
- resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2"
+ resolved "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz"
integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==
dependencies:
postcss "^7.0.2"
@@ -5827,35 +6305,35 @@ postcss-dir-pseudo-class@^5.0.0:
postcss-discard-comments@^4.0.2:
version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033"
+ resolved "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz"
integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==
dependencies:
postcss "^7.0.0"
postcss-discard-duplicates@^4.0.2:
version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb"
+ resolved "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz"
integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==
dependencies:
postcss "^7.0.0"
postcss-discard-empty@^4.0.1:
version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765"
+ resolved "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz"
integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==
dependencies:
postcss "^7.0.0"
postcss-discard-overridden@^4.0.1:
version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57"
+ resolved "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz"
integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==
dependencies:
postcss "^7.0.0"
postcss-double-position-gradients@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e"
+ resolved "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz"
integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==
dependencies:
postcss "^7.0.5"
@@ -5863,7 +6341,7 @@ postcss-double-position-gradients@^1.0.0:
postcss-env-function@^2.0.2:
version "2.0.2"
- resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7"
+ resolved "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz"
integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==
dependencies:
postcss "^7.0.2"
@@ -5871,42 +6349,42 @@ postcss-env-function@^2.0.2:
postcss-flexbugs-fixes@^4.2.1:
version "4.2.1"
- resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz#9218a65249f30897deab1033aced8578562a6690"
+ resolved "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz"
integrity sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ==
dependencies:
postcss "^7.0.26"
postcss-focus-visible@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e"
+ resolved "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz"
integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==
dependencies:
postcss "^7.0.2"
postcss-focus-within@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680"
+ resolved "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz"
integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==
dependencies:
postcss "^7.0.2"
postcss-font-variant@^4.0.0:
version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz#42d4c0ab30894f60f98b17561eb5c0321f502641"
+ resolved "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz"
integrity sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA==
dependencies:
postcss "^7.0.2"
postcss-gap-properties@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715"
+ resolved "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz"
integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==
dependencies:
postcss "^7.0.2"
postcss-image-set-function@^3.0.1:
version "3.0.1"
- resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288"
+ resolved "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz"
integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==
dependencies:
postcss "^7.0.2"
@@ -5914,7 +6392,7 @@ postcss-image-set-function@^3.0.1:
postcss-import@^12.0.1:
version "12.0.1"
- resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-12.0.1.tgz#cf8c7ab0b5ccab5649024536e565f841928b7153"
+ resolved "https://registry.npmjs.org/postcss-import/-/postcss-import-12.0.1.tgz"
integrity sha512-3Gti33dmCjyKBgimqGxL3vcV8w9+bsHwO5UrBawp796+jdardbcFl4RP5w/76BwNL7aGzpKstIfF9I+kdE8pTw==
dependencies:
postcss "^7.0.1"
@@ -5924,7 +6402,7 @@ postcss-import@^12.0.1:
postcss-initial@^3.0.0:
version "3.0.2"
- resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.2.tgz#f018563694b3c16ae8eaabe3c585ac6319637b2d"
+ resolved "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.2.tgz"
integrity sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA==
dependencies:
lodash.template "^4.5.0"
@@ -5932,7 +6410,7 @@ postcss-initial@^3.0.0:
postcss-lab-function@^2.0.1:
version "2.0.1"
- resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e"
+ resolved "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz"
integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==
dependencies:
"@csstools/convert-colors" "^1.4.0"
@@ -5941,7 +6419,7 @@ postcss-lab-function@^2.0.1:
postcss-load-config@^2.0.0:
version "2.1.2"
- resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.2.tgz#c5ea504f2c4aef33c7359a34de3573772ad7502a"
+ resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz"
integrity sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==
dependencies:
cosmiconfig "^5.0.0"
@@ -5949,7 +6427,7 @@ postcss-load-config@^2.0.0:
postcss-loader@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d"
+ resolved "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz"
integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==
dependencies:
loader-utils "^1.1.0"
@@ -5959,21 +6437,21 @@ postcss-loader@^3.0.0:
postcss-logical@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5"
+ resolved "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz"
integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==
dependencies:
postcss "^7.0.2"
postcss-media-minmax@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5"
+ resolved "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz"
integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==
dependencies:
postcss "^7.0.2"
postcss-merge-longhand@^4.0.11:
version "4.0.11"
- resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24"
+ resolved "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz"
integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==
dependencies:
css-color-names "0.0.4"
@@ -5983,7 +6461,7 @@ postcss-merge-longhand@^4.0.11:
postcss-merge-rules@^4.0.3:
version "4.0.3"
- resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650"
+ resolved "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz"
integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==
dependencies:
browserslist "^4.0.0"
@@ -5995,7 +6473,7 @@ postcss-merge-rules@^4.0.3:
postcss-minify-font-values@^4.0.2:
version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6"
+ resolved "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz"
integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==
dependencies:
postcss "^7.0.0"
@@ -6003,7 +6481,7 @@ postcss-minify-font-values@^4.0.2:
postcss-minify-gradients@^4.0.2:
version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471"
+ resolved "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz"
integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==
dependencies:
cssnano-util-get-arguments "^4.0.0"
@@ -6013,7 +6491,7 @@ postcss-minify-gradients@^4.0.2:
postcss-minify-params@^4.0.2:
version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874"
+ resolved "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz"
integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==
dependencies:
alphanum-sort "^1.0.0"
@@ -6025,7 +6503,7 @@ postcss-minify-params@^4.0.2:
postcss-minify-selectors@^4.0.2:
version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8"
+ resolved "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz"
integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==
dependencies:
alphanum-sort "^1.0.0"
@@ -6035,14 +6513,14 @@ postcss-minify-selectors@^4.0.2:
postcss-modules-extract-imports@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e"
+ resolved "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz"
integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==
dependencies:
postcss "^7.0.5"
postcss-modules-local-by-default@^3.0.2:
version "3.0.3"
- resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz#bb14e0cc78279d504dbdcbfd7e0ca28993ffbbb0"
+ resolved "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz"
integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==
dependencies:
icss-utils "^4.1.1"
@@ -6052,7 +6530,7 @@ postcss-modules-local-by-default@^3.0.2:
postcss-modules-scope@^2.2.0:
version "2.2.0"
- resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee"
+ resolved "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz"
integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==
dependencies:
postcss "^7.0.6"
@@ -6060,7 +6538,7 @@ postcss-modules-scope@^2.2.0:
postcss-modules-values@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10"
+ resolved "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz"
integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==
dependencies:
icss-utils "^4.0.0"
@@ -6068,21 +6546,21 @@ postcss-modules-values@^3.0.0:
postcss-nesting@^7.0.0:
version "7.0.1"
- resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052"
+ resolved "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz"
integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==
dependencies:
postcss "^7.0.2"
postcss-normalize-charset@^4.0.1:
version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4"
+ resolved "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz"
integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==
dependencies:
postcss "^7.0.0"
postcss-normalize-display-values@^4.0.2:
version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a"
+ resolved "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz"
integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==
dependencies:
cssnano-util-get-match "^4.0.0"
@@ -6091,7 +6569,7 @@ postcss-normalize-display-values@^4.0.2:
postcss-normalize-positions@^4.0.2:
version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f"
+ resolved "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz"
integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==
dependencies:
cssnano-util-get-arguments "^4.0.0"
@@ -6101,7 +6579,7 @@ postcss-normalize-positions@^4.0.2:
postcss-normalize-repeat-style@^4.0.2:
version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c"
+ resolved "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz"
integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==
dependencies:
cssnano-util-get-arguments "^4.0.0"
@@ -6111,7 +6589,7 @@ postcss-normalize-repeat-style@^4.0.2:
postcss-normalize-string@^4.0.2:
version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c"
+ resolved "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz"
integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==
dependencies:
has "^1.0.0"
@@ -6120,7 +6598,7 @@ postcss-normalize-string@^4.0.2:
postcss-normalize-timing-functions@^4.0.2:
version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9"
+ resolved "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz"
integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==
dependencies:
cssnano-util-get-match "^4.0.0"
@@ -6129,7 +6607,7 @@ postcss-normalize-timing-functions@^4.0.2:
postcss-normalize-unicode@^4.0.1:
version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb"
+ resolved "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz"
integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==
dependencies:
browserslist "^4.0.0"
@@ -6138,7 +6616,7 @@ postcss-normalize-unicode@^4.0.1:
postcss-normalize-url@^4.0.1:
version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1"
+ resolved "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz"
integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==
dependencies:
is-absolute-url "^2.0.0"
@@ -6148,7 +6626,7 @@ postcss-normalize-url@^4.0.1:
postcss-normalize-whitespace@^4.0.2:
version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82"
+ resolved "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz"
integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==
dependencies:
postcss "^7.0.0"
@@ -6156,7 +6634,7 @@ postcss-normalize-whitespace@^4.0.2:
postcss-ordered-values@^4.1.2:
version "4.1.2"
- resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee"
+ resolved "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz"
integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==
dependencies:
cssnano-util-get-arguments "^4.0.0"
@@ -6165,21 +6643,21 @@ postcss-ordered-values@^4.1.2:
postcss-overflow-shorthand@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30"
+ resolved "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz"
integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==
dependencies:
postcss "^7.0.2"
postcss-page-break@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf"
+ resolved "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz"
integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==
dependencies:
postcss "^7.0.2"
postcss-place@^4.0.1:
version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62"
+ resolved "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz"
integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==
dependencies:
postcss "^7.0.2"
@@ -6187,7 +6665,7 @@ postcss-place@^4.0.1:
postcss-preset-env@^6.7.0:
version "6.7.0"
- resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5"
+ resolved "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz"
integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==
dependencies:
autoprefixer "^9.6.1"
@@ -6230,7 +6708,7 @@ postcss-preset-env@^6.7.0:
postcss-pseudo-class-any-link@^6.0.0:
version "6.0.0"
- resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1"
+ resolved "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz"
integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==
dependencies:
postcss "^7.0.2"
@@ -6238,7 +6716,7 @@ postcss-pseudo-class-any-link@^6.0.0:
postcss-reduce-initial@^4.0.3:
version "4.0.3"
- resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df"
+ resolved "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz"
integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==
dependencies:
browserslist "^4.0.0"
@@ -6248,7 +6726,7 @@ postcss-reduce-initial@^4.0.3:
postcss-reduce-transforms@^4.0.2:
version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29"
+ resolved "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz"
integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==
dependencies:
cssnano-util-get-match "^4.0.0"
@@ -6258,21 +6736,21 @@ postcss-reduce-transforms@^4.0.2:
postcss-replace-overflow-wrap@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c"
+ resolved "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz"
integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==
dependencies:
postcss "^7.0.2"
postcss-safe-parser@^4.0.2:
version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz#a6d4e48f0f37d9f7c11b2a581bf00f8ba4870b96"
+ resolved "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz"
integrity sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==
dependencies:
postcss "^7.0.26"
postcss-selector-matches@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff"
+ resolved "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz"
integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==
dependencies:
balanced-match "^1.0.0"
@@ -6280,7 +6758,7 @@ postcss-selector-matches@^4.0.0:
postcss-selector-not@^4.0.0:
version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz#263016eef1cf219e0ade9a913780fc1f48204cbf"
+ resolved "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz"
integrity sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ==
dependencies:
balanced-match "^1.0.0"
@@ -6288,7 +6766,7 @@ postcss-selector-not@^4.0.0:
postcss-selector-parser@^3.0.0:
version "3.1.2"
- resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270"
+ resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz"
integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==
dependencies:
dot-prop "^5.2.0"
@@ -6297,7 +6775,7 @@ postcss-selector-parser@^3.0.0:
postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4:
version "5.0.0"
- resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c"
+ resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz"
integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==
dependencies:
cssesc "^2.0.0"
@@ -6306,7 +6784,7 @@ postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4:
postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2:
version "6.0.4"
- resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3"
+ resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz"
integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==
dependencies:
cssesc "^3.0.0"
@@ -6316,7 +6794,7 @@ postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2:
postcss-svgo@^4.0.2:
version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258"
+ resolved "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz"
integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==
dependencies:
is-svg "^3.0.0"
@@ -6326,7 +6804,7 @@ postcss-svgo@^4.0.2:
postcss-unique-selectors@^4.0.1:
version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac"
+ resolved "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz"
integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==
dependencies:
alphanum-sort "^1.0.0"
@@ -6335,17 +6813,17 @@ postcss-unique-selectors@^4.0.1:
postcss-value-parser@^3.0.0, postcss-value-parser@^3.2.3:
version "3.3.1"
- resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281"
+ resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz"
integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==
postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0:
version "4.1.0"
- resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb"
+ resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz"
integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==
postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1:
version "2.0.1"
- resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f"
+ resolved "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz"
integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==
dependencies:
flatten "^1.0.2"
@@ -6354,7 +6832,7 @@ postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1:
postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6:
version "7.0.35"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24"
+ resolved "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz"
integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==
dependencies:
chalk "^2.4.2"
@@ -6363,32 +6841,32 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2
prepend-http@^1.0.0:
version "1.0.4"
- resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
+ resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz"
integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=
process-nextick-args@~2.0.0:
version "2.0.1"
- resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
+ resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz"
integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
process@^0.11.10:
version "0.11.10"
- resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
+ resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz"
integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
promise-inflight@^1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
+ resolved "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz"
integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM=
promise-polyfill@^8.1.3:
version "8.2.0"
- resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-8.2.0.tgz#367394726da7561457aba2133c9ceefbd6267da0"
+ resolved "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.2.0.tgz"
integrity sha512-k/TC0mIcPVF6yHhUvwAp7cvL6I2fFV7TzF1DuGPI8mBh4QQazf36xCKEHKTZKRysEoTQoQdKyP25J8MPJp7j5g==
prosemirror-commands@^1.0.0:
version "1.1.6"
- resolved "https://registry.yarnpkg.com/prosemirror-commands/-/prosemirror-commands-1.1.6.tgz#727c045eb60e7d61f1b1d0a9411a7f60286bb1de"
+ resolved "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.1.6.tgz"
integrity sha512-oh3DN9qhtYR+4/Yfb9+hAKjiV4pEqPRxsPqUeoVqJP7Dfbk4jQKYZFDKMZgLAdSFi49fMeiVYieN3fpjOLuP0Q==
dependencies:
prosemirror-model "^1.0.0"
@@ -6397,7 +6875,7 @@ prosemirror-commands@^1.0.0:
prosemirror-dropcursor@^1.0.0:
version "1.3.3"
- resolved "https://registry.yarnpkg.com/prosemirror-dropcursor/-/prosemirror-dropcursor-1.3.3.tgz#583d6a82b4960d468132c07c40803cc1d697fda4"
+ resolved "https://registry.npmjs.org/prosemirror-dropcursor/-/prosemirror-dropcursor-1.3.3.tgz"
integrity sha512-zavE+wh+qkDcP7LaWn+jXVujGyQzBYSmM8E2HSngQ3KaaR+HJYgEBYGs9ynLHqKWLlLCXsxWdVYPV49v4caFyg==
dependencies:
prosemirror-state "^1.0.0"
@@ -6406,7 +6884,7 @@ prosemirror-dropcursor@^1.0.0:
prosemirror-example-setup@^1.1.2:
version "1.1.2"
- resolved "https://registry.yarnpkg.com/prosemirror-example-setup/-/prosemirror-example-setup-1.1.2.tgz#0df63d14a26b174933345814cb6503ad72a4ccdb"
+ resolved "https://registry.npmjs.org/prosemirror-example-setup/-/prosemirror-example-setup-1.1.2.tgz"
integrity sha512-MTpIMyqk08jFnzxeRMCinCEMtVSTUtxKgQBGxfCbVe9C6zIOqp9qZZJz5Ojaad1GETySyuj8+OIHHvQsIaaaGQ==
dependencies:
prosemirror-commands "^1.0.0"
@@ -6421,7 +6899,7 @@ prosemirror-example-setup@^1.1.2:
prosemirror-gapcursor@^1.0.0:
version "1.1.5"
- resolved "https://registry.yarnpkg.com/prosemirror-gapcursor/-/prosemirror-gapcursor-1.1.5.tgz#0c37fd6cbb1d7c46358c2e7397f8da9a8b5c6246"
+ resolved "https://registry.npmjs.org/prosemirror-gapcursor/-/prosemirror-gapcursor-1.1.5.tgz"
integrity sha512-SjbUZq5pgsBDuV3hu8GqgIpZR5eZvGLM+gPQTqjVVYSMUCfKW3EGXTEYaLHEl1bGduwqNC95O3bZflgtAb4L6w==
dependencies:
prosemirror-keymap "^1.0.0"
@@ -6431,7 +6909,7 @@ prosemirror-gapcursor@^1.0.0:
prosemirror-history@^1.0.0:
version "1.1.3"
- resolved "https://registry.yarnpkg.com/prosemirror-history/-/prosemirror-history-1.1.3.tgz#4f76a1e71db4ef7cdf0e13dec6d8da2aeaecd489"
+ resolved "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.1.3.tgz"
integrity sha512-zGDotijea+vnfnyyUGyiy1wfOQhf0B/b6zYcCouBV8yo6JmrE9X23M5q7Nf/nATywEZbgRLG70R4DmfSTC+gfg==
dependencies:
prosemirror-state "^1.2.2"
@@ -6440,7 +6918,7 @@ prosemirror-history@^1.0.0:
prosemirror-inputrules@^1.0.0:
version "1.1.3"
- resolved "https://registry.yarnpkg.com/prosemirror-inputrules/-/prosemirror-inputrules-1.1.3.tgz#93f9199ca02473259c30d7e352e4c14022d54638"
+ resolved "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.1.3.tgz"
integrity sha512-ZaHCLyBtvbyIHv0f5p6boQTIJjlD6o2NPZiEaZWT2DA+j591zS29QQEMT4lBqwcLW3qRSf7ZvoKNbf05YrsStw==
dependencies:
prosemirror-state "^1.0.0"
@@ -6448,7 +6926,7 @@ prosemirror-inputrules@^1.0.0:
prosemirror-keymap@^1.0.0:
version "1.1.4"
- resolved "https://registry.yarnpkg.com/prosemirror-keymap/-/prosemirror-keymap-1.1.4.tgz#8b481bf8389a5ac40d38dbd67ec3da2c7eac6a6d"
+ resolved "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.1.4.tgz"
integrity sha512-Al8cVUOnDFL4gcI5IDlG6xbZ0aOD/i3B17VT+1JbHWDguCgt/lBHVTHUBcKvvbSg6+q/W4Nj1Fu6bwZSca3xjg==
dependencies:
prosemirror-state "^1.0.0"
@@ -6456,7 +6934,7 @@ prosemirror-keymap@^1.0.0:
prosemirror-markdown@^1.4.5:
version "1.5.1"
- resolved "https://registry.yarnpkg.com/prosemirror-markdown/-/prosemirror-markdown-1.5.1.tgz#877c7faea2225d3c52e988599bbe4457bcb3190f"
+ resolved "https://registry.npmjs.org/prosemirror-markdown/-/prosemirror-markdown-1.5.1.tgz"
integrity sha512-QvucPHx+gKOQW1SETKUysrful9VBjKqpCFmPotgLfVZ3BdQEGy/NEIFhaXXo3TcuW316MMnKfA90K7GE5I7z8A==
dependencies:
markdown-it "^10.0.0"
@@ -6464,7 +6942,7 @@ prosemirror-markdown@^1.4.5:
prosemirror-menu@^1.0.0:
version "1.1.4"
- resolved "https://registry.yarnpkg.com/prosemirror-menu/-/prosemirror-menu-1.1.4.tgz#a845ae0e14ce1f92dd39d7f23caa6063265cd98c"
+ resolved "https://registry.npmjs.org/prosemirror-menu/-/prosemirror-menu-1.1.4.tgz"
integrity sha512-2ROsji/X9ciDnVSRvSTqFygI34GEdHfQSsK4zBKjPxSEroeiHHcdRMS1ofNIf2zM0Vpp5/YqfpxynElymQkqzg==
dependencies:
crelt "^1.0.0"
@@ -6474,21 +6952,28 @@ prosemirror-menu@^1.0.0:
prosemirror-model@^1.0.0, prosemirror-model@^1.1.0, prosemirror-model@^1.2.0:
version "1.13.3"
- resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.13.3.tgz#3ccfde73b9c9e706933c72bdf7462906509ff1c9"
+ resolved "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.13.3.tgz"
integrity sha512-wujIYYQEcxdkbKmIJiekVjqtylKxuoEcc+w2PnN7Itc58m/75J4rCUz2dibygVQJFi3gZrD2DNFLjOS6LP4w1g==
dependencies:
orderedmap "^1.1.0"
+prosemirror-model@^1.16.0:
+ version "1.19.4"
+ resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.19.4.tgz#e45e84480c97dd3922095dbe579e1c98c86c0704"
+ integrity sha512-RPmVXxUfOhyFdayHawjuZCxiROsm9L4FCUA6pWI+l7n2yCBsWy9VpdE1hpDHUS8Vad661YLY9AzqfjLhAKQ4iQ==
+ dependencies:
+ orderedmap "^2.0.0"
+
prosemirror-schema-basic@^1.1.2:
version "1.1.2"
- resolved "https://registry.yarnpkg.com/prosemirror-schema-basic/-/prosemirror-schema-basic-1.1.2.tgz#4bde5c339c845e0d08ec8fe473064e372ca51ae3"
+ resolved "https://registry.npmjs.org/prosemirror-schema-basic/-/prosemirror-schema-basic-1.1.2.tgz"
integrity sha512-G4q8WflNsR1Q33QAV4MQO0xWrHLOJ+BQcKswGXMy626wlQj6c/1n1v4eC9ns+h2y1r/fJHZEgSZnsNhm9lbrDw==
dependencies:
prosemirror-model "^1.2.0"
prosemirror-schema-list@^1.0.0:
version "1.1.4"
- resolved "https://registry.yarnpkg.com/prosemirror-schema-list/-/prosemirror-schema-list-1.1.4.tgz#471f9caf2d2bed93641d2e490434c0d2d4330df1"
+ resolved "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.1.4.tgz"
integrity sha512-pNTuZflacFOBlxrTcWSdWhjoB8BaucwfJVp/gJNxztOwaN3wQiC65axclXyplf6TKgXD/EkWfS/QAov3/Znadw==
dependencies:
prosemirror-model "^1.0.0"
@@ -6496,31 +6981,57 @@ prosemirror-schema-list@^1.0.0:
prosemirror-state@^1.0.0, prosemirror-state@^1.2.2:
version "1.3.4"
- resolved "https://registry.yarnpkg.com/prosemirror-state/-/prosemirror-state-1.3.4.tgz#4c6b52628216e753fc901c6d2bfd84ce109e8952"
+ resolved "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.3.4.tgz"
integrity sha512-Xkkrpd1y/TQ6HKzN3agsQIGRcLckUMA9u3j207L04mt8ToRgpGeyhbVv0HI7omDORIBHjR29b7AwlATFFf2GLA==
dependencies:
prosemirror-model "^1.0.0"
prosemirror-transform "^1.0.0"
+prosemirror-state@^1.3.4:
+ version "1.4.3"
+ resolved "https://registry.yarnpkg.com/prosemirror-state/-/prosemirror-state-1.4.3.tgz#94aecf3ffd54ec37e87aa7179d13508da181a080"
+ integrity sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==
+ dependencies:
+ prosemirror-model "^1.0.0"
+ prosemirror-transform "^1.0.0"
+ prosemirror-view "^1.27.0"
+
+prosemirror-svelte-nodeview@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/prosemirror-svelte-nodeview/-/prosemirror-svelte-nodeview-1.0.2.tgz#a5759cccd0390fd39f3a99b9a862fca47512ed75"
+ integrity sha512-JzNT8q0Sd1u9OFiTz7rt0rSURyTjxuT5Nhvp5F0t7PdQGLGtBBrzfaCDaFXppf2m/IyeDJJyV/IJw5yNiT2OTg==
+ dependencies:
+ clone "^2.1.2"
+ prosemirror-state "^1.3.4"
+
prosemirror-transform@^1.0.0, prosemirror-transform@^1.1.0:
version "1.2.11"
- resolved "https://registry.yarnpkg.com/prosemirror-transform/-/prosemirror-transform-1.2.11.tgz#87fc53b2b1344ca4c2c4cb3f3b61486794b6a0b3"
+ resolved "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.2.11.tgz"
integrity sha512-i4N5bMZcmhZPJw1ULH2Ne6SumqrkWBQpJXo/PN6xwq8kv6q7IZVYDjF7DRe2vp3AiqZ/5KnLucJM7e82875LyQ==
dependencies:
prosemirror-model "^1.0.0"
prosemirror-view@^1.0.0, prosemirror-view@^1.1.0:
version "1.17.6"
- resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.17.6.tgz#9c31c84b9b78bd3aa3343d1b90eff36869387a5b"
+ resolved "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.17.6.tgz"
integrity sha512-ZnpIQg8DzrvpeBPLab3UUEjwjA37CwOjQruDyzdHYUf6MA95H48tchIOVrwUdQxFDhETaG5iQOWZlAzYj+olzw==
dependencies:
prosemirror-model "^1.1.0"
prosemirror-state "^1.0.0"
prosemirror-transform "^1.1.0"
+prosemirror-view@^1.27.0:
+ version "1.32.7"
+ resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.32.7.tgz#b9c4e8471daeba79489befa59eaeaeb4cd2e2653"
+ integrity sha512-pvxiOoD4shW41X5bYDjRQk3DSG4fMqxh36yPMt7VYgU3dWRmqFzWJM/R6zeo1KtC8nyk717ZbQND3CC9VNeptw==
+ dependencies:
+ prosemirror-model "^1.16.0"
+ prosemirror-state "^1.0.0"
+ prosemirror-transform "^1.1.0"
+
proxy-addr@~2.0.5:
version "2.0.6"
- resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf"
+ resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz"
integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==
dependencies:
forwarded "~0.1.2"
@@ -6528,22 +7039,12 @@ proxy-addr@~2.0.5:
prr@~1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
+ resolved "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz"
integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY=
-pseudomap@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
- integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
-
-psl@^1.1.28:
- version "1.8.0"
- resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
- integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==
-
public-encrypt@^4.0.0:
version "4.0.3"
- resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0"
+ resolved "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz"
integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==
dependencies:
bn.js "^4.1.0"
@@ -6555,7 +7056,7 @@ public-encrypt@^4.0.0:
pump@^2.0.0:
version "2.0.1"
- resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909"
+ resolved "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz"
integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==
dependencies:
end-of-stream "^1.1.0"
@@ -6563,7 +7064,7 @@ pump@^2.0.0:
pump@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
+ resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz"
integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
dependencies:
end-of-stream "^1.1.0"
@@ -6571,7 +7072,7 @@ pump@^3.0.0:
pumpify@^1.3.3:
version "1.5.1"
- resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce"
+ resolved "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz"
integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==
dependencies:
duplexify "^3.6.0"
@@ -6580,37 +7081,32 @@ pumpify@^1.3.3:
punycode@1.3.2:
version "1.3.2"
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
+ resolved "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz"
integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
punycode@^1.2.4:
version "1.4.1"
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
+ resolved "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz"
integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
-punycode@^2.1.0, punycode@^2.1.1:
+punycode@^2.1.0:
version "2.1.1"
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
+ resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz"
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
q@^1.1.2:
version "1.5.1"
- resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
+ resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz"
integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=
qs@6.7.0:
version "6.7.0"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
+ resolved "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz"
integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==
-qs@~6.5.2:
- version "6.5.2"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
- integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
-
query-string@^4.1.0:
version "4.3.4"
- resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb"
+ resolved "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz"
integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s=
dependencies:
object-assign "^4.1.0"
@@ -6618,29 +7114,29 @@ query-string@^4.1.0:
querystring-es3@^0.2.0:
version "0.2.1"
- resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
+ resolved "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz"
integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=
querystring@0.2.0:
version "0.2.0"
- resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
+ resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz"
integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
querystringify@^2.1.1:
version "2.2.0"
- resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6"
+ resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz"
integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==
randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0:
version "2.1.0"
- resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
+ resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz"
integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
dependencies:
safe-buffer "^5.1.0"
randomfill@^1.0.3:
version "1.0.4"
- resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458"
+ resolved "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz"
integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==
dependencies:
randombytes "^2.0.5"
@@ -6648,12 +7144,12 @@ randomfill@^1.0.3:
range-parser@^1.2.1, range-parser@~1.2.1:
version "1.2.1"
- resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
+ resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz"
integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
raw-body@2.4.0:
version "2.4.0"
- resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332"
+ resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz"
integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==
dependencies:
bytes "3.1.0"
@@ -6663,31 +7159,14 @@ raw-body@2.4.0:
read-cache@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774"
+ resolved "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz"
integrity sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=
dependencies:
pify "^2.3.0"
-read-pkg-up@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
- integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=
- dependencies:
- find-up "^1.0.0"
- read-pkg "^1.0.0"
-
-read-pkg@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
- integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=
- dependencies:
- load-json-file "^1.0.0"
- normalize-package-data "^2.3.2"
- path-type "^1.0.0"
-
-"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6:
+"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6:
version "2.3.7"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
+ resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz"
integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
dependencies:
core-util-is "~1.0.0"
@@ -6700,7 +7179,7 @@ read-pkg@^1.0.0:
readable-stream@^3.0.6, readable-stream@^3.6.0:
version "3.6.0"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
+ resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz"
integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
dependencies:
inherits "^2.0.3"
@@ -6709,7 +7188,7 @@ readable-stream@^3.0.6, readable-stream@^3.6.0:
readdirp@^2.2.1:
version "2.2.1"
- resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525"
+ resolved "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz"
integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==
dependencies:
graceful-fs "^4.1.11"
@@ -6718,46 +7197,69 @@ readdirp@^2.2.1:
readdirp@~3.5.0:
version "3.5.0"
- resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e"
+ resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz"
integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==
dependencies:
picomatch "^2.2.1"
-redent@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"
- integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=
+readdirp@~3.6.0:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
+ integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
dependencies:
- indent-string "^2.1.0"
- strip-indent "^1.0.1"
+ picomatch "^2.2.1"
+
+regenerate-unicode-properties@^10.1.0:
+ version "10.1.1"
+ resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480"
+ integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==
+ dependencies:
+ regenerate "^1.4.2"
regenerate-unicode-properties@^8.2.0:
version "8.2.0"
- resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec"
+ resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz"
integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==
dependencies:
regenerate "^1.4.0"
-regenerate@^1.4.0:
+regenerate@^1.4.0, regenerate@^1.4.2:
version "1.4.2"
- resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a"
+ resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz"
integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==
-regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7:
+regenerator-runtime@^0.13.4:
version "0.13.7"
- resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55"
+ resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz"
integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==
+regenerator-runtime@^0.13.9:
+ version "0.13.11"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9"
+ integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==
+
+regenerator-runtime@^0.14.0:
+ version "0.14.1"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f"
+ integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==
+
regenerator-transform@^0.14.2:
version "0.14.5"
- resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4"
+ resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz"
integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==
dependencies:
"@babel/runtime" "^7.8.4"
+regenerator-transform@^0.15.2:
+ version "0.15.2"
+ resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4"
+ integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==
+ dependencies:
+ "@babel/runtime" "^7.8.4"
+
regex-not@^1.0.0, regex-not@^1.0.2:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
+ resolved "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz"
integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==
dependencies:
extend-shallow "^3.0.2"
@@ -6765,7 +7267,7 @@ regex-not@^1.0.0, regex-not@^1.0.2:
regexp.prototype.flags@^1.2.0:
version "1.3.1"
- resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26"
+ resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz"
integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==
dependencies:
call-bind "^1.0.2"
@@ -6773,7 +7275,7 @@ regexp.prototype.flags@^1.2.0:
regexpu-core@^4.7.1:
version "4.7.1"
- resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6"
+ resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz"
integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==
dependencies:
regenerate "^1.4.0"
@@ -6783,91 +7285,77 @@ regexpu-core@^4.7.1:
unicode-match-property-ecmascript "^1.0.4"
unicode-match-property-value-ecmascript "^1.2.0"
+regexpu-core@^5.3.1:
+ version "5.3.2"
+ resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b"
+ integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==
+ dependencies:
+ "@babel/regjsgen" "^0.8.0"
+ regenerate "^1.4.2"
+ regenerate-unicode-properties "^10.1.0"
+ regjsparser "^0.9.1"
+ unicode-match-property-ecmascript "^2.0.0"
+ unicode-match-property-value-ecmascript "^2.1.0"
+
regjsgen@^0.5.1:
version "0.5.2"
- resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733"
+ resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz"
integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==
regjsparser@^0.6.4:
version "0.6.7"
- resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.7.tgz#c00164e1e6713c2e3ee641f1701c4b7aa0a7f86c"
+ resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.7.tgz"
integrity sha512-ib77G0uxsA2ovgiYbCVGx4Pv3PSttAx2vIwidqQzbL2U5S4Q+j00HdSAneSBuyVcMvEnTXMjiGgB+DlXozVhpQ==
dependencies:
jsesc "~0.5.0"
+regjsparser@^0.9.1:
+ version "0.9.1"
+ resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709"
+ integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==
+ dependencies:
+ jsesc "~0.5.0"
+
remove-trailing-separator@^1.0.1:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
+ resolved "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz"
integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8=
repeat-element@^1.1.2:
version "1.1.3"
- resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce"
+ resolved "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz"
integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==
repeat-string@^1.6.1:
version "1.6.1"
- resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
+ resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz"
integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
-repeating@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
- integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=
- dependencies:
- is-finite "^1.0.0"
-
-request@^2.87.0, request@^2.88.0:
- version "2.88.2"
- resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
- integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
- dependencies:
- aws-sign2 "~0.7.0"
- aws4 "^1.8.0"
- caseless "~0.12.0"
- combined-stream "~1.0.6"
- extend "~3.0.2"
- forever-agent "~0.6.1"
- form-data "~2.3.2"
- har-validator "~5.1.3"
- http-signature "~1.2.0"
- is-typedarray "~1.0.0"
- isstream "~0.1.2"
- json-stringify-safe "~5.0.1"
- mime-types "~2.1.19"
- oauth-sign "~0.9.0"
- performance-now "^2.1.0"
- qs "~6.5.2"
- safe-buffer "^5.1.2"
- tough-cookie "~2.5.0"
- tunnel-agent "^0.6.0"
- uuid "^3.3.2"
-
require-directory@^2.1.1:
version "2.1.1"
- resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
+ resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz"
integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
require-main-filename@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
+ resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz"
integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
requires-port@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
+ resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz"
integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=
resolve-cwd@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a"
+ resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz"
integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=
dependencies:
resolve-from "^3.0.0"
resolve-dir@^1.0.0, resolve-dir@^1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43"
+ resolved "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz"
integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=
dependencies:
expand-tilde "^2.0.0"
@@ -6875,64 +7363,73 @@ resolve-dir@^1.0.0, resolve-dir@^1.0.1:
resolve-from@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
+ resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz"
integrity sha1-six699nWiBvItuZTM17rywoYh0g=
resolve-from@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
+ resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz"
integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
resolve-url@^0.2.1:
version "0.2.1"
- resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
+ resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz"
integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
-resolve@^1.1.7, resolve@^1.10.0, resolve@^1.12.0:
+resolve@^1.1.7, resolve@^1.12.0:
version "1.20.0"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
+ resolved "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz"
integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==
dependencies:
is-core-module "^2.2.0"
path-parse "^1.0.6"
+resolve@^1.14.2:
+ version "1.22.8"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d"
+ integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==
+ dependencies:
+ is-core-module "^2.13.0"
+ path-parse "^1.0.7"
+ supports-preserve-symlinks-flag "^1.0.0"
+
ret@~0.1.10:
version "0.1.15"
- resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
+ resolved "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz"
integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
retry@^0.12.0:
version "0.12.0"
- resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b"
+ resolved "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz"
integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=
rgb-regex@^1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1"
+ resolved "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz"
integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE=
rgba-regex@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3"
+ resolved "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz"
integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=
-rimraf@2, rimraf@^2.5.4, rimraf@^2.6.3:
+rimraf@^2.5.4, rimraf@^2.6.3:
version "2.7.1"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
+ resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz"
integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
dependencies:
glob "^7.1.3"
rimraf@^3.0.2:
version "3.0.2"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
+ resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz"
integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
dependencies:
glob "^7.1.3"
ripemd160@^2.0.0, ripemd160@^2.0.1:
version "2.0.2"
- resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c"
+ resolved "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz"
integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==
dependencies:
hash-base "^3.0.0"
@@ -6940,67 +7437,66 @@ ripemd160@^2.0.0, ripemd160@^2.0.1:
rope-sequence@^1.3.0:
version "1.3.2"
- resolved "https://registry.yarnpkg.com/rope-sequence/-/rope-sequence-1.3.2.tgz#a19e02d72991ca71feb6b5f8a91154e48e3c098b"
+ resolved "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.2.tgz"
integrity sha512-ku6MFrwEVSVmXLvy3dYph3LAMNS0890K7fabn+0YIRQ2T96T9F4gkFf0vf0WW0JUraNWwGRtInEpH7yO4tbQZg==
run-queue@^1.0.0, run-queue@^1.0.3:
version "1.0.3"
- resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47"
+ resolved "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz"
integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=
dependencies:
aproba "^1.1.1"
safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
version "5.1.2"
- resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
+ resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz"
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0:
version "5.2.1"
- resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
+ resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz"
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
safe-regex@^1.1.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
+ resolved "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz"
integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4=
dependencies:
ret "~0.1.10"
-"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
+"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.1.0:
version "2.1.2"
- resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
+ resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
-sass-graph@2.2.5:
- version "2.2.5"
- resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.5.tgz#a981c87446b8319d96dce0671e487879bd24c2e8"
- integrity sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==
+sass-loader@10.1.1:
+ version "10.1.1"
+ resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.1.1.tgz#4ddd5a3d7638e7949065dd6e9c7c04037f7e663d"
+ integrity sha512-W6gVDXAd5hR/WHsPicvZdjAWHBcEJ44UahgxcIE196fW2ong0ZHMPO1kZuI5q0VlvMQZh32gpv69PLWQm70qrw==
dependencies:
- glob "^7.0.0"
- lodash "^4.0.0"
- scss-tokenizer "^0.2.3"
- yargs "^13.3.2"
+ klona "^2.0.4"
+ loader-utils "^2.0.0"
+ neo-async "^2.6.2"
+ schema-utils "^3.0.0"
+ semver "^7.3.2"
-sass-loader@^8.0.2:
- version "8.0.2"
- resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-8.0.2.tgz#debecd8c3ce243c76454f2e8290482150380090d"
- integrity sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==
+sass@^1.38.0:
+ version "1.69.7"
+ resolved "https://registry.yarnpkg.com/sass/-/sass-1.69.7.tgz#6e7e1c8f51e8162faec3e9619babc7da780af3b7"
+ integrity sha512-rzj2soDeZ8wtE2egyLXgOOHQvaC2iosZrkF6v3EUG+tBwEvhqUCzm0VP3k9gHF9LXbSrRhT5SksoI56Iw8NPnQ==
dependencies:
- clone-deep "^4.0.1"
- loader-utils "^1.2.3"
- neo-async "^2.6.1"
- schema-utils "^2.6.1"
- semver "^6.3.0"
+ chokidar ">=3.0.0 <4.0.0"
+ immutable "^4.0.0"
+ source-map-js ">=0.6.2 <2.0.0"
sax@~1.2.4:
version "1.2.4"
- resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
+ resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz"
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
schema-utils@2.7.0:
version "2.7.0"
- resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7"
+ resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz"
integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==
dependencies:
"@types/json-schema" "^7.0.4"
@@ -7009,16 +7505,16 @@ schema-utils@2.7.0:
schema-utils@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770"
+ resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz"
integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==
dependencies:
ajv "^6.1.0"
ajv-errors "^1.0.0"
ajv-keywords "^3.1.0"
-schema-utils@^2.6.1, schema-utils@^2.6.5, schema-utils@^2.7.0:
+schema-utils@^2.6.5, schema-utils@^2.7.0:
version "2.7.1"
- resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7"
+ resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz"
integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==
dependencies:
"@types/json-schema" "^7.0.5"
@@ -7027,63 +7523,55 @@ schema-utils@^2.6.1, schema-utils@^2.6.5, schema-utils@^2.7.0:
schema-utils@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.0.0.tgz#67502f6aa2b66a2d4032b4279a2944978a0913ef"
+ resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz"
integrity sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==
dependencies:
"@types/json-schema" "^7.0.6"
ajv "^6.12.5"
ajv-keywords "^3.5.2"
-scss-tokenizer@^0.2.3:
- version "0.2.3"
- resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1"
- integrity sha1-jrBtualyMzOCTT9VMGQRSYR85dE=
- dependencies:
- js-base64 "^2.1.8"
- source-map "^0.4.2"
-
select-hose@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
+ resolved "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz"
integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=
selfsigned@^1.10.8:
version "1.10.8"
- resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.8.tgz#0d17208b7d12c33f8eac85c41835f27fc3d81a30"
+ resolved "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.8.tgz"
integrity sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==
dependencies:
node-forge "^0.10.0"
-"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0:
- version "5.7.1"
- resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
- integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
-
semver@7.0.0:
version "7.0.0"
- resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
+ resolved "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz"
integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==
+semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0:
+ version "5.7.1"
+ resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz"
+ integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
+
semver@^6.0.0, semver@^6.3.0:
version "6.3.0"
- resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
+ resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz"
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
+semver@^6.3.1:
+ version "6.3.1"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
+ integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
+
semver@^7.3.2:
version "7.3.4"
- resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97"
+ resolved "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz"
integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==
dependencies:
lru-cache "^6.0.0"
-semver@~5.3.0:
- version "5.3.0"
- resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
- integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8=
-
send@0.17.1:
version "0.17.1"
- resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8"
+ resolved "https://registry.npmjs.org/send/-/send-0.17.1.tgz"
integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==
dependencies:
debug "2.6.9"
@@ -7102,21 +7590,21 @@ send@0.17.1:
serialize-javascript@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa"
+ resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz"
integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==
dependencies:
randombytes "^2.1.0"
serialize-javascript@^5.0.1:
version "5.0.1"
- resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4"
+ resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz"
integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==
dependencies:
randombytes "^2.1.0"
serve-index@^1.9.1:
version "1.9.1"
- resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239"
+ resolved "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz"
integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=
dependencies:
accepts "~1.3.4"
@@ -7129,7 +7617,7 @@ serve-index@^1.9.1:
serve-static@1.14.1:
version "1.14.1"
- resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9"
+ resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz"
integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==
dependencies:
encodeurl "~1.0.2"
@@ -7137,14 +7625,14 @@ serve-static@1.14.1:
parseurl "~1.3.3"
send "0.17.1"
-set-blocking@^2.0.0, set-blocking@~2.0.0:
+set-blocking@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
+ resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz"
integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
set-value@^2.0.0, set-value@^2.0.1:
version "2.0.1"
- resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
+ resolved "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz"
integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==
dependencies:
extend-shallow "^2.0.1"
@@ -7154,61 +7642,54 @@ set-value@^2.0.0, set-value@^2.0.1:
setimmediate@^1.0.4:
version "1.0.5"
- resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
+ resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz"
integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
setprototypeof@1.1.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
+ resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz"
integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==
setprototypeof@1.1.1:
version "1.1.1"
- resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"
+ resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz"
integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==
sha.js@^2.4.0, sha.js@^2.4.8:
version "2.4.11"
- resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
+ resolved "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz"
integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==
dependencies:
inherits "^2.0.1"
safe-buffer "^5.0.1"
-shallow-clone@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3"
- integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==
- dependencies:
- kind-of "^6.0.2"
-
shebang-command@^1.2.0:
version "1.2.0"
- resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
+ resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz"
integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
dependencies:
shebang-regex "^1.0.0"
shebang-regex@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
+ resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz"
integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
signal-exit@^3.0.0:
version "3.0.3"
- resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
+ resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz"
integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
simple-swizzle@^0.2.2:
version "0.2.2"
- resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
+ resolved "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz"
integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=
dependencies:
is-arrayish "^0.3.1"
snapdragon-node@^2.0.1:
version "2.1.1"
- resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
+ resolved "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz"
integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==
dependencies:
define-property "^1.0.0"
@@ -7217,14 +7698,14 @@ snapdragon-node@^2.0.1:
snapdragon-util@^3.0.1:
version "3.0.1"
- resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
+ resolved "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz"
integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==
dependencies:
kind-of "^3.2.0"
snapdragon@^0.8.1:
version "0.8.2"
- resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
+ resolved "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz"
integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==
dependencies:
base "^0.11.1"
@@ -7238,7 +7719,7 @@ snapdragon@^0.8.1:
sockjs-client@^1.5.0:
version "1.5.0"
- resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.5.0.tgz#2f8ff5d4b659e0d092f7aba0b7c386bd2aa20add"
+ resolved "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.0.tgz"
integrity sha512-8Dt3BDi4FYNrCFGTL/HtwVzkARrENdwOUf1ZoW/9p3M8lZdFT35jVdrHza+qgxuG9H3/shR4cuX/X9umUrjP8Q==
dependencies:
debug "^3.2.6"
@@ -7250,7 +7731,7 @@ sockjs-client@^1.5.0:
sockjs@^0.3.21:
version "0.3.21"
- resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.21.tgz#b34ffb98e796930b60a0cfa11904d6a339a7d417"
+ resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz"
integrity sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==
dependencies:
faye-websocket "^0.11.3"
@@ -7259,19 +7740,24 @@ sockjs@^0.3.21:
sort-keys@^1.0.0:
version "1.1.2"
- resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad"
+ resolved "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz"
integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0=
dependencies:
is-plain-obj "^1.0.0"
source-list-map@^2.0.0:
version "2.0.1"
- resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34"
+ resolved "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz"
integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==
+"source-map-js@>=0.6.2 <2.0.0":
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
+ integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
+
source-map-resolve@^0.5.0:
version "0.5.3"
- resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a"
+ resolved "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz"
integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==
dependencies:
atob "^2.1.2"
@@ -7282,7 +7768,7 @@ source-map-resolve@^0.5.0:
source-map-support@~0.5.12, source-map-support@~0.5.19:
version "0.5.19"
- resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61"
+ resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz"
integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==
dependencies:
buffer-from "^1.0.0"
@@ -7290,65 +7776,32 @@ source-map-support@~0.5.12, source-map-support@~0.5.19:
source-map-url@^0.4.0:
version "0.4.1"
- resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56"
+ resolved "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz"
integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==
-source-map@^0.4.2:
- version "0.4.4"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
- integrity sha1-66T12pwNyZneaAMti092FzZSA2s=
- dependencies:
- amdefine ">=0.0.4"
-
source-map@^0.5.0, source-map@^0.5.6:
version "0.5.7"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
+ resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz"
integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
version "0.6.1"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
+ resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
source-map@~0.7.2:
version "0.7.3"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
+ resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz"
integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
spark-md5@^3.0.0:
version "3.0.1"
- resolved "https://registry.yarnpkg.com/spark-md5/-/spark-md5-3.0.1.tgz#83a0e255734f2ab4e5c466e5a2cfc9ba2aa2124d"
+ resolved "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.1.tgz"
integrity sha512-0tF3AGSD1ppQeuffsLDIOWlKUd3lS92tFxcsrh5Pe3ZphhnoK+oXIBTzOAThZCiuINZLvpiLH/1VS1/ANEJVig==
-spdx-correct@^3.0.0:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9"
- integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==
- dependencies:
- spdx-expression-parse "^3.0.0"
- spdx-license-ids "^3.0.0"
-
-spdx-exceptions@^2.1.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d"
- integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==
-
-spdx-expression-parse@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679"
- integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==
- dependencies:
- spdx-exceptions "^2.1.0"
- spdx-license-ids "^3.0.0"
-
-spdx-license-ids@^3.0.0:
- version "3.0.7"
- resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65"
- integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==
-
spdy-transport@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31"
+ resolved "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz"
integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==
dependencies:
debug "^4.1.0"
@@ -7360,7 +7813,7 @@ spdy-transport@^3.0.0:
spdy@^4.0.2:
version "4.0.2"
- resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b"
+ resolved "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz"
integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==
dependencies:
debug "^4.1.0"
@@ -7371,58 +7824,43 @@ spdy@^4.0.2:
split-string@^3.0.1, split-string@^3.0.2:
version "3.1.0"
- resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
+ resolved "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz"
integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
dependencies:
extend-shallow "^3.0.0"
sprintf-js@~1.0.2:
version "1.0.3"
- resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
+ resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz"
integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
-sshpk@^1.7.0:
- version "1.16.1"
- resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877"
- integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==
- dependencies:
- asn1 "~0.2.3"
- assert-plus "^1.0.0"
- bcrypt-pbkdf "^1.0.0"
- dashdash "^1.12.0"
- ecc-jsbn "~0.1.1"
- getpass "^0.1.1"
- jsbn "~0.1.0"
- safer-buffer "^2.0.2"
- tweetnacl "~0.14.0"
-
ssri@^6.0.1:
version "6.0.1"
- resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8"
+ resolved "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz"
integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==
dependencies:
figgy-pudding "^3.5.1"
ssri@^8.0.0:
version "8.0.1"
- resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af"
+ resolved "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz"
integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==
dependencies:
minipass "^3.1.1"
stable@^0.1.8:
version "0.1.8"
- resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
+ resolved "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz"
integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
stackframe@^1.1.1:
version "1.2.0"
- resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.0.tgz#52429492d63c62eb989804c11552e3d22e779303"
+ resolved "https://registry.npmjs.org/stackframe/-/stackframe-1.2.0.tgz"
integrity sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA==
static-extend@^0.1.1:
version "0.1.2"
- resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
+ resolved "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz"
integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=
dependencies:
define-property "^0.2.5"
@@ -7430,19 +7868,12 @@ static-extend@^0.1.1:
"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0:
version "1.5.0"
- resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
+ resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz"
integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
-stdout-stream@^1.4.0:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.1.tgz#5ac174cdd5cd726104aa0c0b2bd83815d8d535de"
- integrity sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==
- dependencies:
- readable-stream "^2.0.1"
-
stimulus@^1.1.1:
version "1.1.1"
- resolved "https://registry.yarnpkg.com/stimulus/-/stimulus-1.1.1.tgz#53c2fded6849e7b85eed3ed8dd76e33abd74bec5"
+ resolved "https://registry.npmjs.org/stimulus/-/stimulus-1.1.1.tgz"
integrity sha512-R0mBqKp48YnRDZOxZ8hiOH4Ilph3Yj78CIFTBkCwyHs4iGCpe7xlEdQ7cjIxb+7qVCSxFKgxO+mAQbsNgt/5XQ==
dependencies:
"@stimulus/core" "^1.1.1"
@@ -7450,7 +7881,7 @@ stimulus@^1.1.1:
stream-browserify@^2.0.1:
version "2.0.2"
- resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b"
+ resolved "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz"
integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==
dependencies:
inherits "~2.0.1"
@@ -7458,7 +7889,7 @@ stream-browserify@^2.0.1:
stream-each@^1.1.0:
version "1.2.3"
- resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae"
+ resolved "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz"
integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==
dependencies:
end-of-stream "^1.1.0"
@@ -7466,7 +7897,7 @@ stream-each@^1.1.0:
stream-http@^2.7.2:
version "2.8.3"
- resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc"
+ resolved "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz"
integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==
dependencies:
builtin-status-codes "^3.0.0"
@@ -7477,34 +7908,17 @@ stream-http@^2.7.2:
stream-shift@^1.0.0:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d"
+ resolved "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz"
integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==
strict-uri-encode@^1.0.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
+ resolved "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz"
integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=
-string-width@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
- integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
- dependencies:
- code-point-at "^1.0.0"
- is-fullwidth-code-point "^1.0.0"
- strip-ansi "^3.0.0"
-
-"string-width@^1.0.2 || 2":
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
- integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
- dependencies:
- is-fullwidth-code-point "^2.0.0"
- strip-ansi "^4.0.0"
-
string-width@^3.0.0, string-width@^3.1.0:
version "3.1.0"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
+ resolved "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz"
integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
dependencies:
emoji-regex "^7.0.1"
@@ -7513,12 +7927,12 @@ string-width@^3.0.0, string-width@^3.1.0:
string.prototype.repeat@^0.2.0:
version "0.2.0"
- resolved "https://registry.yarnpkg.com/string.prototype.repeat/-/string.prototype.repeat-0.2.0.tgz#aba36de08dcee6a5a337d49b2ea1da1b28fc0ecf"
+ resolved "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-0.2.0.tgz"
integrity sha1-q6Nt4I3O5qWjN9SbLqHaGyj8Ds8=
string.prototype.trimend@^1.0.1, string.prototype.trimend@^1.0.3:
version "1.0.3"
- resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz#a22bd53cca5c7cf44d7c9d5c732118873d6cd18b"
+ resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz"
integrity sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==
dependencies:
call-bind "^1.0.0"
@@ -7526,7 +7940,7 @@ string.prototype.trimend@^1.0.1, string.prototype.trimend@^1.0.3:
string.prototype.trimstart@^1.0.1, string.prototype.trimstart@^1.0.3:
version "1.0.3"
- resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz#9b4cb590e123bb36564401d59824298de50fd5aa"
+ resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz"
integrity sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==
dependencies:
call-bind "^1.0.0"
@@ -7534,59 +7948,38 @@ string.prototype.trimstart@^1.0.1, string.prototype.trimstart@^1.0.3:
string_decoder@^1.0.0, string_decoder@^1.1.1:
version "1.3.0"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
+ resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz"
integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
dependencies:
safe-buffer "~5.2.0"
string_decoder@~1.1.1:
version "1.1.1"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
+ resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"
integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
dependencies:
safe-buffer "~5.1.0"
-strip-ansi@^3.0.0, strip-ansi@^3.0.1:
+strip-ansi@^3.0.1:
version "3.0.1"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
+ resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz"
integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
dependencies:
ansi-regex "^2.0.0"
-strip-ansi@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
- integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
- dependencies:
- ansi-regex "^3.0.0"
-
strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
version "5.2.0"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
+ resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz"
integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
dependencies:
ansi-regex "^4.1.0"
-strip-bom@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
- integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=
- dependencies:
- is-utf8 "^0.2.0"
-
strip-eof@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
+ resolved "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz"
integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
-strip-indent@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2"
- integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=
- dependencies:
- get-stdin "^4.0.1"
-
-style-loader@^1.2.1:
+style-loader@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.3.0.tgz#828b4a3b3b7e7aa5847ce7bae9e874512114249e"
integrity sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q==
@@ -7596,42 +7989,42 @@ style-loader@^1.2.1:
stylehacks@^4.0.0:
version "4.0.3"
- resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5"
+ resolved "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz"
integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==
dependencies:
browserslist "^4.0.0"
postcss "^7.0.0"
postcss-selector-parser "^3.0.0"
-supports-color@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
- integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
-
supports-color@^5.3.0:
version "5.5.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
+ resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz"
integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
dependencies:
has-flag "^3.0.0"
supports-color@^6.1.0:
version "6.1.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3"
+ resolved "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz"
integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==
dependencies:
has-flag "^3.0.0"
supports-color@^7.0.0, supports-color@^7.1.0:
version "7.2.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
+ resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz"
integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
dependencies:
has-flag "^4.0.0"
+supports-preserve-symlinks-flag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
+ integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
+
svgo@^1.0.0:
version "1.3.2"
- resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167"
+ resolved "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz"
integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==
dependencies:
chalk "^2.4.1"
@@ -7650,21 +8043,12 @@ svgo@^1.0.0:
tapable@^1.0.0, tapable@^1.1.3:
version "1.1.3"
- resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
+ resolved "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz"
integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
-tar@^2.0.0:
- version "2.2.2"
- resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz#0ca8848562c7299b8b446ff6a4d60cdbb23edc40"
- integrity sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==
- dependencies:
- block-stream "*"
- fstream "^1.0.12"
- inherits "2"
-
tar@^6.0.2:
version "6.1.0"
- resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.0.tgz#d1724e9bcc04b977b18d5c573b333a2207229a83"
+ resolved "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz"
integrity sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==
dependencies:
chownr "^2.0.0"
@@ -7676,14 +8060,14 @@ tar@^6.0.2:
tdigest@^0.1.1:
version "0.1.1"
- resolved "https://registry.yarnpkg.com/tdigest/-/tdigest-0.1.1.tgz#2e3cb2c39ea449e55d1e6cd91117accca4588021"
+ resolved "https://registry.npmjs.org/tdigest/-/tdigest-0.1.1.tgz"
integrity sha1-Ljyyw56kSeVdHmzZEReszKRYgCE=
dependencies:
bintrees "1.0.1"
terser-webpack-plugin@^1.4.3:
version "1.4.5"
- resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b"
+ resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz"
integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==
dependencies:
cacache "^12.0.2"
@@ -7696,7 +8080,7 @@ terser-webpack-plugin@^1.4.3:
webpack-sources "^1.4.0"
worker-farm "^1.7.0"
-terser-webpack-plugin@^4.0.0:
+terser-webpack-plugin@^4.2.3:
version "4.2.3"
resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz#28daef4a83bd17c1db0297070adc07fc8cfc6a9a"
integrity sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ==
@@ -7713,7 +8097,7 @@ terser-webpack-plugin@^4.0.0:
terser@^4.1.2:
version "4.8.0"
- resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17"
+ resolved "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz"
integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==
dependencies:
commander "^2.20.0"
@@ -7722,7 +8106,7 @@ terser@^4.1.2:
terser@^5.3.4:
version "5.6.0"
- resolved "https://registry.yarnpkg.com/terser/-/terser-5.6.0.tgz#138cdf21c5e3100b1b3ddfddf720962f88badcd2"
+ resolved "https://registry.npmjs.org/terser/-/terser-5.6.0.tgz"
integrity sha512-vyqLMoqadC1uR0vywqOZzriDYzgEkNJFK4q9GeyOBHIbiECHiWLKcWfbQWAUaPfxkjDhapSlZB9f7fkMrvkVjA==
dependencies:
commander "^2.20.0"
@@ -7731,7 +8115,7 @@ terser@^5.3.4:
through2@^2.0.0:
version "2.0.5"
- resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
+ resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz"
integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==
dependencies:
readable-stream "~2.3.6"
@@ -7739,41 +8123,41 @@ through2@^2.0.0:
thunky@^1.0.2:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d"
+ resolved "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz"
integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==
timers-browserify@^2.0.4:
version "2.0.12"
- resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee"
+ resolved "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz"
integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==
dependencies:
setimmediate "^1.0.4"
timsort@^0.3.0:
version "0.3.0"
- resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4"
+ resolved "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz"
integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=
to-arraybuffer@^1.0.0:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
+ resolved "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz"
integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=
to-fast-properties@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
+ resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz"
integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
to-object-path@^0.3.0:
version "0.3.0"
- resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
+ resolved "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz"
integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=
dependencies:
kind-of "^3.0.2"
to-regex-range@^2.1.0:
version "2.1.1"
- resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
+ resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz"
integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=
dependencies:
is-number "^3.0.0"
@@ -7781,14 +8165,14 @@ to-regex-range@^2.1.0:
to-regex-range@^5.0.1:
version "5.0.1"
- resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
+ resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz"
integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
dependencies:
is-number "^7.0.0"
to-regex@^3.0.1, to-regex@^3.0.2:
version "3.0.2"
- resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
+ resolved "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz"
integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==
dependencies:
define-property "^2.0.2"
@@ -7798,64 +8182,32 @@ to-regex@^3.0.1, to-regex@^3.0.2:
toidentifier@1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
+ resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz"
integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
-tough-cookie@~2.5.0:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
- integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
- dependencies:
- psl "^1.1.28"
- punycode "^2.1.1"
-
-trim-newlines@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
- integrity sha1-WIeWa7WCpFA6QetST301ARgVphM=
-
-"true-case-path@^1.0.2":
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.3.tgz#f813b5a8c86b40da59606722b144e3225799f47d"
- integrity sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==
- dependencies:
- glob "^7.1.2"
-
ts-pnp@^1.1.6:
version "1.2.0"
- resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92"
+ resolved "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz"
integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==
tslib@^1.9.0:
version "1.14.1"
- resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
+ resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
tty-browserify@0.0.0:
version "0.0.0"
- resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
+ resolved "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz"
integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=
-tunnel-agent@^0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
- integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=
- dependencies:
- safe-buffer "^5.0.1"
-
turbolinks@^5.2.0:
version "5.2.0"
- resolved "https://registry.yarnpkg.com/turbolinks/-/turbolinks-5.2.0.tgz#e6877a55ea5c1cb3bb225f0a4ae303d6d32ff77c"
+ resolved "https://registry.npmjs.org/turbolinks/-/turbolinks-5.2.0.tgz"
integrity sha512-pMiez3tyBo6uRHFNNZoYMmrES/IaGgMhQQM+VFF36keryjb5ms0XkVpmKHkfW/4Vy96qiGW3K9bz0tF5sK9bBw==
-tweetnacl@^0.14.3, tweetnacl@~0.14.0:
- version "0.14.5"
- resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
- integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
-
type-is@~1.6.17, type-is@~1.6.18:
version "1.6.18"
- resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
+ resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz"
integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
dependencies:
media-typer "0.3.0"
@@ -7863,45 +8215,68 @@ type-is@~1.6.17, type-is@~1.6.18:
typedarray@^0.0.6:
version "0.0.6"
- resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
+ resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
typescript@^4.1.5:
version "4.1.5"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.5.tgz#123a3b214aaff3be32926f0d8f1f6e704eb89a72"
+ resolved "https://registry.npmjs.org/typescript/-/typescript-4.1.5.tgz"
integrity sha512-6OSu9PTIzmn9TCDiovULTnET6BgXtDYL4Gg4szY+cGsc3JP1dQL8qvE8kShTRx1NIw4Q9IBHlwODjkjWEtMUyA==
uc.micro@^1.0.1, uc.micro@^1.0.5:
version "1.0.6"
- resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac"
+ resolved "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz"
integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==
unicode-canonical-property-names-ecmascript@^1.0.4:
version "1.0.4"
- resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818"
+ resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz"
integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==
+unicode-canonical-property-names-ecmascript@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc"
+ integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==
+
unicode-match-property-ecmascript@^1.0.4:
version "1.0.4"
- resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c"
+ resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz"
integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==
dependencies:
unicode-canonical-property-names-ecmascript "^1.0.4"
unicode-property-aliases-ecmascript "^1.0.4"
+unicode-match-property-ecmascript@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3"
+ integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==
+ dependencies:
+ unicode-canonical-property-names-ecmascript "^2.0.0"
+ unicode-property-aliases-ecmascript "^2.0.0"
+
unicode-match-property-value-ecmascript@^1.2.0:
version "1.2.0"
- resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531"
+ resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz"
integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==
+unicode-match-property-value-ecmascript@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0"
+ integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==
+
unicode-property-aliases-ecmascript@^1.0.4:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4"
+ resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz"
integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==
+unicode-property-aliases-ecmascript@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd"
+ integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==
+
union-value@^1.0.0:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847"
+ resolved "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz"
integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==
dependencies:
arr-union "^3.1.0"
@@ -7911,46 +8286,46 @@ union-value@^1.0.0:
uniq@^1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
+ resolved "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz"
integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=
uniqs@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02"
+ resolved "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz"
integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI=
unique-filename@^1.1.1:
version "1.1.1"
- resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230"
+ resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz"
integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==
dependencies:
unique-slug "^2.0.0"
unique-slug@^2.0.0:
version "2.0.2"
- resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c"
+ resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz"
integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==
dependencies:
imurmurhash "^0.1.4"
universalify@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
+ resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz"
integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
unpipe@1.0.0, unpipe@~1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
+ resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz"
integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
unquote@~1.1.1:
version "1.1.1"
- resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544"
+ resolved "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz"
integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=
unset-value@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
+ resolved "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz"
integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=
dependencies:
has-value "^0.3.1"
@@ -7958,24 +8333,32 @@ unset-value@^1.0.0:
upath@^1.1.1:
version "1.2.0"
- resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894"
+ resolved "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz"
integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==
+update-browserslist-db@^1.0.13:
+ version "1.0.13"
+ resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4"
+ integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==
+ dependencies:
+ escalade "^3.1.1"
+ picocolors "^1.0.0"
+
uri-js@^4.2.2:
version "4.4.1"
- resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
+ resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz"
integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
dependencies:
punycode "^2.1.0"
urix@^0.1.0:
version "0.1.0"
- resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
+ resolved "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz"
integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
url-parse@^1.4.3, url-parse@^1.4.7:
version "1.5.1"
- resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.1.tgz#d5fa9890af8a5e1f274a2c98376510f6425f6e3b"
+ resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz"
integrity sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==
dependencies:
querystringify "^2.1.1"
@@ -7983,7 +8366,7 @@ url-parse@^1.4.3, url-parse@^1.4.7:
url@^0.11.0:
version "0.11.0"
- resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
+ resolved "https://registry.npmjs.org/url/-/url-0.11.0.tgz"
integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=
dependencies:
punycode "1.3.2"
@@ -7991,17 +8374,17 @@ url@^0.11.0:
use@^3.1.0:
version "3.1.1"
- resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
+ resolved "https://registry.npmjs.org/use/-/use-3.1.1.tgz"
integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+ resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
util.promisify@~1.0.0:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee"
+ resolved "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz"
integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==
dependencies:
define-properties "^1.1.3"
@@ -8011,80 +8394,63 @@ util.promisify@~1.0.0:
util@0.10.3:
version "0.10.3"
- resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
+ resolved "https://registry.npmjs.org/util/-/util-0.10.3.tgz"
integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk=
dependencies:
inherits "2.0.1"
util@^0.11.0:
version "0.11.1"
- resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61"
+ resolved "https://registry.npmjs.org/util/-/util-0.11.1.tgz"
integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==
dependencies:
inherits "2.0.3"
utils-merge@1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
+ resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz"
integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
uuid@^3.3.2, uuid@^3.4.0:
version "3.4.0"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
+ resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz"
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
v8-compile-cache@^2.1.1:
version "2.2.0"
- resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132"
+ resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz"
integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==
-validate-npm-package-license@^3.0.1:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
- integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
- dependencies:
- spdx-correct "^3.0.0"
- spdx-expression-parse "^3.0.0"
-
vary@~1.1.2:
version "1.1.2"
- resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
+ resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz"
integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
vendors@^1.0.0:
version "1.0.4"
- resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e"
+ resolved "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz"
integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==
-verror@1.10.0:
- version "1.10.0"
- resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
- integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=
- dependencies:
- assert-plus "^1.0.0"
- core-util-is "1.0.2"
- extsprintf "^1.2.0"
-
vm-browserify@^1.0.1:
version "1.1.2"
- resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0"
+ resolved "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz"
integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==
w3c-keyname@^2.2.0:
version "2.2.4"
- resolved "https://registry.yarnpkg.com/w3c-keyname/-/w3c-keyname-2.2.4.tgz#4ade6916f6290224cdbd1db8ac49eab03d0eef6b"
+ resolved "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.4.tgz"
integrity sha512-tOhfEwEzFLJzf6d1ZPkYfGj+FWhIpBux9ppoP3rlclw3Z0BZv3N7b7030Z1kYth+6rDuAsXUFr+d0VE6Ed1ikw==
watchpack-chokidar2@^2.0.1:
version "2.0.1"
- resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957"
+ resolved "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz"
integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==
dependencies:
chokidar "^2.1.8"
watchpack@^1.7.4:
version "1.7.5"
- resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453"
+ resolved "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz"
integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==
dependencies:
graceful-fs "^4.1.2"
@@ -8095,14 +8461,14 @@ watchpack@^1.7.4:
wbuf@^1.1.0, wbuf@^1.7.3:
version "1.7.3"
- resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df"
+ resolved "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz"
integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==
dependencies:
minimalistic-assert "^1.0.0"
webpack-assets-manifest@^3.1.1:
version "3.1.1"
- resolved "https://registry.yarnpkg.com/webpack-assets-manifest/-/webpack-assets-manifest-3.1.1.tgz#39bbc3bf2ee57fcd8ba07cda51c9ba4a3c6ae1de"
+ resolved "https://registry.npmjs.org/webpack-assets-manifest/-/webpack-assets-manifest-3.1.1.tgz"
integrity sha512-JV9V2QKc5wEWQptdIjvXDUL1ucbPLH2f27toAY3SNdGZp+xSaStAgpoMcvMZmqtFrBc9a5pTS1058vxyMPOzRQ==
dependencies:
chalk "^2.0"
@@ -8115,7 +8481,7 @@ webpack-assets-manifest@^3.1.1:
webpack-cli@^3.3.12:
version "3.3.12"
- resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.12.tgz#94e9ada081453cd0aa609c99e500012fd3ad2d4a"
+ resolved "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.12.tgz"
integrity sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag==
dependencies:
chalk "^2.4.2"
@@ -8132,7 +8498,7 @@ webpack-cli@^3.3.12:
webpack-dev-middleware@^3.7.2:
version "3.7.3"
- resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz#0639372b143262e2b84ab95d3b91a7597061c2c5"
+ resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz"
integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==
dependencies:
memory-fs "^0.4.1"
@@ -8143,7 +8509,7 @@ webpack-dev-middleware@^3.7.2:
webpack-dev-server@^3.11.2:
version "3.11.2"
- resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz#695ebced76a4929f0d5de7fd73fafe185fe33708"
+ resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz"
integrity sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ==
dependencies:
ansi-html "0.0.7"
@@ -8182,7 +8548,7 @@ webpack-dev-server@^3.11.2:
webpack-log@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f"
+ resolved "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz"
integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==
dependencies:
ansi-colors "^3.0.0"
@@ -8190,16 +8556,16 @@ webpack-log@^2.0.0:
webpack-sources@^1.0.0, webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3:
version "1.4.3"
- resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933"
+ resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz"
integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==
dependencies:
source-list-map "^2.0.0"
source-map "~0.6.1"
-webpack@^4.44.1:
- version "4.46.0"
- resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542"
- integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==
+webpack@^4.46.0:
+ version "4.47.0"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.47.0.tgz#8b8a02152d7076aeb03b61b47dad2eeed9810ebc"
+ integrity sha512-td7fYwgLSrky3fI1EuU5cneU4+pbH6GgOfuKNS1tNPcfdGinGELAqsb/BP4nnvZyKSG2i/xFGU7+n2PvZA8HJQ==
dependencies:
"@webassemblyjs/ast" "1.9.0"
"@webassemblyjs/helper-module-context" "1.9.0"
@@ -8227,7 +8593,7 @@ webpack@^4.44.1:
websocket-driver@>=0.5.1, websocket-driver@^0.7.4:
version "0.7.4"
- resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760"
+ resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz"
integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==
dependencies:
http-parser-js ">=0.5.1"
@@ -8236,38 +8602,31 @@ websocket-driver@>=0.5.1, websocket-driver@^0.7.4:
websocket-extensions@>=0.1.1:
version "0.1.4"
- resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42"
+ resolved "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz"
integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==
which-module@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
+ resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz"
integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
-which@1, which@^1.2.14, which@^1.2.9, which@^1.3.1:
+which@^1.2.14, which@^1.2.9, which@^1.3.1:
version "1.3.1"
- resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
+ resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz"
integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
dependencies:
isexe "^2.0.0"
-wide-align@^1.1.0:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
- integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==
- dependencies:
- string-width "^1.0.2 || 2"
-
worker-farm@^1.7.0:
version "1.7.0"
- resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8"
+ resolved "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz"
integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==
dependencies:
errno "~0.1.7"
wrap-ansi@^5.1.0:
version "5.1.0"
- resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09"
+ resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz"
integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==
dependencies:
ansi-styles "^3.2.0"
@@ -8276,49 +8635,44 @@ wrap-ansi@^5.1.0:
wrappy@1:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+ resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
ws@^6.2.1:
version "6.2.1"
- resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb"
+ resolved "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz"
integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==
dependencies:
async-limiter "~1.0.0"
xtend@^4.0.0, xtend@~4.0.1:
version "4.0.2"
- resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
+ resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz"
integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
y18n@^4.0.0:
version "4.0.1"
- resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4"
+ resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz"
integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==
-yallist@^2.1.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
- integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
-
yallist@^3.0.2:
version "3.1.1"
- resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
+ resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz"
integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
yallist@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
+ resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz"
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
yaml@^1.7.2:
version "1.10.0"
- resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e"
+ resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz"
integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==
yargs-parser@^13.1.2:
version "13.1.2"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38"
+ resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz"
integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==
dependencies:
camelcase "^5.0.0"
@@ -8326,7 +8680,7 @@ yargs-parser@^13.1.2:
yargs@^13.3.2:
version "13.3.2"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd"
+ resolved "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz"
integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==
dependencies:
cliui "^5.0.0"
@@ -8342,10 +8696,10 @@ yargs@^13.3.2:
yocto-queue@^0.1.0:
version "0.1.0"
- resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
+ resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz"
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
zepto@^1.2.0:
version "1.2.0"
- resolved "https://registry.yarnpkg.com/zepto/-/zepto-1.2.0.tgz#e127bd9e66fd846be5eab48c1394882f7c0e4f98"
+ resolved "https://registry.npmjs.org/zepto/-/zepto-1.2.0.tgz"
integrity sha1-4Se9nmb9hGvl6rSME5SIL3wOT5g=