diff --git a/.env.example b/.env
similarity index 91%
rename from .env.example
rename to .env
index f3cf48d9..480175f8 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,5 @@ AIRBRAKE_API_KEY=
GITLAB_URI=https://0xacab.org
GITLAB_PROJECT=
GITLAB_TOKEN=
+PGVER=15
+PGPID=/run/postgresql.pid
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..cb2766d3 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,33 +1,99 @@
-image: "gitea.nulo.in/sutty/panel:3.14.10-2.7.8-panel.sutty.nl"
+.apk-add: &apk-add
+- "apk add go-task diffutils"
+.disable-hainish: &disable-hainish
+- "rm -f .env.development"
+.cache-ruby: &cache-ruby
+- paths:
+ - "vendor/ruby"
+ - ".bundle"
+.cache-node: &cache-node
+- paths:
+ - "node_modules"
+.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/**/*"
+ stage: "deploy"
+ only:
+ - "rails"
+ - "17.3.alpine.panel.sutty.nl"
+ except:
+ - "schedules"
+ cache:
+ - *cache-ruby
+ - *cache-node
+ - *cache-task
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"
+ - "apk add brotli"
+ - *apk-add
+ - *disable-hainish
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"
+ - "go-task assets"
after_script:
- "git add public && git commit -m \"ci: assets [skip ci]\""
- "git push -o ci.skip"
+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:
+ - "./bin/modified_files | ./bin/with_extension rb | xargs -r go-task bundle -- exec rubocop"
+haml:
+ stage: "test"
+ cache:
+ - *cache-ruby
+ rules:
+ - if: "$CI_PIPELINE_SOURCE == 'merge_request_event'"
+ before_script:
+ - *apk-add
+ - *disable-hainish
+ script:
+ - "./bin/modified_files | ./bin/with_extension haml | xargs -r go-task bundle -- exec haml-lint"
diff --git a/.woodpecker.yml b/.woodpecker.yml
index 763a38f7..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,55 +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"
- - "git add public && git commit -m \"ci: assets [skip ci]\""
- - "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 c93ce866..a73a96cc 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,6 +1,6 @@
-ARG RUBY_VERSION=2.7
-ARG RUBY_PATCH=8
-ARG ALPINE_VERSION=3.14.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 813c7ebd..e43d6750 100644
--- a/Gemfile
+++ b/Gemfile
@@ -1,15 +1,9 @@
# frozen_string_literal: true
-if ENV['RAILS_ENV'] != 'production' && ENV['HAIN_ENV'].nil?
- puts 'Usa haini.sh para generar un entorno de trabajo reproducible'
-end
-
source ENV.fetch('GEMS_SOURCE', 'https://17.3.alpine.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
@@ -43,8 +37,9 @@ gem 'commonmarker'
gem 'devise'
gem 'devise-i18n'
gem 'devise_invitable'
-gem 'distributed-press-api-client', '~> 0.3.0rc0'
-gem 'njalla-api-client', '~> 0.2.0'
+gem 'redis-client'
+gem 'hiredis-client'
+gem 'distributed-press-api-client', '~> 0.4.0rc2'
gem 'email_address', git: 'https://github.com/fauno/email_address', branch: 'i18n'
gem 'exception_notification'
gem 'fast_blank'
@@ -72,6 +67,7 @@ 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 'ruby-brs'
gem 'rugged', '1.5.0.1'
gem 'git_clone_url'
gem 'concurrent-ruby-ext'
@@ -84,6 +80,9 @@ gem 'yaml_db', git: 'https://0xacab.org/sutty/yaml_db.git'
gem 'kaminari'
gem 'device_detector'
+gem 'after_commit_everywhere', '~> 1.0'
+gem 'aasm'
+
# database
gem 'hairtrigger'
gem 'pg'
@@ -113,6 +112,7 @@ end
group :development, :test do
gem 'derailed_benchmarks'
+ gem 'dotenv-rails'
gem 'pry'
gem 'capybara'
gem 'selenium-webdriver'
@@ -120,8 +120,9 @@ group :development, :test do
end
group :development do
- gem 'reek'
+ 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 79fbdde6..046a089b 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -25,81 +25,98 @@ GIT
groupdate (>= 5.2)
GEM
- remote: https://gems.sutty.nl/
+ remote: https://17.3.alpine.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.4)
+ actionpack (= 6.1.7.4)
+ activesupport (= 6.1.7.4)
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.4)
+ actionpack (= 6.1.7.4)
+ activejob (= 6.1.7.4)
+ activerecord (= 6.1.7.4)
+ activestorage (= 6.1.7.4)
+ activesupport (= 6.1.7.4)
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.4)
+ actionpack (= 6.1.7.4)
+ actionview (= 6.1.7.4)
+ activejob (= 6.1.7.4)
+ activesupport (= 6.1.7.4)
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.4)
+ actionview (= 6.1.7.4)
+ activesupport (= 6.1.7.4)
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.4)
+ actionpack (= 6.1.7.4)
+ activerecord (= 6.1.7.4)
+ activestorage (= 6.1.7.4)
+ activesupport (= 6.1.7.4)
nokogiri (>= 1.8.5)
- actionview (6.1.7.3)
- activesupport (= 6.1.7.3)
+ actionview (6.1.7.4)
+ activesupport (= 6.1.7.4)
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.4)
+ activesupport (= 6.1.7.4)
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.4)
+ activesupport (= 6.1.7.4)
+ activerecord (6.1.7.4)
+ activemodel (= 6.1.7.4)
+ activesupport (= 6.1.7.4)
+ activestorage (6.1.7.4)
+ actionpack (= 6.1.7.4)
+ activejob (= 6.1.7.4)
+ activerecord (= 6.1.7.4)
+ activesupport (= 6.1.7.4)
marcel (~> 1.0)
mini_mime (>= 1.1.0)
- activesupport (6.1.7.3)
+ activesupport (6.1.7.4)
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)
- bcrypt (3.1.19-x86_64-linux-musl)
+ autoprefixer-rails (10.4.13.0)
+ execjs (~> 2)
+ 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)
chartkick (>= 3.2)
railties (>= 5)
safely_block (>= 0.1.1)
- brakeman (5.4.1)
+ bootstrap (4.6.2)
+ autoprefixer-rails (>= 9.1.0)
+ popper_js (>= 1.16.1, < 2)
+ sassc-rails (>= 2.0.0)
+ brakeman (6.1.1)
+ racc
builder (3.2.4)
+ bundler-audit (0.9.1)
+ bundler (>= 1.2.0, < 3)
+ thor (~> 1.0)
capybara (2.18.0)
addressable
mini_mime (>= 0.1.3)
@@ -116,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)
@@ -123,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)
@@ -137,8 +155,8 @@ GEM
rake (> 10, < 14)
ruby-statistics (>= 2.1)
thor (>= 0.19, < 2)
- device_detector (1.1.1)
- devise (4.9.2)
+ device_detector (1.1.2)
+ devise (4.9.3)
bcrypt (~> 3.0)
orm_adapter (~> 0.1)
railties (>= 4.1.0)
@@ -146,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.3.0rc0)
+ distributed-press-api-client (0.4.0rc2)
addressable (~> 2.3, >= 2.3.0)
climate_control
dry-schema
httparty (~> 0.18)
+ httparty-cache (~> 0.0.4)
json (~> 2.1, >= 2.1.0)
jwt (~> 2.6.0)
dotenv (2.8.1)
@@ -162,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)
@@ -174,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)
@@ -182,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)
@@ -198,6 +218,7 @@ GEM
exception_notification (4.5.0)
actionmailer (>= 5.2, < 8)
activesupport (>= 5.2, < 8)
+ execjs (2.8.1)
factory_bot (6.2.1)
activesupport (>= 5.0.0)
factory_bot_rails (6.2.0)
@@ -214,25 +235,25 @@ GEM
ffi (~> 1.0)
git_clone_url (2.0.0)
uri-ssh_git (>= 2.0)
- globalid (1.1.0)
- activesupport (>= 5.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)
@@ -246,10 +267,14 @@ 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)
http_parser.rb (0.8.0-x86_64-linux-musl)
httparty (0.21.0)
mini_mime (>= 1.0.0)
multi_xml (>= 0.5.2)
+ httparty-cache (0.0.5)
+ httparty (~> 0.18)
i18n (1.14.1)
concurrent-ruby (~> 1.0)
icalendar (2.8.0)
@@ -281,7 +306,7 @@ GEM
terminal-table (~> 2.0)
jekyll-commonmark (1.4.0)
commonmarker (~> 0.22)
- jekyll-images (0.4.1)
+ jekyll-images (0.4.4)
jekyll (~> 4)
ruby-filemagic (~> 0.7)
ruby-vips (~> 2)
@@ -291,7 +316,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)
@@ -309,7 +334,6 @@ GEM
rexml
kramdown-parser-gfm (1.1.0)
kramdown (~> 2.0)
- kwalify (0.7.2)
launchy (2.5.2)
addressable (~> 2.8)
letter_opener (1.8.1)
@@ -321,12 +345,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)
@@ -340,96 +364,97 @@ GEM
method_source (1.0.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.5)
+ minitest (5.21.1)
mobility (1.2.9)
i18n (>= 0.6.10, < 2)
request_store (~> 1.0)
multi_xml (0.6.0)
- net-imap (0.3.4)
+ net-imap (0.4.9)
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.4.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.0-x86_64-linux-musl)
+ nokogiri (1.16.0-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)
+ popper_js (1.16.1)
prometheus_exporter (2.0.8)
webrick
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.4)
+ puma (6.4.2-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)
+ racc (1.7.3-x86_64-linux-musl)
+ rack (2.2.8)
rack-cors (2.0.1)
rack (>= 2.0.0)
rack-mini-profiler (3.1.0)
rack (>= 1.2.0)
- rack-proxy (0.7.6)
+ 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.4)
+ actioncable (= 6.1.7.4)
+ actionmailbox (= 6.1.7.4)
+ actionmailer (= 6.1.7.4)
+ actionpack (= 6.1.7.4)
+ actiontext (= 6.1.7.4)
+ actionview (= 6.1.7.4)
+ activejob (= 6.1.7.4)
+ activemodel (= 6.1.7.4)
+ activerecord (= 6.1.7.4)
+ activestorage (= 6.1.7.4)
+ activesupport (= 6.1.7.4)
bundler (>= 1.15.0)
- railties (= 6.1.7.3)
+ railties (= 6.1.7.4)
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.4)
+ actionpack (= 6.1.7.4)
+ activesupport (= 6.1.7.4)
method_source
rake (>= 12.2)
thor (~> 1.0)
rainbow (3.1.1)
- rake (13.0.6)
+ rake (13.1.0)
rb-fsevent (0.11.2)
rb-inotify (0.10.1)
ffi (~> 1.0)
@@ -441,6 +466,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)
@@ -450,17 +477,13 @@ GEM
redis-store (>= 1.2, < 2)
redis-store (1.9.2)
redis (>= 4, < 6)
- reek (6.1.4)
- kwalify (~> 0.7.0)
- parser (~> 3.2.0)
- rainbow (>= 2.0, < 4.0)
- 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.2.6)
rgl (0.6.3)
pairing_heap (>= 0.3.0)
rexml (~> 3.2, >= 3.2.4)
@@ -476,16 +499,19 @@ 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)
ruby2ruby (2.5.0)
ruby_parser (~> 3.1)
@@ -499,6 +525,12 @@ GEM
errbase (>= 0.1.1)
sassc (2.4.0-x86_64-linux-musl)
ffi (~> 1.9)
+ sassc-rails (2.1.2)
+ railties (>= 4.0.0)
+ sassc (>= 2.0)
+ sprockets (> 3.0)
+ sprockets-rails
+ tilt
selenium-webdriver (4.9.1)
rexml (~> 3.2, >= 3.2.5)
rubyzip (>= 1.2.2, < 3.0)
@@ -512,14 +544,14 @@ GEM
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 (>= 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)
@@ -528,21 +560,23 @@ 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.0)
+ tilt (2.3.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)
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
+ uglifier (4.2.0)
+ 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)
@@ -567,16 +601,21 @@ GEM
websocket-extensions (0.1.5)
xpath (3.2.0)
nokogiri (~> 1.8)
- zeitwerk (2.6.8)
+ yard (0.9.34)
+ zeitwerk (2.6.12)
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
chartkick
commonmarker
@@ -587,7 +626,7 @@ DEPENDENCIES
devise
devise-i18n
devise_invitable
- distributed-press-api-client (~> 0.3.0rc0)
+ distributed-press-api-client (~> 0.4.0rc2)
dotenv-rails
down
ed25519
@@ -603,6 +642,7 @@ DEPENDENCIES
haml-lint
hamlit-rails
hiredis
+ hiredis-client
httparty
icalendar
image_processing
@@ -610,7 +650,6 @@ DEPENDENCIES
jbuilder (~> 2.5)
jekyll (~> 4.2.0)
jekyll-commonmark (~> 1.4.0)
- jekyll-data
jekyll-images
jekyll-include-cache
kaminari
@@ -623,7 +662,6 @@ DEPENDENCIES
mini_magick
mobility
net-ssh
- njalla-api-client (~> 0.2.0)
nokogiri
pg
pg_search
@@ -638,15 +676,17 @@ DEPENDENCIES
rails-i18n
rails_warden
redis (~> 4.0)
+ redis-client
redis-rails
- reek
rgl
rollups!
rubocop-rails
+ ruby-brs
rubyzip
rugged (= 1.5.0.1)
safe_yaml
safely_block (~> 0.3.0)
+ sassc-rails
selenium-webdriver
sourcemap
spring
@@ -658,10 +698,12 @@ DEPENDENCIES
terminal-table
timecop
turbolinks (~> 5)
+ uglifier (>= 1.3.0)
validates_hostname
web-console
webpacker
yaml_db!
+ yard
RUBY VERSION
ruby 3.1.4p223
diff --git a/Makefile b/Makefile
deleted file mode 100644
index b2cb2bf0..00000000
--- a/Makefile
+++ /dev/null
@@ -1,143 +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/"
-
-assets: public/packs/manifest.json.br ## Compilar los assets
- git add public/assets/ public/packs/ && NADA=true git commit -m "assets [skip ci]" ; true
-
-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 := haini.sh 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 4aa6f2e9..72a986a3 100644
--- a/Procfile
+++ b/Procfile
@@ -1,5 +1,5 @@
cleanup: bundle exec rake cleanup:everything
-stats: bundle exec rake stats:process_all
distributed_press_tokens_renew: bundle exec rake distributed_press:tokens:renew
-que: daemonize -c /srv/ -p /srv/tmp/que.pid -u rails /usr/local/bin/syslogize bundle exec que
emergency_cleanup: bundle exec rake cleanup:everything BEFORE=7
+que: daemonize -c /srv/ -p /srv/tmp/que.pid -u rails /usr/local/bin/syslogize bundle exec que
+stats: bundle exec rake stats:process_all
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..c2d72472
--- /dev/null
+++ b/Taskfile.yaml
@@ -0,0 +1,185 @@
+---
+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"
diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss
index 2a93444a..e6c85b23 100644
--- a/app/assets/stylesheets/application.scss
+++ b/app/assets/stylesheets/application.scss
@@ -54,6 +54,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
@@ -196,7 +215,7 @@ fieldset {
&[type=button] {
@extend .btn;
- @extend .btn-info;
+ @extend .btn-secondary;
@extend .m-0;
}
}
@@ -210,10 +229,6 @@ svg {
}
.btn {
- background-color: var(--foreground);
- color: var(--background);
- border: none;
- border-radius: 0;
margin-right: 0.3rem;
margin-bottom: 0.3rem;
@@ -253,7 +268,7 @@ svg {
color: $magenta;
}
- .btn {
+ .btn-secondary {
background-color: $white;
color: $black;
border: none;
diff --git a/app/assets/stylesheets/dark.scss b/app/assets/stylesheets/dark.scss
index 9893c70b..59e15180 100644
--- a/app/assets/stylesheets/dark.scss
+++ b/app/assets/stylesheets/dark.scss
@@ -7,3 +7,22 @@ $cyan: #13fefe;
--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;
+ }
+}
diff --git a/app/controllers/active_storage/direct_uploads_controller_decorator.rb b/app/controllers/active_storage/direct_uploads_controller_decorator.rb
index c62dae2a..5ac58ecf 100644
--- a/app/controllers/active_storage/direct_uploads_controller_decorator.rb
+++ b/app/controllers/active_storage/direct_uploads_controller_decorator.rb
@@ -19,7 +19,7 @@ module ActiveStorage
# 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
+ 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 3e74fe1b..ec3ac0b4 100644
--- a/app/controllers/active_storage/disk_controller_decorator.rb
+++ b/app/controllers/active_storage/disk_controller_decorator.rb
@@ -16,12 +16,14 @@ module ActiveStorage
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)
- 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)
@@ -59,6 +61,11 @@ module ActiveStorage
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/api/v1/notices_controller.rb b/app/controllers/api/v1/notices_controller.rb
index 3d74a48f..8f384f1a 100644
--- a/app/controllers/api/v1/notices_controller.rb
+++ b/app/controllers/api/v1/notices_controller.rb
@@ -9,10 +9,10 @@ module Api
# Generar un stacktrace en segundo plano y enviarlo por correo
# solo si la API key es verificable. Del otro lado siempre
# respondemos con lo mismo.
- def create
+ def create
if (site&.airbrake_valid? airbrake_token) && !detected_device.bot?
BacktraceJob.perform_later site_id: params[:site_id],
- params: airbrake_params.to_h
+ params: airbrake_params.to_h
end
render status: 201, json: { id: 1, url: '' }
@@ -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
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..c71c4922
--- /dev/null
+++ b/app/controllers/api/v1/webhooks/social_inbox_controller.rb
@@ -0,0 +1,165 @@
+# 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
+
+ # Cuando una actividad ingresa en la cola de moderación, la
+ # recibimos por acá
+ #
+ # Vamos a recibir Create, Update, Delete, Follow, Undo 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
+ # Devuelve un error si el token no es válido
+ usuarie.present?
+
+ ActivityPub.transaction do
+ # Crea todos los registros necesarios y actualiza el estado
+ actor.present?
+ instance.present?
+ object.present?
+ activity_pub.present?
+ activity.update_activity_pub_state!
+ end
+ rescue ActiveRecord::RecordInvalid => e
+ ExceptionNotifier.notify_exception(e,
+ data: { site: site.name, usuarie: usuarie.email,
+ activity: original_activity })
+ ensure
+ head :accepted
+ end
+
+ # Cuando aprobamos una actividad, recibimos la confirmación y
+ # cambiamos el estado.
+ def onapproved
+ ActivityPub.transaction do
+ activity_pub.approve! if activity_pub.waiting?
+ end
+
+ head :accepted
+ end
+
+ # Cuando rechazamos una actividad, recibimos la confirmación y
+ # cambiamos el estado
+ def onrejected
+ ActivityPub.transaction do
+ activity_pub.reject! if activity_pub.waiting?
+ end
+
+ head :accepted
+ 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 ||=
+ case original_activity[:object]
+ when String then original_activity[:object]
+ when Hash then original_activity.dig(:object, :id)
+ end
+ ensure
+ raise ActiveRecord::RecordNotFound, 'object id missing' unless @object_uri
+ 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.find_or_initialize_by(uri: object_uri).tap do |o|
+ # XXX: Si el objeto es una actividad, esto siempre va a ser
+ # Generic
+ o.type ||= 'ActivityPub::Object::Generic'
+ o.content = original_object if object_embedded?
+
+ o.save!
+
+ # XXX: el objeto necesita ser guardado antes de poder
+ # procesarlo
+ ActivityPub::FetchJob.perform_later(site: site, object: o) 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.find_or_create_by!(site: site, object: object)
+ end
+
+ # Crea la actividad y la vincula con el estado
+ #
+ # @return [ActivityPub::Activity]
+ def activity
+ @activity ||= ActivityPub::Activity.type_from(original_activity).new(uri: original_activity[:id],
+ activity_pub: activity_pub).tap do |a|
+ a.content = original_activity.dup
+ a.content[:object] = object.uri
+ a.save!
+ end
+ end
+
+ # Actor, si no hay instancia, la crea en el momento
+ #
+ # @return [Actor]
+ def actor
+ @actor ||= ActivityPub::Actor.find_or_initialize_by(uri: original_activity[:actor]).tap do |a|
+ next if a.instance
+
+ a.instance = ActivityPub::Instance.find_or_create_by(hostname: URI.parse(a.uri).hostname)
+ a.save!
+ end
+ end
+
+ # Descubre la actividad recibida, generando un error si la
+ # actividad no está dirigida a nosotres.
+ #
+ # @todo Validar formato
+ # @return [Hash]
+ def original_activity
+ @original_activity ||= FastJsonparser.parse(request.raw_post).tap do |activity|
+ raise '@context missing' unless activity[:@context].presence
+ raise 'id missing' unless activity[:id].presence
+ raise 'object missing' unless activity[:object].presence
+ rescue RuntimeError => e
+ raise ActiveRecord::RecordNotFound, e.message
+ end
+ end
+
+ # @return [Hash,String]
+ def original_object
+ @original_object ||= original_activity[:object].dup
+ end
+ end
+ end
+ end
+end
diff --git a/app/controllers/api/v1/webhooks_controller.rb b/app/controllers/api/v1/webhooks_controller.rb
deleted file mode 100644
index 36e6a6d1..00000000
--- a/app/controllers/api/v1/webhooks_controller.rb
+++ /dev/null
@@ -1,77 +0,0 @@
-# frozen_string_literal: true
-
-module Api
- module V1
- # Recibe webhooks y lanza un PullJob
- class WebhooksController < BaseController
- # responde con forbidden si falla la validación del token
- rescue_from ActiveRecord::RecordNotFound, with: :platforms_answer
-
- # 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
-
- private
-
- # encuentra el sitio a partir de la url
- def site
- @site ||= Site.find_by_name!(params[:site_id])
- end
-
- # valida el token que envía la plataforma del webhook
- #
- # @return [String]
- def token
- @token ||=
- begin
- # Gitlab
- if request.headers['X-Gitlab-Token'].present?
- request.headers['X-Gitlab-Token']
- # Github
- elsif request.headers['X-Hub-Signature-256'].present?
- token_from_signature(request.headers['X-Hub-Signature-256'], 'sha256=')
- # Gitea
- elsif request.headers['X-Gitea-Signature'].present?
- token_from_signature(request.headers['X-Gitea-Signature'])
- else
- raise ActiveRecord::RecordNotFound, 'proveedor no soportado'
- end
- end
- end
-
- # valida token a partir de firma de webhook
- #
- # @return [String, Boolean]
- def token_from_signature(signature, prepend = '')
- payload = request.body.read
- 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.tap do |t|
- raise ActiveRecord::RecordNotFound, 'token no encontrado' if t.nil?
- end
- end
-
- # encuentra le usuarie
- 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
diff --git a/app/controllers/sites_controller.rb b/app/controllers/sites_controller.rb
index 17287eb0..bec42b39 100644
--- a/app/controllers/sites_controller.rb
+++ b/app/controllers/sites_controller.rb
@@ -110,27 +110,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/jobs/activity_pub/fetch_job.rb b/app/jobs/activity_pub/fetch_job.rb
new file mode 100644
index 00000000..b6c45026
--- /dev/null
+++ b/app/jobs/activity_pub/fetch_job.rb
@@ -0,0 +1,28 @@
+# 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
+ def perform(site:, object:)
+ ActivityPub::Object.transaction do
+ 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?
+ return unless response.ok?
+ return if response.miss? && object.content.present?
+
+ content = FastJsonparser.parse(response.body)
+
+ object.update(content: content, type: ActivityPub::Object.type_from(content).name)
+ end
+ end
+ end
+end
diff --git a/app/jobs/deploy_job.rb b/app/jobs/deploy_job.rb
index 54a67093..1476315d 100644
--- a/app/jobs/deploy_job.rb
+++ b/app/jobs/deploy_job.rb
@@ -56,6 +56,10 @@ class DeployJob < ApplicationJob
rescue URI::Error
nil
end.compact
+
+ if d == @site.deployment_list.last && !status
+ raise DeployException, 'Falló la compilación'
+ end
rescue StandardError => e
status = false
seconds ||= 0
diff --git a/app/jobs/git_pull_job.rb b/app/jobs/git_pull_job.rb
index 1dab07bf..16e2fe5b 100644
--- a/app/jobs/git_pull_job.rb
+++ b/app/jobs/git_pull_job.rb
@@ -1,7 +1,6 @@
# frozen_string_literal: true
-# Permite traer los cambios desde webhooks
-
+# Permite traer los cambios desde el repositorio remoto
class GitPullJob < ApplicationJob
# @param :site [Site]
# @param :usuarie [Usuarie]
@@ -9,9 +8,20 @@ class GitPullJob < ApplicationJob
# @return [nil]
def perform(site, usuarie, message)
return unless site.repository.origin
- return unless site.repository.fetch.positive?
- site.repository.merge(usuarie, message)
+ site.repository.fetch
+
+ return if site.repository.up_to_date?
+
+ if site.repository.fast_forward?
+ site.repository.fast_forward!
+ else
+ site.repository.merge(usuarie, message)
+ end
+
+ site.repository.git_lfs_checkout
site.reindex_changes!
+
+ nil
end
end
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/models/activity_pub.rb b/app/models/activity_pub.rb
new file mode 100644
index 00000000..df8e5c5c
--- /dev/null
+++ b/app/models/activity_pub.rb
@@ -0,0 +1,62 @@
+# 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.
+#
+# @see {https://www.w3.org/TR/activitypub/#client-to-server-interactions}
+class ActivityPub < ApplicationRecord
+ include AASM
+
+ belongs_to :site
+ belongs_to :object, polymorphic: true
+ 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] }
+
+ aasm do
+ # Todavía no hay una decisión sobre el objeto
+ state :paused, initial: true
+ # Estamos esperando respuesta desde la Social Inbox
+ state :waiting
+ # 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
+
+ # 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
+
+ before do
+ object.update(content: {}) unless object.content.empty?
+ end
+ end
+
+ # Si un objeto previamente aprobado fue actualizado, volvemos a
+ # pausarlo.
+ event :pause do
+ transitions from: %i[waiting approved rejected], to: :paused
+ end
+
+ # La actividad se aprueba
+ event :approve do
+ transitions from: :waiting, to: :approved
+ end
+
+ # La actividad fue rechazada
+ event :reject do
+ transitions from: :waiting, to: :rejected
+ end
+ end
+end
diff --git a/app/models/activity_pub/activity.rb b/app/models/activity_pub/activity.rb
new file mode 100644
index 00000000..5ee3d2d1
--- /dev/null
+++ b/app/models/activity_pub/activity.rb
@@ -0,0 +1,31 @@
+# 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
+ has_one :object, through: :activity_pub
+
+ validates :activity_pub_id, presence: true
+
+ # 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/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..351dd3cb
--- /dev/null
+++ b/app/models/activity_pub/activity/delete.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+class ActivityPub
+ class Activity
+ class Delete < ActivityPub::Activity
+ # Si estamos eliminando el objeto, tenemos que vaciar su contenido y
+ # cambiar el estado a borrado.
+ def update_activity_pub_state!
+ activity_pub.remove!
+ 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..e383490a
--- /dev/null
+++ b/app/models/activity_pub/activity/follow.rb
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+# = Follow =
+#
+# Una actividad de seguimiento se refiere siempre a une actore (el
+# sitio) y proviene de otre actore.
+class ActivityPub
+ class Activity
+ class Follow < ActivityPub::Activity; 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/undo.rb b/app/models/activity_pub/activity/undo.rb
new file mode 100644
index 00000000..18fbff5e
--- /dev/null
+++ b/app/models/activity_pub/activity/undo.rb
@@ -0,0 +1,27 @@
+# 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.
+ #
+ # @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..e79a596a
--- /dev/null
+++ b/app/models/activity_pub/actor.rb
@@ -0,0 +1,15 @@
+# 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 :activity_pubs, as: :object
+ 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..bc30330c
--- /dev/null
+++ b/app/models/activity_pub/concerns/json_ld_concern.rb
@@ -0,0 +1,34 @@
+# frozen_string_literal: true
+
+class ActivityPub
+ module Concerns
+ module JsonLdConcern
+ extend ActiveSupport::Concern
+
+ included do
+ validates :uri, presence: true, uniqueness: true
+
+ # 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/instance.rb b/app/models/activity_pub/instance.rb
new file mode 100644
index 00000000..b13b8676
--- /dev/null
+++ b/app/models/activity_pub/instance.rb
@@ -0,0 +1,23 @@
+# 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: true
+
+ has_many :activity_pubs
+ has_many :actors
+
+ aasm do
+ state :paused, initial: true
+ state :allowed
+ state :blocked
+ 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..898d5375
--- /dev/null
+++ b/app/models/activity_pub/object.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+# Almacena objetos de ActivityPub, como Note, Article, etc.
+class ActivityPub
+ class Object < ApplicationRecord
+ include ActivityPub::Concerns::JsonLdConcern
+
+ has_many :activity_pubs, as: :object
+ 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..99ac935c
--- /dev/null
+++ b/app/models/activity_pub/object/application.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+# = Application =
+#
+# Una aplicación o instancia
+class ActivityPub
+ class Object
+ class Application < ActivityPub::Object; 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/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/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..e3385232
--- /dev/null
+++ b/app/models/activity_pub/object/organization.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+# = Organization =
+#
+# Una organización
+class ActivityPub
+ class Object
+ class Organization < 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..a6a85d43
--- /dev/null
+++ b/app/models/activity_pub/object/person.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+# = Person =
+#
+# Una persona, el perfil de une actore
+class ActivityPub
+ class Object
+ class Person < ActivityPub::Object; end
+ end
+end
diff --git a/app/models/deploy.rb b/app/models/deploy.rb
index 486e709b..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
@@ -55,20 +57,9 @@ class Deploy < ApplicationRecord
site.path
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['LANG'],
- })
+ # XXX: Ver DeployLocal#bundle
+ def gems_dir
+ @gems_dir ||= Rails.root.join('_storage', 'gems', site.name)
end
# Un entorno que solo tiene lo que necesitamos
@@ -83,7 +74,7 @@ class Deploy < ApplicationRecord
'HOME' => home_dir,
'PATH' => paths.join(':'),
'JEKYLL_ENV' => Rails.env,
- 'LANG' => ENV['LANG'],
+ 'LANG' => ENV.fetch('LANG', nil)
})
end
@@ -148,7 +139,7 @@ class Deploy < ApplicationRecord
# provisto con el archivo como parámetro
#
# @param :content [String]
- def with_tempfile(content, &block)
+ def with_tempfile(content)
Tempfile.create(SecureRandom.hex) do |file|
file.write content.to_s
file.rewind
diff --git a/app/models/deploy_distributed_press.rb b/app/models/deploy_distributed_press.rb
index 10d6b9b1..addb817d 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?
@@ -101,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
@@ -147,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]
@@ -187,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 311fdf83..a3b783ca 100644
--- a/app/models/deploy_local.rb
+++ b/app/models/deploy_local.rb
@@ -7,11 +7,6 @@ class DeployLocal < Deploy
before_destroy :remove_destination!
- def git_lfs(output: false)
- run %(git lfs fetch), output: output
- run %(git lfs checkout), output: output
- end
-
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?
@@ -21,6 +16,11 @@ class DeployLocal < Deploy
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
#
diff --git a/app/models/deploy_social_distributed_press.rb b/app/models/deploy_social_distributed_press.rb
index db555ab7..7f761e46 100644
--- a/app/models/deploy_social_distributed_press.rb
+++ b/app/models/deploy_social_distributed_press.rb
@@ -5,7 +5,9 @@ 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]
+ DEPENDENCIES = %i[deploy_distributed_press deploy_rsync deploy_full_rsync].freeze
+
+ after_save :create_hooks!
# Envía las notificaciones
def deploy(output: false)
@@ -52,4 +54,45 @@ class DeploySocialDistributedPress < Deploy
def flags_for_build(**args)
"--key #{Shellwords.escape args[:private_key].path}"
end
+
+ private
+
+ # Obtiene el hostname de la API de Sutty
+ #
+ # @return [String]
+ def api_hostname
+ Rails.application.routes.default_url_options[:host].sub('panel', 'api')
+ end
+
+ # 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: api_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.ok?
+ rescue ArgumentError => e
+ ExceptionNotifier.notify_exception(e, data: { site_id: site.name, usuarie_id: rol.usuarie_id })
+ 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/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/post.rb b/app/models/post.rb
index c1b3d53b..6307e259 100644
--- a/app/models/post.rb
+++ b/app/models/post.rb
@@ -132,8 +132,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
diff --git a/app/models/rol.rb b/app/models/rol.rb
index 37332400..c9a92515 100644
--- a/app/models/rol.rb
+++ b/app/models/rol.rb
@@ -11,6 +11,7 @@ class Rol < ApplicationRecord
belongs_to :usuarie
belongs_to :site
+ has_many :deploys
validates_inclusion_of :rol, in: ROLES
diff --git a/app/models/site.rb b/app/models/site.rb
index 0139d8ed..b6be85d3 100644
--- a/app/models/site.rb
+++ b/app/models/site.rb
@@ -54,8 +54,7 @@ class Site < ApplicationRecord
before_create :clone_skel!
# Elimina el directorio al destruir un sitio
before_destroy :remove_directories!
- # Cambiar el nombre del directorio
- before_update :update_name!
+
before_save :add_private_key_if_missing!
# Guardar la configuración si hubo cambios
after_save :sync_attributes_with_config!
@@ -159,19 +158,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
@@ -286,7 +285,7 @@ class Site < ApplicationRecord
end
def jekyll?
- File.directory? path
+ ::File.directory? path
end
def jekyll
@@ -304,7 +303,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
@@ -332,7 +331,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' => '')
@@ -357,7 +356,7 @@ 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
@@ -387,7 +386,7 @@ class Site < ApplicationRecord
end
def gemfile_lock_path?
- File.exist? gemfile_lock_path
+ ::File.exist? gemfile_lock_path
end
private
@@ -413,12 +412,6 @@ class Site < ApplicationRecord
FileUtils.rm_rf path
end
- def update_name!
- return unless name_changed?
-
- FileUtils.mv path_was, path
- reload_jekyll!
- end
# Sincroniza algunos atributos del sitio con su configuración y
# guarda los cambios
@@ -429,8 +422,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
@@ -484,6 +477,12 @@ class Site < ApplicationRecord
I18n.t('activerecord.errors.models.site.attributes.design_id.layout_incompatible.error'))
end
+ def run_in_path(&block)
+ Site.one_at_a_time.synchronize do
+ Dir.chdir path, &block
+ end
+ end
+
# Instala las gemas cuando es necesario:
#
# * El sitio existe
@@ -499,6 +498,7 @@ class Site < ApplicationRecord
if !gems_installed? || gemfile_updated? || gemfile_lock_updated?
deploy_local.bundle
touch
+ FileUtils.touch(gemfile_path)
end
end
@@ -519,12 +519,16 @@ class Site < ApplicationRecord
# Detecta si el Gemfile fue modificado
def gemfile_updated?
- updated_at < File.mtime(File.join(path, 'Gemfile'))
+ updated_at < ::File.mtime(gemfile_path)
+ end
+
+ def gemfile_path
+ @gemfile_path ||= ::File.join(path, 'Gemfile')
end
# @return [String]
def gemfile_lock_path
- @gemfile_lock_path ||= File.join(path, 'Gemfile.lock')
+ @gemfile_lock_path ||= ::File.join(path, 'Gemfile.lock')
end
# Detecta si el Gemfile.lock fue modificado con respecto al sitio o al
@@ -532,8 +536,8 @@ class Site < ApplicationRecord
def gemfile_lock_updated?
return false unless gemfile_lock_path?
- [updated_at, File.mtime(File.join(path, 'Gemfile'))].any? do |compare|
- compare < File.mtime(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/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/repository.rb b/app/models/site/repository.rb
index acbf6553..e77aded9 100644
--- a/app/models/site/repository.rb
+++ b/app/models/site/repository.rb
@@ -75,13 +75,18 @@ class Site
# 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
+ # Trae todos los archivos desde LFS
+ #
+ # @return [Boolean]
+ def git_lfs_checkout
+ git_sh('git', 'lfs', 'fetch', 'origin', default_branch)
+ git_sh('git', 'lfs', 'checkout')
+ end
+
# El último commit
#
# @return [Rugged::Commit]
@@ -111,10 +116,30 @@ class Site
walker.each.to_a
end
- # Hay commits sin aplicar?
- def needs_pull?
- fetch
- !commits.empty?
+ # Detecta si hay que hacer un pull o no
+ #
+ # @return [Boolean]
+ def up_to_date?
+ rugged.merge_analysis(remote_head_commit).include?(:up_to_date)
+ end
+
+ # Detecta si es posible adelantar la historia local a la remota o
+ # necesitamos un merge
+ #
+ # @return [Boolean]
+ def fast_forward?
+ rugged.merge_analysis(remote_head_commit).include?(:fastforward)
+ end
+
+ # Mueve la historia local a la remota
+ #
+ # @see {https://stackoverflow.com/a/27077322}
+ # @return [nil]
+ def fast_forward!
+ rugged.checkout_tree(remote_head_commit)
+ rugged.references.update(rugged.head.resolve, remote_head_commit.oid)
+
+ nil
end
# Guarda los cambios en git
diff --git a/app/models/site/social_distributed_press.rb b/app/models/site/social_distributed_press.rb
index 5d469f03..c3abe06e 100644
--- a/app/models/site/social_distributed_press.rb
+++ b/app/models/site/social_distributed_press.rb
@@ -1,5 +1,7 @@
# frozen_string_literal: true
+require 'distributed_press/v1/social/client'
+
class Site
# Agrega soporte para Social Distributed Press en los sitios
module SocialDistributedPress
@@ -8,15 +10,25 @@ class Site
included do
encrypts :private_key_pem
+ has_many :activity_pubs
+
before_save :generate_private_key_pem!, unless: :private_key_pem?
+ # @return [SocialInbox]
+ def social_inbox
+ @social_inbox ||= SocialInbox.new(site: self)
+ 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
+ self.private_key_pem ||= DistributedPress::V1::Social::Client.new(
+ public_key_url: nil,
+ key_size: 2048
+ ).private_key.export
end
end
end
diff --git a/app/models/social_inbox.rb b/app/models/social_inbox.rb
new file mode 100644
index 00000000..21b0ca45
--- /dev/null
+++ b/app/models/social_inbox.rb
@@ -0,0 +1,81 @@
+# frozen_string_literal: true
+
+require 'distributed_press/v1/social/client'
+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 ||= generate_uri do |uri|
+ uri.path = '/about.jsonld'
+ end
+ end
+
+ # @return [DistributedPress::V1::Social::Client]
+ def client
+ @client ||= DistributedPress::V1::Social::Client.new(
+ url: site.config.dig('activity_pub', '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['REDIS_SERVER'])
+ )
+ 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 [String]
+ def public_key_url
+ @public_key_url ||= generate_uri do |uri|
+ uri.path = '/about.jsonld'
+ uri.fragment = 'main-key'
+ end
+ end
+
+ def hostname
+ @hostname ||=
+ site.config.dig('activity_pub', 'hostname') || site.hostname
+ end
+
+ # Genera una URI dentro de este sitio
+ #
+ # @return [String]
+ def generate_uri(&block)
+ @public_key_url ||= URI("https://#{hostname}").tap(&block).to_s
+ end
+end
diff --git a/app/services/cleanup_service.rb b/app/services/cleanup_service.rb
index b0792159..28f6f860 100644
--- a/app/services/cleanup_service.rb
+++ b/app/services/cleanup_service.rb
@@ -31,6 +31,7 @@ class CleanupService
site.deploys.find_each(&:cleanup!)
site.repository.gc
+ lfs_cleanup
site.touch
end
end
@@ -45,7 +46,14 @@ class CleanupService
Rails.logger.info "Limpiando repositorio git de #{site.name}"
site.repository.gc
+ lfs_cleanup
site.touch
end
end
+
+ private
+ def lfs_cleanup
+ site.repository.git_sh("git", "lfs", "prune")
+ site.repository.git_sh("git", "lfs", "dedup")
+ end
end
diff --git a/app/services/site_service.rb b/app/services/site_service.rb
index 9301e3da..13a4322e 100644
--- a/app/services/site_service.rb
+++ b/app/services/site_service.rb
@@ -83,6 +83,23 @@ SiteService = Struct.new(:site, :usuarie, :params, keyword_init: true) do
site.repository.merge(usuarie).present?
end
+ def rename(name)
+ return if name == site.name
+ moved = false
+ site.name = name
+
+ Site.transaction do
+ raise ActiveRecord::Rollback if File.exists?(site.path)
+ FileUtils.mv (site.path_was, site.path)
+ moved = true
+ ActiveStorage::Blob.where(service_name: site.name_was).update_all(service_name: site.name)
+ site.save
+ rescue StandardError
+ FileUtils.mv (site.path, site.path_was) if moved
+ raise
+ end
+ end
+
private
# Guarda los cambios de la configuración en el repositorio git
diff --git a/app/views/collaborations/collaborate.haml b/app/views/collaborations/collaborate.haml
index 9daad84d..bbdc977e 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/devise/confirmations/new.haml b/app/views/devise/confirmations/new.haml
index 9e17fe0e..fed7523a 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 94050214..8039d281 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 b6e6f4c4..5fb6e0d0 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 597bdde1..3fab3727 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 de422f57..3ef1b624 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 f87921a7..495a6dea 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 3fb22ca6..cc08c630 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 9d6c7a02..cd205e70 100644
--- a/app/views/devise/sessions/new.haml
+++ b/app/views/devise/sessions/new.haml
@@ -32,5 +32,5 @@
= t('login.remember_me', 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 4d9001ca..eb55d707 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/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 a5f8e828..7fc49888 100644
--- a/app/views/layouts/_breadcrumb.haml
+++ b/app/views/layouts/_breadcrumb.haml
@@ -18,15 +18,15 @@
- 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/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/attributes/_content.haml b/app/views/posts/attributes/_content.haml
index 03867941..872422af 100644
--- a/app/views/posts/attributes/_content.haml
+++ b/app/views/posts/attributes/_content.haml
@@ -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')
diff --git a/app/views/posts/index.haml b/app/views/posts/index.haml
index 25ad5faa..b371192a 100644
--- a/app/views/posts/index.haml
+++ b/app/views/posts/index.haml
@@ -22,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',
@@ -40,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
@@ -82,20 +82,20 @@
.d-flex.flex-row.justify-content-between
%div
- if reorder_allowed
- = submit_tag t('posts.reorder.submit'), class: 'btn'
- %button.btn{ data: { action: 'reorder#unselect' } }
+ = 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{ 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')
+ %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')
%input{ type: 'hidden', name: 'post[lang]', value: @locale }
- if @site.pagination
%div
- = link_to_prev_page @posts, t('posts.prev'), class: 'btn'
- = link_to_next_page @posts, t('posts.next'), class: 'btn'
+ = 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
@@ -136,9 +136,9 @@
= 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'
+ = link_to t('posts.edit'), edit_site_post_path(@site, post.path), class: 'btn btn-secondary 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') }
+ = link_to t('posts.destroy'), site_post_path(@site, post.path), class: 'btn btn-secondary btn-block', method: :delete, data: { confirm: t('posts.confirm_destroy') }
-#
Rescatar cualquier error en un post, notificarlo e
ignorar su renderización.
diff --git a/app/views/posts/show.haml b/app/views/posts/show.haml
index 8b68c62a..a81b3a68 100644
--- a/app/views/posts/show.haml
+++ b/app/views/posts/show.haml
@@ -4,7 +4,7 @@
%article.content.table-responsive-md
= link_to t('posts.edit'),
edit_site_post_path(@site, @post.id),
- class: 'btn btn-block'
+ class: 'btn btn-secondary btn-block'
%table.table.table-condensed
%thead
diff --git a/app/views/sites/_build.haml b/app/views/sites/_build.haml
index 5911e908..b0961e31 100644
--- a/app/views/sites/_build.haml
+++ b/app/views/sites/_build.haml
@@ -3,7 +3,7 @@
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]}",
+ 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.enqueued?
diff --git a/app/views/sites/_form.haml b/app/views/sites/_form.haml
index 434e3495..f3055bf7 100644
--- a/app/views/sites/_form.haml
+++ b/app/views/sites/_form.haml
@@ -72,10 +72,10 @@
.btn-group{ role: 'group', 'aria-label': t('.design.actions') }
- if design.url
= link_to t('.design.url'), design.url,
- target: '_blank', class: 'btn'
+ target: '_blank', class: 'btn btn-secondary'
- if design.license
= link_to t('.design.license'), design.license,
- target: '_blank', class: 'btn'
+ target: '_blank', class: 'btn btn-secondary'
%hr/
.form-group.licenses#license_id
@@ -99,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/
@@ -164,4 +164,4 @@
deploy: deploy_fields, 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/fetch.haml b/app/views/sites/fetch.haml
index 51e0aa74..ab7a8f3b 100644
--- a/app/views/sites/fetch.haml
+++ b/app/views/sites/fetch.haml
@@ -27,4 +27,4 @@
.row.justify-content-center
.col-12.col-lg-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 dfd33c6c..881039ff 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?
@@ -29,18 +29,18 @@
= site.title
%p.lead= site.description
%br
- = link_to t('.visit'), site.url, class: 'btn'
+ = link_to t('.visit'), site.url, class: 'btn btn-secondary'
- 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'
+ class: 'btn btn-secondary'
= button_to t('sites.invitations.reject'),
site_usuaries_reject_invitation_path(site),
method: :patch,
title: t('help.sites.invitations.reject'),
- class: 'btn'
+ class: 'btn btn-secondary'
- else
- if policy(site).show?
= render 'layouts/btn_with_tooltip',
diff --git a/app/views/stats/index.haml b/app/views/stats/index.haml
index d3a11ffe..6832b7ab 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 edb9ad19..265af56a 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 4f4412ad..0a9be9c8 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..d26e71f3
--- /dev/null
+++ b/bin/modified_files
@@ -0,0 +1,8 @@
+#!/bin/sh
+set -e
+
+test -n "${CI_MERGE_REQUEST_DIFF_BASE_SHA}"
+
+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 e526e204..93968f2d 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,6 +25,17 @@ 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
# Sutty!
class Application < Rails::Application
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/locales/en.yml b/config/locales/en.yml
index 6a07bb86..76bdd942 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -322,6 +322,10 @@ en:
[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
diff --git a/config/locales/es.yml b/config/locales/es.yml
index 3151812f..b4f22a8e 100644
--- a/config/locales/es.yml
+++ b/config/locales/es.yml
@@ -327,6 +327,10 @@ es:
[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
diff --git a/config/routes.rb b/config/routes.rb
index f2487066..88376dde 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -18,7 +18,15 @@ Rails.application.routes.draw do
get :'contact/cookie', to: 'invitades#contact_cookie'
post :'contact/:form', to: 'contact#receive', as: :contact
- post :'webhooks/pull', to: 'webhooks#pull'
+ 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
@@ -28,9 +36,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]
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..ada9392f
--- /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/structure.sql b/db/structure.sql
index e0d8f710..dcc7f2c3 100644
--- a/db/structure.sql
+++ b/db/structure.sql
@@ -16,6 +16,20 @@ SET row_security = off;
-- *not* creating schema, since initdb creates it
+--
+-- Name: dblink; Type: EXTENSION; Schema: -; Owner: -
+--
+
+CREATE EXTENSION IF NOT EXISTS dblink WITH SCHEMA public;
+
+
+--
+-- Name: EXTENSION dblink; Type: COMMENT; Schema: -; Owner: -
+--
+
+COMMENT ON EXTENSION dblink IS 'connect to other PostgreSQL databases from within a database';
+
+
--
-- Name: pg_trgm; Type: EXTENSION; Schema: -; Owner: -
--
@@ -44,6 +58,35 @@ CREATE EXTENSION IF NOT EXISTS pgcrypto WITH SCHEMA public;
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: -
--
@@ -103,35 +146,6 @@ WITH (fillfactor='90');
COMMENT ON TABLE public.que_jobs IS '7';
---
--- 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_determine_job_state(public.que_jobs); Type: FUNCTION; Schema: public; Owner: -
--
@@ -480,6 +494,77 @@ CREATE SEQUENCE public.active_storage_variant_records_id_seq
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
+);
+
+
+--
+-- 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
+);
+
+
+--
+-- 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_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
+);
+
+
--
-- Name: ar_internal_metadata; Type: TABLE; Schema: public; Owner: -
--
@@ -766,7 +851,8 @@ CREATE TABLE public.deploys (
updated_at timestamp without time zone NOT NULL,
site_id integer,
type character varying,
- "values" text
+ "values" text,
+ rol_id integer
);
@@ -1149,7 +1235,8 @@ CREATE TABLE public.roles (
site_id integer,
usuarie_id integer,
rol character varying,
- temporal boolean
+ temporal boolean,
+ token character varying
);
@@ -1236,7 +1323,9 @@ CREATE TABLE public.sites (
tienda_url character varying DEFAULT ''::character varying,
api_key_ciphertext character varying,
slugify_mode character varying DEFAULT 'default'::character varying,
- pagination boolean DEFAULT false
+ pagination boolean DEFAULT false,
+ private_key_pem_ciphertext text,
+ last_indexed_commit character varying
);
@@ -1568,6 +1657,46 @@ 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_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_pubs activity_pubs_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.activity_pubs
+ ADD CONSTRAINT activity_pubs_pkey PRIMARY KEY (id);
+
+
--
-- Name: blazer_audits blazer_audits_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
@@ -1868,6 +1997,41 @@ CREATE UNIQUE INDEX index_active_storage_blobs_on_key_and_service_name ON public
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 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 INDEX index_activity_pub_instances_on_hostname ON public.activity_pub_instances USING btree (hostname);
+
+
+--
+-- Name: index_activity_pubs_on_site_id_and_object_id_and_object_type; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE UNIQUE INDEX index_activity_pubs_on_site_id_and_object_id_and_object_type ON public.activity_pubs USING btree (site_id, object_id, object_type);
+
+
--
-- Name: index_blazer_audits_on_query_id; Type: INDEX; Schema: public; Owner: -
--
@@ -2234,6 +2398,13 @@ ALTER TABLE ONLY public.active_storage_attachments
ADD CONSTRAINT fk_rails_c3b3935057 FOREIGN KEY (blob_id) REFERENCES public.active_storage_blobs(id);
+--
+-- Name: publisher; Type: PUBLICATION; Schema: -; Owner: -
+--
+
+CREATE PUBLICATION publisher FOR ALL TABLES WITH (publish = 'insert, update, delete, truncate');
+
+
--
-- PostgreSQL database dump complete
--
@@ -2318,6 +2489,17 @@ INSERT INTO "schema_migrations" (version) VALUES
('20230421182627'),
('20230424174544'),
('20230519143500'),
-('20230524190240');
+('20230524190240'),
+('20230731195050'),
+('20230829204127'),
+('20230921155401'),
+('20230927153926'),
+('20240216170202'),
+('20240219153919'),
+('20240219175839'),
+('20240219204011'),
+('20240219204224'),
+('20240220161414'),
+('20240221184007');
diff --git a/monit.conf b/monit.conf
index 09574d0a..6d1b2811 100644
--- a/monit.conf
+++ b/monit.conf
@@ -19,10 +19,10 @@ check program stats
every "0 1 * * *"
if status != 0 then alert
-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'"
-
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 2974a8b3..7901ad41 100644
--- a/package.json
+++ b/package.json
@@ -12,8 +12,8 @@
"@rails/actiontext": "^6.0.0",
"@rails/activestorage": "^6.1.3-1",
"@rails/ujs": "^6.1.3-1",
- "@rails/webpacker": "5.2.1",
- "@suttyweb/editor": "^0.1.24",
+ "@rails/webpacker": "5.4.4",
+ "@suttyweb/editor": "^0.1.25",
"babel-loader": "^8.2.2",
"chart.js": "^3.5.1",
"chartkick": "^4.0.5",
diff --git a/public/assets/.sprockets-manifest-a1cbb907961024fc033716a7d30668dd.json b/public/assets/.sprockets-manifest-a1cbb907961024fc033716a7d30668dd.json
index 6d1b664d..4d14a3ae 100644
--- a/public/assets/.sprockets-manifest-a1cbb907961024fc033716a7d30668dd.json
+++ b/public/assets/.sprockets-manifest-a1cbb907961024fc033716a7d30668dd.json
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:e0bd21756fd55d772a0d310db827bd41b2d1fbdd6d6924ad212803ed33971725
-size 14525
+oid sha256:d13b9bdec29a674c105944271d94bc7bff67e416cb452c8962d7990b2365dddc
+size 14818
diff --git a/public/assets/.sprockets-manifest-c6294bb290dcb7473076f4de99ce9c00.json b/public/assets/.sprockets-manifest-c6294bb290dcb7473076f4de99ce9c00.json
deleted file mode 100644
index 862103e6..00000000
--- a/public/assets/.sprockets-manifest-c6294bb290dcb7473076f4de99ce9c00.json
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:abb17ebe7d32c8d1bc90cc26c95cd99188a8ea066d8c975834b8299b7297f157
-size 11872
diff --git a/public/assets/activestorage-a32231d4c74e0bd4b322c1466c29120152be4ea1f4b896d9bfa546b49c39c52f.js.gz b/public/assets/activestorage-a32231d4c74e0bd4b322c1466c29120152be4ea1f4b896d9bfa546b49c39c52f.js.gz
index 547fa854..bcf59744 100644
--- a/public/assets/activestorage-a32231d4c74e0bd4b322c1466c29120152be4ea1f4b896d9bfa546b49c39c52f.js.gz
+++ b/public/assets/activestorage-a32231d4c74e0bd4b322c1466c29120152be4ea1f4b896d9bfa546b49c39c52f.js.gz
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:5a64406e0735a5a688ae5f0b804fb4d425fbc1c7a9aa8638b9cdc2768daa1215
+oid sha256:7c491d95b7e2535cb55d8ba4a77a5045976300025ceb4c52f1c587e2e894538a
size 5157
diff --git a/public/assets/application-20ccc989c289957de41530f1a6c63720c6980e71b85b2b73698ee2ad85e39788.css b/public/assets/application-20ccc989c289957de41530f1a6c63720c6980e71b85b2b73698ee2ad85e39788.css
new file mode 100644
index 00000000..109c05a1
--- /dev/null
+++ b/public/assets/application-20ccc989c289957de41530f1a6c63720c6980e71b85b2b73698ee2ad85e39788.css
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4c7d185f6b9de802352ba5905ed3becdf8248e231484006e3ed3efabbd15e9b6
+size 236932
diff --git a/public/assets/application-20ccc989c289957de41530f1a6c63720c6980e71b85b2b73698ee2ad85e39788.css.gz b/public/assets/application-20ccc989c289957de41530f1a6c63720c6980e71b85b2b73698ee2ad85e39788.css.gz
new file mode 100644
index 00000000..e1f69469
--- /dev/null
+++ b/public/assets/application-20ccc989c289957de41530f1a6c63720c6980e71b85b2b73698ee2ad85e39788.css.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d85bfc90e555d5a4d45424fe6b7c0b55baa560d4eb1db9ec0fe678d8dc126f7d
+size 32753
diff --git a/public/assets/application-ae222afd03002071cf20cb0e57e4f771c70fa5a843d587b8fc6a77a4a5df4ae1.css b/public/assets/application-ae222afd03002071cf20cb0e57e4f771c70fa5a843d587b8fc6a77a4a5df4ae1.css
deleted file mode 100644
index 63680ee3..00000000
--- a/public/assets/application-ae222afd03002071cf20cb0e57e4f771c70fa5a843d587b8fc6a77a4a5df4ae1.css
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:930c5b3d6b7bfc046c58a6881480c8b319048ceeb08dad76e30c2d5f95fd584c
-size 236114
diff --git a/public/assets/application-ae222afd03002071cf20cb0e57e4f771c70fa5a843d587b8fc6a77a4a5df4ae1.css.gz b/public/assets/application-ae222afd03002071cf20cb0e57e4f771c70fa5a843d587b8fc6a77a4a5df4ae1.css.gz
deleted file mode 100644
index e4e1f350..00000000
--- a/public/assets/application-ae222afd03002071cf20cb0e57e4f771c70fa5a843d587b8fc6a77a4a5df4ae1.css.gz
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7ca4d3bf8237878a9ae25e2a85cf7f15f608b911c8551c380c6374c208e10037
-size 32763
diff --git a/public/assets/application-b1906dfc8db9ca20e901841c12b7d1df8090a2ea1af3befab4fb333cc25972d5.css b/public/assets/application-b1906dfc8db9ca20e901841c12b7d1df8090a2ea1af3befab4fb333cc25972d5.css
deleted file mode 100644
index 701eed54..00000000
--- a/public/assets/application-b1906dfc8db9ca20e901841c12b7d1df8090a2ea1af3befab4fb333cc25972d5.css
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e341ea5cc9c00ad1f340c6033404b207ed0e47f9b0a5ace1899c44325f19e7a3
-size 235951
diff --git a/public/assets/application-b1906dfc8db9ca20e901841c12b7d1df8090a2ea1af3befab4fb333cc25972d5.css.gz b/public/assets/application-b1906dfc8db9ca20e901841c12b7d1df8090a2ea1af3befab4fb333cc25972d5.css.gz
deleted file mode 100644
index b498dbd2..00000000
--- a/public/assets/application-b1906dfc8db9ca20e901841c12b7d1df8090a2ea1af3befab4fb333cc25972d5.css.gz
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e7d731a73bcce53aa0ee786606c4493a0442b7c1e19f3225321b01376073245d
-size 32720
diff --git a/public/assets/application-e103c526f0f1ddba4b6d570ac1bc4318f0e84d522fe2c02eb6fbb594ece6f7a5.css b/public/assets/application-e103c526f0f1ddba4b6d570ac1bc4318f0e84d522fe2c02eb6fbb594ece6f7a5.css
new file mode 100644
index 00000000..c79ec1f0
--- /dev/null
+++ b/public/assets/application-e103c526f0f1ddba4b6d570ac1bc4318f0e84d522fe2c02eb6fbb594ece6f7a5.css
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ba248b242410bc53b4f4ad49b40a6e80f27c1c1586465e3cebf6ff085ec9ba51
+size 236004
diff --git a/public/assets/application-e103c526f0f1ddba4b6d570ac1bc4318f0e84d522fe2c02eb6fbb594ece6f7a5.css.gz b/public/assets/application-e103c526f0f1ddba4b6d570ac1bc4318f0e84d522fe2c02eb6fbb594ece6f7a5.css.gz
new file mode 100644
index 00000000..ab063359
--- /dev/null
+++ b/public/assets/application-e103c526f0f1ddba4b6d570ac1bc4318f0e84d522fe2c02eb6fbb594ece6f7a5.css.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:24baa40e59b12846a5f48ca19176e606fa5fa9b6ef58f3a6e45a22c0a88b6d68
+size 32740
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/blazer/application-de70452dc5fa2016142132ea36573395d45b4e5c5cf772ef1558462a46996967.css.gz b/public/assets/blazer/application-de70452dc5fa2016142132ea36573395d45b4e5c5cf772ef1558462a46996967.css.gz
index 0c0bec77..e4e580e4 100644
--- a/public/assets/blazer/application-de70452dc5fa2016142132ea36573395d45b4e5c5cf772ef1558462a46996967.css.gz
+++ b/public/assets/blazer/application-de70452dc5fa2016142132ea36573395d45b4e5c5cf772ef1558462a46996967.css.gz
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:e421483e231aaa2f3fdb3a4711bcb95f1b4d72dca39e8d28600057bbd20dccfd
+oid sha256:442a323c02cbf67b1d0c973441f2ecee8bb78e6df8518bec35a95e4c0d2c3eda
size 23302
diff --git a/public/assets/blazer/application-ec191b6689a395c0fede5f96bcc30a93a832cfbb325d6c50f1c31fffe8f7352b.js.gz b/public/assets/blazer/application-ec191b6689a395c0fede5f96bcc30a93a832cfbb325d6c50f1c31fffe8f7352b.js.gz
index 728eb3ed..cb1be13e 100644
--- a/public/assets/blazer/application-ec191b6689a395c0fede5f96bcc30a93a832cfbb325d6c50f1c31fffe8f7352b.js.gz
+++ b/public/assets/blazer/application-ec191b6689a395c0fede5f96bcc30a93a832cfbb325d6c50f1c31fffe8f7352b.js.gz
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:541f3578df5e183ad4111c52ebc9a403437fde6f37f55b0b1172cb89e50d0b79
+oid sha256:71813e15686111989234a533a7c639cbcd64c1ec9a4999ac31b279300b9848cb
size 378607
diff --git a/public/assets/dark-e2d0356b7ccd0cf1af4e1bfd28d32c69caf3f11f464c5b5cef404487f864ae73.css.gz b/public/assets/dark-e2d0356b7ccd0cf1af4e1bfd28d32c69caf3f11f464c5b5cef404487f864ae73.css.gz
index bf193f11..6b720779 100644
--- a/public/assets/dark-e2d0356b7ccd0cf1af4e1bfd28d32c69caf3f11f464c5b5cef404487f864ae73.css.gz
+++ b/public/assets/dark-e2d0356b7ccd0cf1af4e1bfd28d32c69caf3f11f464c5b5cef404487f864ae73.css.gz
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:417fc7d2206a0bc83de0893b8512990e34439702fc3adf1902d4eb0af4b48241
+oid sha256:166171efdf9e62a561adbdb3e9fb92a5849d8c6ae83d638f0ab6b9ba221dbd23
size 75
diff --git a/public/assets/dark-eb9f64ef7c7dac0cb3eb2b7bd511327d12625e00d4e11216441787288070f7dd.css b/public/assets/dark-eb9f64ef7c7dac0cb3eb2b7bd511327d12625e00d4e11216441787288070f7dd.css
new file mode 100644
index 00000000..4a76781b
--- /dev/null
+++ b/public/assets/dark-eb9f64ef7c7dac0cb3eb2b7bd511327d12625e00d4e11216441787288070f7dd.css
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:577591626adad685d7bdbaab0ae0590841b222586986876b3dacf157c52dffa3
+size 284
diff --git a/public/assets/dark-eb9f64ef7c7dac0cb3eb2b7bd511327d12625e00d4e11216441787288070f7dd.css.gz b/public/assets/dark-eb9f64ef7c7dac0cb3eb2b7bd511327d12625e00d4e11216441787288070f7dd.css.gz
new file mode 100644
index 00000000..74ba6f4f
--- /dev/null
+++ b/public/assets/dark-eb9f64ef7c7dac0cb3eb2b7bd511327d12625e00d4e11216441787288070f7dd.css.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6eff0565120128861b1f1c651ad7eeef39bc680b6b70bcc85aab4cd7abd5728f
+size 156
diff --git a/public/assets/editor-d0d83345c634efdd987cfc6359297fec136984dd3bd5a2f6bcac2d58459a7aec.css.gz b/public/assets/editor-d0d83345c634efdd987cfc6359297fec136984dd3bd5a2f6bcac2d58459a7aec.css.gz
index 0848c162..52f3fcad 100644
--- a/public/assets/editor-d0d83345c634efdd987cfc6359297fec136984dd3bd5a2f6bcac2d58459a7aec.css.gz
+++ b/public/assets/editor-d0d83345c634efdd987cfc6359297fec136984dd3bd5a2f6bcac2d58459a7aec.css.gz
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:6f019c1480ea1ba1893c3328f835682f31252a907c872a9542065c19da75e717
+oid sha256:2f83d57dc7bfdc6e3640f36eb5c53bd32bfd301c2d136ed565964cee5e25badc
size 678
diff --git a/public/assets/manifest-04024382391bb910584145d8113cf35ef376b55d125bb4516cebeb14ce788597.js.gz b/public/assets/manifest-04024382391bb910584145d8113cf35ef376b55d125bb4516cebeb14ce788597.js.gz
index 3ac4f898..d673f46c 100644
--- a/public/assets/manifest-04024382391bb910584145d8113cf35ef376b55d125bb4516cebeb14ce788597.js.gz
+++ b/public/assets/manifest-04024382391bb910584145d8113cf35ef376b55d125bb4516cebeb14ce788597.js.gz
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:0a808f31c5704c32a1b85155b41b68f60e08929ab31352cd811138a2c70cacf3
+oid sha256:d669538fdf855979be9c4089f9469a7f2ee433ce58a19ac633f478afcffc6e1e
size 20
diff --git a/public/assets/new_editor-15587648151a2d95c803f56ceaa2b4333519e99469c673d583c280a9da54b695.css.gz b/public/assets/new_editor-15587648151a2d95c803f56ceaa2b4333519e99469c673d583c280a9da54b695.css.gz
index bdf93ed9..b8804da9 100644
--- a/public/assets/new_editor-15587648151a2d95c803f56ceaa2b4333519e99469c673d583c280a9da54b695.css.gz
+++ b/public/assets/new_editor-15587648151a2d95c803f56ceaa2b4333519e99469c673d583c280a9da54b695.css.gz
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:ca24f22dd61aeab05caf63d32274d779f501dcf9224265509dc523bb6b0eb287
+oid sha256:f886217faf0cc7c1ec6a115c1bfea6f71d016784230989d5fad9129c3cec64de
size 143
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/css/application-7d15ae94.css b/public/packs/css/application-7d15ae94.css
deleted file mode 100644
index 544ddf74..00000000
--- a/public/packs/css/application-7d15ae94.css
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e0179eec59d4881001e3d26ec0e25d8ca1257c6e4956d76f18cc97c3325a9625
-size 48029
diff --git a/public/packs/css/application-7d15ae94.css.br b/public/packs/css/application-7d15ae94.css.br
deleted file mode 100644
index c0e44938..00000000
--- a/public/packs/css/application-7d15ae94.css.br
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:3f9a030d083e92a55a9a9211539c894371f200778de283958a318c87a825cb4f
-size 10934
diff --git a/public/packs/css/application-7d15ae94.css.br.br b/public/packs/css/application-7d15ae94.css.br.br
deleted file mode 100644
index bd3a0882..00000000
--- a/public/packs/css/application-7d15ae94.css.br.br
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7c61a1f5c9ca9cfc7b2b314046b258a94f707535a34e0c3e7b621d9b7c2cd648
-size 10939
diff --git a/public/packs/css/application-7d15ae94.css.gz b/public/packs/css/application-7d15ae94.css.gz
deleted file mode 100644
index 306dc931..00000000
--- a/public/packs/css/application-7d15ae94.css.gz
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:bfeb6b9af353618bdc475d6c921197da2b8a9ae7685a91772658d41883843c12
-size 12022
diff --git a/public/packs/css/application-bb1478c7.css b/public/packs/css/application-bb1478c7.css
deleted file mode 100644
index 00ee9254..00000000
--- a/public/packs/css/application-bb1478c7.css
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8fd3bb412b63723fe63fa107ffac78bd6396487ccd69e4ea6d098848739a075d
-size 49279
diff --git a/public/packs/css/application-bb1478c7.css.br b/public/packs/css/application-bb1478c7.css.br
deleted file mode 100644
index 0b1db25e..00000000
--- a/public/packs/css/application-bb1478c7.css.br
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:243e15e5a405fd51203d0fe34119c018691da4bfdd00be0cf26aa3e2abb5634d
-size 10005
diff --git a/public/packs/css/application-bb1478c7.css.gz b/public/packs/css/application-bb1478c7.css.gz
deleted file mode 100644
index 7cadc76e..00000000
--- a/public/packs/css/application-bb1478c7.css.gz
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:a3d0b479d7ebdc77c8ef3549085248c2b668a61fea1a1e3700bc918fe505c4ff
-size 12351
diff --git a/public/packs/js/application-17c8ec1abff8d9ee68fc.js b/public/packs/js/application-17c8ec1abff8d9ee68fc.js
deleted file mode 100644
index 37480493..00000000
--- a/public/packs/js/application-17c8ec1abff8d9ee68fc.js
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:11cb44a373f826146b847520f0dd20a7549d4fac1c5a90d1deac260b421e5c68
-size 1492424
diff --git a/public/packs/js/application-17c8ec1abff8d9ee68fc.js.br b/public/packs/js/application-17c8ec1abff8d9ee68fc.js.br
deleted file mode 100644
index b357cdd6..00000000
--- a/public/packs/js/application-17c8ec1abff8d9ee68fc.js.br
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:48ccffc31d33c10d77f4ae691a26b64c1398fe4ec86071ba01430a4bfbdc3c00
-size 326998
diff --git a/public/packs/js/application-17c8ec1abff8d9ee68fc.js.gz b/public/packs/js/application-17c8ec1abff8d9ee68fc.js.gz
deleted file mode 100644
index f3d19ecd..00000000
--- a/public/packs/js/application-17c8ec1abff8d9ee68fc.js.gz
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f4634538d756c8168c99dc53f33a593a99efd7f4e183ca2d4203883136e72ba2
-size 433218
diff --git a/public/packs/js/application-17c8ec1abff8d9ee68fc.js.map b/public/packs/js/application-17c8ec1abff8d9ee68fc.js.map
deleted file mode 100644
index 922e5404..00000000
--- a/public/packs/js/application-17c8ec1abff8d9ee68fc.js.map
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:1a46d673b967335af347b2d5418e29f0a88a67d851339ed32c6468ab0db29025
-size 5851293
diff --git a/public/packs/js/application-17c8ec1abff8d9ee68fc.js.map.br b/public/packs/js/application-17c8ec1abff8d9ee68fc.js.map.br
deleted file mode 100644
index 37c0f5fd..00000000
--- a/public/packs/js/application-17c8ec1abff8d9ee68fc.js.map.br
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ba89e39620d2992e2778804b1b68cf134c5b5c51b5530780ed6aeb24b5eeef26
-size 1255087
diff --git a/public/packs/js/application-17c8ec1abff8d9ee68fc.js.map.gz b/public/packs/js/application-17c8ec1abff8d9ee68fc.js.map.gz
deleted file mode 100644
index 120beedf..00000000
--- a/public/packs/js/application-17c8ec1abff8d9ee68fc.js.map.gz
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7926e560d43796d95f9635a7c57f7c8efcc162e1d1eb46798e41ccea3f90b2f4
-size 1551597
diff --git a/public/packs/js/application-886df482a133d55527f8.js b/public/packs/js/application-886df482a133d55527f8.js
new file mode 100644
index 00000000..ed76fc79
--- /dev/null
+++ b/public/packs/js/application-886df482a133d55527f8.js
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2252ec5b0a709ccc33511a5b28723964791f1f618a6ad294e075b6c72840db25
+size 1516360
diff --git a/public/packs/js/application-17c8ec1abff8d9ee68fc.js.LICENSE.txt b/public/packs/js/application-886df482a133d55527f8.js.LICENSE.txt
similarity index 100%
rename from public/packs/js/application-17c8ec1abff8d9ee68fc.js.LICENSE.txt
rename to public/packs/js/application-886df482a133d55527f8.js.LICENSE.txt
diff --git a/public/packs/js/application-886df482a133d55527f8.js.br b/public/packs/js/application-886df482a133d55527f8.js.br
new file mode 100644
index 00000000..346ffcda
--- /dev/null
+++ b/public/packs/js/application-886df482a133d55527f8.js.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d0fa88fa553f73bc2102864f6954a4f474e184f200b441f131fad9747559f0cd
+size 333267
diff --git a/public/packs/js/application-886df482a133d55527f8.js.gz b/public/packs/js/application-886df482a133d55527f8.js.gz
new file mode 100644
index 00000000..40687a33
--- /dev/null
+++ b/public/packs/js/application-886df482a133d55527f8.js.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:211d9791a9c91e3e83c574c8c689cf62e507cd95587ba8d3cf925232acfb4482
+size 441098
diff --git a/public/packs/js/application-886df482a133d55527f8.js.map b/public/packs/js/application-886df482a133d55527f8.js.map
new file mode 100644
index 00000000..9e20b3ed
--- /dev/null
+++ b/public/packs/js/application-886df482a133d55527f8.js.map
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c57b761842347f6f8d76fcaec5d297a93882d88e49be65088166f446c3dbed5a
+size 5988215
diff --git a/public/packs/js/application-886df482a133d55527f8.js.map.br b/public/packs/js/application-886df482a133d55527f8.js.map.br
new file mode 100644
index 00000000..490b78d2
--- /dev/null
+++ b/public/packs/js/application-886df482a133d55527f8.js.map.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:33f257673c4ababb6bef1a67f59cb5384ee053990d23cac18cc725a708073778
+size 1278959
diff --git a/public/packs/js/application-886df482a133d55527f8.js.map.gz b/public/packs/js/application-886df482a133d55527f8.js.map.gz
new file mode 100644
index 00000000..9ded6964
--- /dev/null
+++ b/public/packs/js/application-886df482a133d55527f8.js.map.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:938b2b5cfbe8bc2f88977706c840e11ecc71cf7f86cd0e974e90629a713e6dad
+size 1583987
diff --git a/public/packs/js/application-fd20cd4c95f90c1a3ecd.js b/public/packs/js/application-fd20cd4c95f90c1a3ecd.js
deleted file mode 100644
index b6dc46a3..00000000
--- a/public/packs/js/application-fd20cd4c95f90c1a3ecd.js
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0322257341b6d5bcbee0153eb5007363aefe26870b63744de6f1cdf6d1a7065e
-size 1134731
diff --git a/public/packs/js/application-fd20cd4c95f90c1a3ecd.js.LICENSE.txt b/public/packs/js/application-fd20cd4c95f90c1a3ecd.js.LICENSE.txt
deleted file mode 100644
index 89f0cf4f..00000000
--- a/public/packs/js/application-fd20cd4c95f90c1a3ecd.js.LICENSE.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:a016dd85be9a400040f4440d2ce1a94524f6e885a3d0e1f2422b46c2397df38f
-size 629
diff --git a/public/packs/js/application-fd20cd4c95f90c1a3ecd.js.LICENSE.txt.br b/public/packs/js/application-fd20cd4c95f90c1a3ecd.js.LICENSE.txt.br
deleted file mode 100644
index 3b0be40c..00000000
--- a/public/packs/js/application-fd20cd4c95f90c1a3ecd.js.LICENSE.txt.br
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:46eca40f00a3261e41a1e02d89697deb163a49a56237e72ae2643cb1c28b99c0
-size 307
diff --git a/public/packs/js/application-fd20cd4c95f90c1a3ecd.js.br b/public/packs/js/application-fd20cd4c95f90c1a3ecd.js.br
deleted file mode 100644
index 6ba2a97b..00000000
--- a/public/packs/js/application-fd20cd4c95f90c1a3ecd.js.br
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:b88ebe0dd46c4b22fea0ecccb721afc5b4a88ce4b55950bce19654c2d265f72e
-size 302355
diff --git a/public/packs/js/application-fd20cd4c95f90c1a3ecd.js.br.br b/public/packs/js/application-fd20cd4c95f90c1a3ecd.js.br.br
deleted file mode 100644
index 93ce3091..00000000
--- a/public/packs/js/application-fd20cd4c95f90c1a3ecd.js.br.br
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8ed407a10485f5157d5eb98bc11a158c2565bc417faedaa197bdfcea486ccdcd
-size 302363
diff --git a/public/packs/js/application-fd20cd4c95f90c1a3ecd.js.gz b/public/packs/js/application-fd20cd4c95f90c1a3ecd.js.gz
deleted file mode 100644
index a978f9f3..00000000
--- a/public/packs/js/application-fd20cd4c95f90c1a3ecd.js.gz
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:6ed777e669bf1e81dd7f43ff8d9c2d5d5b4c9d81c68a1fac7b7fdd3d7d578b30
-size 329294
diff --git a/public/packs/js/application-fd20cd4c95f90c1a3ecd.js.map b/public/packs/js/application-fd20cd4c95f90c1a3ecd.js.map
deleted file mode 100644
index ab3aa8ef..00000000
--- a/public/packs/js/application-fd20cd4c95f90c1a3ecd.js.map
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:02a1682a2421fd6f340241bbc6b07951aa583f2ef2b74f29fb16cf9aaf3956a0
-size 4658473
diff --git a/public/packs/js/application-fd20cd4c95f90c1a3ecd.js.map.br b/public/packs/js/application-fd20cd4c95f90c1a3ecd.js.map.br
deleted file mode 100644
index ca0133f3..00000000
--- a/public/packs/js/application-fd20cd4c95f90c1a3ecd.js.map.br
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f3ef78d7fb35e3c0547740d68249462805e7cf65eafd3b6f77b787e7746c1f14
-size 1099488
diff --git a/public/packs/js/application-fd20cd4c95f90c1a3ecd.js.map.br.br b/public/packs/js/application-fd20cd4c95f90c1a3ecd.js.map.br.br
deleted file mode 100644
index dd2dcd4a..00000000
--- a/public/packs/js/application-fd20cd4c95f90c1a3ecd.js.map.br.br
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:cda688a8dbd865c4720c68f2af7c8e1130cd43a955c737da9f4f38296b2d6d56
-size 1099496
diff --git a/public/packs/js/application-fd20cd4c95f90c1a3ecd.js.map.gz b/public/packs/js/application-fd20cd4c95f90c1a3ecd.js.map.gz
deleted file mode 100644
index 38ab8f51..00000000
--- a/public/packs/js/application-fd20cd4c95f90c1a3ecd.js.map.gz
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f18506f9e0cec6f8a84d2a640646b6bae20eeeea081aba5ba26324028ffae8c2
-size 1222748
diff --git a/public/packs/manifest.json b/public/packs/manifest.json
index 6949dfb1..4109d5df 100644
--- a/public/packs/manifest.json
+++ b/public/packs/manifest.json
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:a8b7d82687e0f68f4e2705ad8bea08ff7ebe1e998bd0f30fe82220ec6dc2edba
+oid sha256:7198b7e0061bdb7f3b844ddeb3d10c97b410bc653fb8634e540dd82d27eb22d6
size 1426
diff --git a/public/packs/manifest.json.br b/public/packs/manifest.json.br
index a409c567..6d85ce3e 100644
--- a/public/packs/manifest.json.br
+++ b/public/packs/manifest.json.br
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:edb90be614388b1b288316fd44a7510e88e7705fee4a7abc99dd539e415b79ac
-size 320
+oid sha256:55a30ed30ae4b527a6d20f567b9afe5a1c11af8e64f66ed037bc0d14cf190088
+size 319
diff --git a/public/packs/manifest.json.br.br b/public/packs/manifest.json.br.br
deleted file mode 100644
index b8d746ce..00000000
--- a/public/packs/manifest.json.br.br
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:82c427cf2556c027323f463d5d735bc8dd3b2b22ac1d5eed3e7d77b3f1cc9178
-size 330
diff --git a/public/packs/manifest.json.gz b/public/packs/manifest.json.gz
index 1646ab13..96d59963 100644
--- a/public/packs/manifest.json.gz
+++ b/public/packs/manifest.json.gz
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:c82218f8743a4bdf1bc369bbd2df346bc90a4e62e08cadebd62efe3d01603a25
+oid sha256:e75a152cd8dcd1a048e8a9a36fc02053a676886b684806dde9c402dfd66ae567
size 365
diff --git a/public/packs/media/fonts/forkawesome-webfont-2dfb5f36.woff.br b/public/packs/media/fonts/forkawesome-webfont-2dfb5f36.woff.br
deleted file mode 100644
index df2c95b5..00000000
--- a/public/packs/media/fonts/forkawesome-webfont-2dfb5f36.woff.br
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:90b60c42bcbd106f5658710acd84f60307a00f0de10b921eeb5627590b429858
-size 115153
diff --git a/public/packs/media/fonts/forkawesome-webfont-7c20758e.woff2.br b/public/packs/media/fonts/forkawesome-webfont-7c20758e.woff2.br
deleted file mode 100644
index 1d640da9..00000000
--- a/public/packs/media/fonts/forkawesome-webfont-7c20758e.woff2.br
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:a76b02ceece82f286d306ed0988f8c220066ecce509241a425245950e4e4c839
-size 91629
diff --git a/public/packs/media/fonts/forkawesome-webfont-86541105.svg.br.br b/public/packs/media/fonts/forkawesome-webfont-86541105.svg.br.br
deleted file mode 100644
index 344bb103..00000000
--- a/public/packs/media/fonts/forkawesome-webfont-86541105.svg.br.br
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e03d221ca2c49b7099c550f8f33462365d285809e5a0b1e000c6c52e6982996a
-size 143252
diff --git a/public/packs/media/fonts/forkawesome-webfont-e182ad6d.eot.br.br b/public/packs/media/fonts/forkawesome-webfont-e182ad6d.eot.br.br
deleted file mode 100644
index e6ebb6ac..00000000
--- a/public/packs/media/fonts/forkawesome-webfont-e182ad6d.eot.br.br
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d2adacd487b97dcd4da3bc37328482c809a0d910353990de13b228dd1aa4710a
-size 110767
diff --git a/public/packs/media/fonts/forkawesome-webfont-ee4d8bfd.ttf.br.br b/public/packs/media/fonts/forkawesome-webfont-ee4d8bfd.ttf.br.br
deleted file mode 100644
index e633502b..00000000
--- a/public/packs/media/fonts/forkawesome-webfont-ee4d8bfd.ttf.br.br
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ba3d7e97443577de6e23b5936de2e1a6f35d9e6335b069d8071e6269afc78246
-size 110708
diff --git a/public/packs/media/images/layers-2x-8f2c4d11.png.br b/public/packs/media/images/layers-2x-8f2c4d11.png.br
deleted file mode 100644
index cda7f53d..00000000
--- a/public/packs/media/images/layers-2x-8f2c4d11.png.br
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:47119b2b0eb7d15fa47527efc1fa04713d80990ed6a7f2e2f58f91a8cddd1b03
-size 1264
diff --git a/public/packs/media/images/layers-416d9136.png.br b/public/packs/media/images/layers-416d9136.png.br
deleted file mode 100644
index 21812b3e..00000000
--- a/public/packs/media/images/layers-416d9136.png.br
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e255d97d12f227f9d2fabd481fa56d89bf33b47a4d108b031e7b96ddc0fb0066
-size 701
diff --git a/public/packs/media/images/marker-icon-2b3e1faf.png.br b/public/packs/media/images/marker-icon-2b3e1faf.png.br
deleted file mode 100644
index 62bba2a0..00000000
--- a/public/packs/media/images/marker-icon-2b3e1faf.png.br
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:4d73a1e81d4d7b880342c1fa48caeb6cdb56cc941ad18000d932dfaec8ba1086
-size 1471
diff --git a/public/packs/media/images/marker-icon-2x-680f69f3.png.br b/public/packs/media/images/marker-icon-2x-680f69f3.png.br
deleted file mode 100644
index 585d2e48..00000000
--- a/public/packs/media/images/marker-icon-2x-680f69f3.png.br
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c4f6ce09c4c3a59cfac5c03a03de02b170d35cfefd7e1247a317dc772c889395
-size 2469
diff --git a/public/packs/media/images/marker-shadow-a0c6cc14.png.br b/public/packs/media/images/marker-shadow-a0c6cc14.png.br
deleted file mode 100644
index 940c4d9b..00000000
--- a/public/packs/media/images/marker-shadow-a0c6cc14.png.br
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8758eb0644225f0a3c8e03fb1dbe319f6427b4116a538084f18ba5a6dcd65eb2
-size 623
diff --git a/yarn.lock b/yarn.lock
index c68ca2b0..0c52b9d3 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -14,6 +14,14 @@
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.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz"
@@ -21,31 +29,23 @@
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.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.npmjs.org/@babel/core/-/core-7.12.16.tgz"
- 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"
@@ -68,7 +68,28 @@
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.npmjs.org/@babel/generator/-/generator-7.12.15.tgz"
integrity sha512-6F2xHxBiFXWNSGb7vyCUTBF8RCLY66rS0zEPcP8t/nQyXjha5EuK4z7H5o7fWG8B4M7y6mqVWq1J+1PuwRhecQ==
@@ -86,6 +107,16 @@
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.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz"
@@ -93,6 +124,13 @@
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.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz"
@@ -101,15 +139,12 @@
"@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.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.16.tgz"
- 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"
@@ -121,6 +156,17 @@
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.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.16.tgz"
@@ -143,6 +189,21 @@
"@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.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.16.tgz"
@@ -151,6 +212,31 @@
"@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.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.13.tgz"
@@ -167,6 +253,14 @@
"@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.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz"
@@ -181,6 +275,13 @@
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.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.16.tgz"
@@ -195,6 +296,13 @@
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.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz"
@@ -202,6 +310,13 @@
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.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.13.tgz"
@@ -232,6 +347,17 @@
"@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.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz"
@@ -239,11 +365,23 @@
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.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.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.13.tgz"
@@ -253,6 +391,15 @@
"@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.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.13.tgz"
@@ -263,6 +410,15 @@
"@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.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz"
@@ -270,6 +426,13 @@
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.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz"
@@ -277,6 +440,13 @@
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.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz"
@@ -284,21 +454,38 @@
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.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.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.16.tgz"
- 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.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.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.13.tgz"
@@ -309,14 +496,14 @@
"@babel/traverse" "^7.12.13"
"@babel/types" "^7.12.13"
-"@babel/helpers@^7.12.13":
- version "7.12.13"
- resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.13.tgz"
- 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"
@@ -327,6 +514,15 @@
"@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.npmjs.org/@babel/highlight/-/highlight-7.12.13.tgz"
@@ -336,7 +532,16 @@
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.npmjs.org/@babel/parser/-/parser-7.12.16.tgz"
integrity sha512-c/+u9cqV6F0+4Hpq01jnJO+GLp2DdT63ppz9Xa+6cHaajM9VFzK/iDXiKK65YtpeVwu+ctfS6iqlMqRgQRzeCw==
@@ -346,6 +551,35 @@
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.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.13.tgz"
@@ -355,7 +589,7 @@
"@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.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.13.tgz"
integrity sha512-8SCJ0Ddrpwv4T7Gwb33EmW1V9PY5lggTO+A8WjyIwxrSHDUyBw4MtF96ifn1n8H806YlxbVCoKXbbmzD6RD+cA==
@@ -363,13 +597,13 @@
"@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.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.16.tgz"
- 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"
@@ -419,7 +653,7 @@
"@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.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.13.tgz"
integrity sha512-WvA1okB/0OS/N3Ldb3sziSrXg6sRphsBgqiccfcQq7woEn5wQLNX82Oc4PlaFcdwcWHuQXAtb8ftbS8Fbsg/sg==
@@ -428,6 +662,17 @@
"@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.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.13.tgz"
@@ -436,15 +681,6 @@
"@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.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.16.tgz"
- 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.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.17.tgz"
@@ -462,6 +698,11 @@
"@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.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz"
@@ -470,7 +711,7 @@
"@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.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz"
integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==
@@ -484,6 +725,13 @@
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.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz"
@@ -498,7 +746,28 @@
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.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz"
integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==
@@ -512,7 +781,7 @@
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.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz"
integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==
@@ -526,27 +795,34 @@
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.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.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.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.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz"
@@ -554,6 +830,13 @@
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.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.13.tgz"
@@ -561,6 +844,14 @@
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.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.13.tgz"
@@ -568,6 +859,23 @@
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.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.13.tgz"
@@ -577,6 +885,15 @@
"@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.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz"
@@ -584,6 +901,13 @@
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.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz"
@@ -591,6 +915,30 @@
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.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.13.tgz"
@@ -604,6 +952,21 @@
"@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.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.13.tgz"
@@ -611,13 +974,28 @@
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.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.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz"
@@ -626,6 +1004,14 @@
"@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.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz"
@@ -633,6 +1019,21 @@
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.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz"
@@ -641,6 +1042,22 @@
"@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.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.13.tgz"
@@ -648,6 +1065,14 @@
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.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz"
@@ -656,6 +1081,23 @@
"@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.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz"
@@ -663,6 +1105,21 @@
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.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz"
@@ -670,6 +1127,13 @@
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.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.13.tgz"
@@ -679,6 +1143,14 @@
"@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.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.13.tgz"
@@ -689,6 +1161,15 @@
"@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.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.13.tgz"
@@ -700,6 +1181,16 @@
"@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.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.13.tgz"
@@ -708,6 +1199,14 @@
"@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.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz"
@@ -715,6 +1214,14 @@
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.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz"
@@ -722,6 +1229,40 @@
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.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz"
@@ -730,6 +1271,31 @@
"@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.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.13.tgz"
@@ -737,6 +1303,31 @@
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.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz"
@@ -744,13 +1335,28 @@
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.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.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz"
@@ -758,14 +1364,12 @@
dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
-"@babel/plugin-transform-runtime@^7.11.0":
- version "7.12.15"
- resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.15.tgz"
- 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"
@@ -776,6 +1380,18 @@
"@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.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz"
@@ -783,6 +1399,13 @@
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.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.13.tgz"
@@ -791,6 +1414,14 @@
"@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.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz"
@@ -798,6 +1429,13 @@
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.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.13.tgz"
@@ -805,6 +1443,13 @@
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.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz"
@@ -812,6 +1457,13 @@
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.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.12.17.tgz"
@@ -828,6 +1480,21 @@
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.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz"
@@ -836,77 +1503,21 @@
"@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.npmjs.org/@babel/preset-env/-/preset-env-7.12.16.tgz"
- 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"
@@ -980,6 +1591,101 @@
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.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz"
@@ -1000,7 +1706,19 @@
"@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.npmjs.org/@babel/runtime/-/runtime-7.12.13.tgz"
integrity sha512-8+3UMPBrjFa/6TtKi/7sehPKqfAm4g6K+YQjyyFOLUTxzOngcRZTlAVY8sc2CORJYqdHQY8gRPHmn+qo15rCBw==
@@ -1016,6 +1734,15 @@
"@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.npmjs.org/@babel/traverse/-/traverse-7.12.13.tgz"
@@ -1046,6 +1773,22 @@
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.npmjs.org/@babel/types/-/types-7.12.13.tgz"
@@ -1064,11 +1807,52 @@
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.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz"
integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==
+"@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.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz"
@@ -1103,46 +1887,46 @@
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.npmjs.org/@rails/webpacker/-/webpacker-5.2.1.tgz"
- 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"
@@ -1171,10 +1955,12 @@
resolved "https://registry.npmjs.org/@stimulus/webpack-helpers/-/webpack-helpers-1.1.1.tgz"
integrity sha512-XOkqSw53N9072FLHvpLM25PIwy+ndkSSbnTtjKuyzsv8K5yfkFB2rv68jU1pzqYa9FZLcvZWP4yazC0V38dx9A==
-"@suttyweb/editor@^0.1.14":
- version "0.1.14"
- resolved "https://registry.yarnpkg.com/@suttyweb/editor/-/editor-0.1.14.tgz#a0f6c1d0e2347e2da05f1f8be4d1cc0ddf2e8e71"
- integrity sha512-BnGY7hvZg9XRaVpO1imeQ2+62f3dYkJ6mOG8UamZEbsqKOlsCis8PUGTy8yb6Pl2lyDq+El730N98hOpcIWgmw==
+"@suttyweb/editor@^0.1.25":
+ version "0.1.25"
+ resolved "https://registry.yarnpkg.com/@suttyweb/editor/-/editor-0.1.25.tgz#37b38560642a49b24383473543c28be943695f9f"
+ integrity sha512-fxOO9LpdntWzgNZch4cZB6QL0u+jEw0NqsNahKcGBbiJaS0GNGLRrT2LUd/Djc6O8HWkQguPLcquVT5eHq2h9g==
+ dependencies:
+ prosemirror-svelte-nodeview "^1.0.2"
"@types/caseless@*":
version "0.12.2"
@@ -1394,11 +2180,6 @@
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.npmjs.org/abbrev/-/abbrev-1.1.1.tgz"
- 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.npmjs.org/accepts/-/accepts-1.3.7.tgz"
@@ -1430,7 +2211,7 @@ ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2:
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.npmjs.org/ajv/-/ajv-6.12.6.tgz"
integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
@@ -1445,11 +2226,6 @@ alphanum-sort@^1.0.0:
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.npmjs.org/amdefine/-/amdefine-1.0.1.tgz"
- integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=
-
ansi-colors@^3.0.0:
version "3.2.4"
resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz"
@@ -1465,21 +2241,11 @@ ansi-regex@^2.0.0:
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.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz"
- integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
-
ansi-regex@^4.1.0:
version "4.1.0"
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.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz"
- integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
-
ansi-styles@^3.2.0, ansi-styles@^3.2.1:
version "3.2.1"
resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz"
@@ -1510,19 +2276,19 @@ anymatch@~3.1.1:
normalize-path "^3.0.0"
picomatch "^2.0.4"
-aproba@^1.0.3, aproba@^1.1.1:
+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:
+ 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==
-are-we-there-yet@~1.1.2:
- version "1.1.5"
- resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz"
- integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==
- dependencies:
- delegates "^1.0.0"
- readable-stream "^2.0.6"
-
argparse@^1.0.7:
version "1.0.10"
resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz"
@@ -1545,11 +2311,6 @@ arr-union@^3.1.0:
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.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz"
- integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=
-
array-flatten@1.1.1:
version "1.1.1"
resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz"
@@ -1587,18 +2348,6 @@ 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.npmjs.org/asn1/-/asn1-0.2.4.tgz"
- 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.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz"
- integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
-
assert@^1.1.1:
version "1.5.0"
resolved "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz"
@@ -1617,11 +2366,6 @@ async-each@^1.0.1:
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.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz"
- integrity sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=
-
async-limiter@~1.0.0:
version "1.0.1"
resolved "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz"
@@ -1662,17 +2406,7 @@ 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.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz"
- integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
-
-aws4@^1.8.0:
- version "1.11.0"
- resolved "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz"
- 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.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz"
integrity sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==
@@ -1698,6 +2432,30 @@ babel-plugin-macros@^2.8.0:
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.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz"
@@ -1726,13 +2484,6 @@ batch@0.6.1:
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.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz"
- integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=
- dependencies:
- tweetnacl "^0.14.3"
-
big.js@^5.2.2:
version "5.2.2"
resolved "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz"
@@ -1760,13 +2511,6 @@ bintrees@1.0.1:
resolved "https://registry.npmjs.org/bintrees/-/bintrees-1.0.1.tgz"
integrity sha1-DmVcm5wkNeqraL9AJyJtK1WjRSQ=
-block-stream@*:
- version "0.0.9"
- resolved "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz"
- integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=
- dependencies:
- inherits "~2.0.0"
-
bluebird@^3.5.5:
version "3.7.2"
resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz"
@@ -1923,6 +2667,16 @@ 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"
+
buffer-from@^1.0.0:
version "1.1.1"
resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz"
@@ -2053,19 +2807,6 @@ callsites@^3.0.0:
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.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz"
- 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.npmjs.org/camelcase/-/camelcase-2.1.1.tgz"
- integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=
-
camelcase@^5.0.0, camelcase@^5.3.1:
version "5.3.1"
resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz"
@@ -2086,26 +2827,15 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, can
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.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz"
- 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.npmjs.org/caseless/-/caseless-0.12.0.tgz"
- integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
-
-chalk@^1.1.1:
- version "1.1.3"
- resolved "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz"
- 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"
@@ -2143,6 +2873,21 @@ chartkick@^4.0.5:
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.npmjs.org/chokidar/-/chokidar-2.1.8.tgz"
@@ -2231,14 +2976,10 @@ cliui@^5.0.0:
strip-ansi "^5.2.0"
wrap-ansi "^5.1.0"
-clone-deep@^4.0.1:
- version "4.0.1"
- resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz"
- 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"
@@ -2249,11 +2990,6 @@ coa@^2.0.2:
chalk "^2.4.1"
q "^1.1.2"
-code-point-at@^1.0.0:
- version "1.1.0"
- resolved "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz"
- integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
-
collection-visit@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz"
@@ -2307,7 +3043,7 @@ colorette@^1.2.1:
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.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz"
integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
@@ -2346,9 +3082,9 @@ compressible@~2.0.16:
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.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-4.0.1.tgz"
+ resolved "https://registry.yarnpkg.com/compression-webpack-plugin/-/compression-webpack-plugin-4.0.1.tgz#33eda97f1170dd38c5556771de10f34245aa0274"
integrity sha512-0mg6PgwTsUe5LEcUrOu3ob32vraDx2VdbMGAT1PARcOV+UJWDYZFdkSo6RbHoGQ061mmmkC7XpRKOlvwm/gzJQ==
dependencies:
cacache "^15.0.5"
@@ -2395,11 +3131,6 @@ console-browserify@^1.1.0:
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.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz"
- integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
-
constants-browserify@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz"
@@ -2424,6 +3155,11 @@ convert-source-map@^1.7.0:
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.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz"
@@ -2451,6 +3187,13 @@ copy-descriptor@^0.1.0:
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.npmjs.org/core-js-compat/-/core-js-compat-3.8.3.tgz"
@@ -2459,12 +3202,12 @@ core-js-compat@^3.8.0:
browserslist "^4.16.1"
semver "7.0.0"
-core-js@^3.6.5:
- version "3.8.3"
- resolved "https://registry.npmjs.org/core-js/-/core-js-3.8.3.tgz"
- 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.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz"
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
@@ -2533,14 +3276,6 @@ cross-fetch@^3.0.4:
dependencies:
node-fetch "2.6.1"
-cross-spawn@^3.0.0:
- version "3.0.1"
- resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz"
- 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.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz"
@@ -2597,9 +3332,9 @@ css-has-pseudo@^0.10.0:
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.npmjs.org/css-loader/-/css-loader-3.6.0.tgz"
+ resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.6.0.tgz#2e4b2c7e6e2d27f8c8f28f61bffcd2e6c91ef645"
integrity sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==
dependencies:
camelcase "^5.3.1"
@@ -2749,25 +3484,11 @@ csso@^4.0.2:
dependencies:
css-tree "^1.1.2"
-currently-unhandled@^0.4.1:
- version "0.4.1"
- resolved "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz"
- integrity sha1-mI3zP+qxke95mmE2nddsF635V+o=
- dependencies:
- array-find-index "^1.0.1"
-
cyclist@^1.0.1:
version "1.0.1"
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.npmjs.org/dashdash/-/dashdash-1.14.1.tgz"
- integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=
- dependencies:
- assert-plus "^1.0.0"
-
date-fns@>=2.0.0:
version "2.24.0"
resolved "https://registry.npmjs.org/date-fns/-/date-fns-2.24.0.tgz"
@@ -2794,7 +3515,14 @@ debug@^4.1.0, debug@^4.1.1:
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.npmjs.org/decamelize/-/decamelize-1.2.0.tgz"
integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
@@ -2876,11 +3604,6 @@ delayed-stream@~1.0.0:
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.npmjs.org/delegates/-/delegates-1.0.0.tgz"
- integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
-
depd@~1.1.2:
version "1.1.2"
resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz"
@@ -2986,14 +3709,6 @@ 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.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz"
- 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.npmjs.org/ee-first/-/ee-first-1.1.1.tgz"
@@ -3004,6 +3719,11 @@ electron-to-chromium@^1.3.649:
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.npmjs.org/elliptic/-/elliptic-6.5.4.tgz"
@@ -3065,7 +3785,7 @@ errno@^0.1.3, errno@~0.1.7:
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.npmjs.org/error-ex/-/error-ex-1.3.2.tgz"
integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
@@ -3135,7 +3855,7 @@ escape-html@~1.0.3:
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.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
@@ -3289,11 +4009,6 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2:
assign-symbols "^1.0.0"
is-extendable "^1.0.1"
-extend@~3.0.2:
- version "3.0.2"
- resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz"
- integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
-
extglob@^2.0.4:
version "2.0.4"
resolved "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz"
@@ -3308,16 +4023,6 @@ extglob@^2.0.4:
snapdragon "^0.8.1"
to-regex "^3.0.1"
-extsprintf@1.3.0:
- version "1.3.0"
- resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz"
- integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=
-
-extsprintf@^1.2.0:
- version "1.4.0"
- resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.0.tgz"
- integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
-
fast-deep-equal@^3.1.1:
version "3.1.3"
resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz"
@@ -3340,9 +4045,9 @@ figgy-pudding@^3.5.1:
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.npmjs.org/file-loader/-/file-loader-6.2.0.tgz"
+ resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d"
integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==
dependencies:
loader-utils "^2.0.0"
@@ -3401,14 +4106,6 @@ find-cache-dir@^3.3.1:
make-dir "^3.0.2"
pkg-dir "^4.1.0"
-find-up@^1.0.0:
- version "1.1.2"
- resolved "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz"
- 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.npmjs.org/find-up/-/find-up-3.0.0.tgz"
@@ -3434,10 +4131,10 @@ 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.npmjs.org/flatted/-/flatted-3.1.1.tgz"
- 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"
@@ -3462,11 +4159,6 @@ for-in@^1.0.2:
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.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz"
- integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
-
fork-awesome@^1.1.7:
version "1.1.7"
resolved "https://registry.npmjs.org/fork-awesome/-/fork-awesome-1.1.7.tgz"
@@ -3499,15 +4191,6 @@ form-data@^2.5.0:
combined-stream "^1.0.6"
mime-types "^2.1.12"
-form-data@~2.3.2:
- version "2.3.3"
- resolved "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz"
- 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.npmjs.org/forwarded/-/forwarded-0.1.2.tgz"
@@ -3583,43 +4266,22 @@ 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.npmjs.org/fstream/-/fstream-1.0.12.tgz"
- 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.npmjs.org/function-bind/-/function-bind-1.1.1.tgz"
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
-gauge@~2.7.3:
- version "2.7.4"
- resolved "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz"
- 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.npmjs.org/gaze/-/gaze-1.1.3.tgz"
- 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.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz"
integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
@@ -3638,11 +4300,6 @@ get-intrinsic@^1.0.2:
has "^1.0.3"
has-symbols "^1.0.1"
-get-stdin@^4.0.1:
- version "4.0.1"
- resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz"
- integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=
-
get-stream@^4.0.0:
version "4.1.0"
resolved "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz"
@@ -3655,13 +4312,6 @@ get-value@^2.0.3, get-value@^2.0.6:
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.npmjs.org/getpass/-/getpass-0.1.7.tgz"
- integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=
- dependencies:
- assert-plus "^1.0.0"
-
glob-parent@^3.1.0:
version "3.1.0"
resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz"
@@ -3677,7 +4327,14 @@ glob-parent@~5.1.0:
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.npmjs.org/glob/-/glob-7.1.6.tgz"
integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
@@ -3689,6 +4346,18 @@ 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.npmjs.org/global-modules/-/global-modules-1.0.0.tgz"
@@ -3741,15 +4410,6 @@ globby@^6.1.0:
pify "^2.0.0"
pinkie-promise "^2.0.0"
-globule@^1.0.0:
- version "1.3.2"
- resolved "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz"
- 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.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz"
@@ -3760,26 +4420,6 @@ handle-thing@^2.0.0:
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.npmjs.org/har-schema/-/har-schema-2.0.0.tgz"
- integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
-
-har-validator@~5.1.3:
- version "5.1.5"
- resolved "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz"
- 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.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz"
- integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
- dependencies:
- ansi-regex "^2.0.0"
-
has-flag@^3.0.0:
version "3.0.0"
resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz"
@@ -3795,11 +4435,6 @@ has-symbols@^1.0.1:
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.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz"
- integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
-
has-value@^0.3.1:
version "0.3.1"
resolved "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz"
@@ -3855,6 +4490,13 @@ hash.js@^1.0.0, hash.js@^1.0.3:
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.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz"
@@ -3876,11 +4518,6 @@ homedir-polyfill@^1.0.1:
dependencies:
parse-passwd "^1.0.0"
-hosted-git-info@^2.1.4:
- version "2.8.8"
- resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz"
- integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==
-
hpack.js@^2.1.6:
version "2.1.6"
resolved "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz"
@@ -3972,15 +4609,6 @@ http-proxy@^1.17.0:
follow-redirects "^1.0.0"
requires-port "^1.0.0"
-http-signature@~1.2.0:
- version "1.2.0"
- resolved "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz"
- 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.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz"
@@ -4010,6 +4638,11 @@ iferr@^0.1.5:
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.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz"
@@ -4053,18 +4686,6 @@ imurmurhash@^0.1.4:
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.npmjs.org/in-publish/-/in-publish-2.0.1.tgz"
- integrity sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==
-
-indent-string@^2.1.0:
- version "2.1.0"
- resolved "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz"
- integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=
- dependencies:
- repeating "^2.0.0"
-
indent-string@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz"
@@ -4088,7 +4709,7 @@ inflight@^1.0.4:
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.npmjs.org/inherits/-/inherits-2.0.4.tgz"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@@ -4221,6 +4842,13 @@ 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.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz"
@@ -4287,18 +4915,6 @@ is-extglob@^2.1.0, is-extglob@^2.1.1:
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.npmjs.org/is-finite/-/is-finite-1.1.0.tgz"
- integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==
-
-is-fullwidth-code-point@^1.0.0:
- version "1.0.0"
- resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz"
- integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
- dependencies:
- number-is-nan "^1.0.0"
-
is-fullwidth-code-point@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz"
@@ -4403,16 +5019,6 @@ is-symbol@^1.0.2:
dependencies:
has-symbols "^1.0.1"
-is-typedarray@~1.0.0:
- version "1.0.0"
- resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz"
- integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
-
-is-utf8@^0.2.0:
- version "0.2.1"
- resolved "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz"
- integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
-
is-windows@^1.0.1, is-windows@^1.0.2:
version "1.0.2"
resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz"
@@ -4445,11 +5051,6 @@ isobject@^3.0.0, isobject@^3.0.1:
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.npmjs.org/isstream/-/isstream-0.1.2.tgz"
- integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
-
jest-worker@^26.5.0:
version "26.6.2"
resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz"
@@ -4459,17 +5060,12 @@ jest-worker@^26.5.0:
merge-stream "^2.0.0"
supports-color "^7.0.0"
-js-base64@^2.1.8:
- version "2.6.4"
- resolved "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz"
- integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==
-
js-tokens@^4.0.0:
version "4.0.0"
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.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz"
integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
@@ -4477,11 +5073,6 @@ js-yaml@^3.13.1, js-yaml@^3.14.0:
argparse "^1.0.7"
esprima "^4.0.0"
-jsbn@~0.1.0:
- version "0.1.1"
- resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz"
- integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
-
jsesc@^2.5.1:
version "2.5.2"
resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz"
@@ -4507,16 +5098,6 @@ json-schema-traverse@^0.4.1:
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.npmjs.org/json-schema/-/json-schema-0.2.3.tgz"
- integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
-
-json-stringify-safe@~5.0.1:
- version "5.0.1"
- resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz"
- integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
-
json3@^3.3.3:
version "3.3.3"
resolved "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz"
@@ -4536,6 +5117,11 @@ json5@^2.1.2:
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.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz"
@@ -4545,16 +5131,6 @@ jsonfile@^6.0.1:
optionalDependencies:
graceful-fs "^4.1.6"
-jsprim@^1.2.2:
- version "1.4.1"
- resolved "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz"
- 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.npmjs.org/killable/-/killable-1.0.1.tgz"
@@ -4584,6 +5160,11 @@ kind-of@^6.0.0, kind-of@^6.0.2:
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.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz"
@@ -4609,17 +5190,6 @@ linkify-it@^2.0.0:
dependencies:
uc.micro "^1.0.1"
-load-json-file@^1.0.0:
- version "1.1.0"
- resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz"
- 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"
-
loader-runner@^2.4.0:
version "2.4.0"
resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz"
@@ -4663,6 +5233,11 @@ lodash._reinterpolate@^3.0.0:
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.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz"
@@ -4698,37 +5273,21 @@ lodash.uniq@^4.5.0:
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.npmjs.org/lodash/-/lodash-4.17.20.tgz"
- integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
-
lodash@^4.17.11, lodash@^4.17.14:
version "4.17.21"
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.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.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz"
- 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.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz"
- 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.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz"
@@ -4763,11 +5322,6 @@ map-cache@^0.2.2:
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.npmjs.org/map-obj/-/map-obj-1.0.1.tgz"
- integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=
-
map-visit@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz"
@@ -4838,22 +5392,6 @@ memory-fs@^0.5.0:
errno "^0.1.3"
readable-stream "^2.0.1"
-meow@^3.7.0:
- version "3.7.0"
- resolved "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz"
- 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.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz"
@@ -4906,7 +5444,7 @@ mime-db@1.46.0, "mime-db@>= 1.43.0 < 2":
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.npmjs.org/mime-types/-/mime-types-2.1.28.tgz"
integrity sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==
@@ -4950,14 +5488,21 @@ minimalistic-crypto-utils@^1.0.1:
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.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.npmjs.org/minimist/-/minimist-1.2.5.tgz"
integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
@@ -5022,7 +5567,7 @@ mixin-deep@^1.2.0:
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.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz"
integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
@@ -5084,11 +5629,6 @@ nan@^2.12.1:
resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb"
integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==
-nan@^2.13.2:
- version "2.14.2"
- resolved "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz"
- integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==
-
nanomatch@^1.2.9:
version "1.2.13"
resolved "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz"
@@ -5111,7 +5651,7 @@ negotiator@0.6.2:
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.npmjs.org/neo-async/-/neo-async-2.6.2.tgz"
integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
@@ -5131,24 +5671,6 @@ node-forge@^0.10.0:
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.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz"
- 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.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz"
@@ -5183,45 +5705,10 @@ node-releases@^1.1.70:
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.npmjs.org/node-sass/-/node-sass-4.14.1.tgz"
- 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.npmjs.org/nopt/-/nopt-3.0.6.tgz"
- 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.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz"
- 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"
@@ -5262,16 +5749,6 @@ npm-run-path@^2.0.0:
dependencies:
path-key "^2.0.0"
-"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0:
- version "4.1.2"
- resolved "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz"
- 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.npmjs.org/nth-check/-/nth-check-1.0.2.tgz"
@@ -5284,16 +5761,6 @@ num2fraction@^1.2.2:
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.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz"
- integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
-
-oauth-sign@~0.9.0:
- version "0.9.0"
- resolved "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz"
- 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.npmjs.org/object-assign/-/object-assign-4.1.1.tgz"
@@ -5400,10 +5867,10 @@ opn@^5.5.0:
dependencies:
is-wsl "^1.1.0"
-optimize-css-assets-webpack-plugin@^5.0.3:
- version "5.0.4"
- resolved "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.4.tgz"
- 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"
@@ -5413,6 +5880,11 @@ orderedmap@^1.1.0:
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.npmjs.org/original/-/original-1.0.2.tgz"
@@ -5425,24 +5897,6 @@ os-browserify@^0.3.0:
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.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz"
- integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
-
-os-tmpdir@^1.0.0:
- version "1.0.2"
- resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz"
- integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
-
-osenv@0:
- version "0.1.5"
- resolved "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz"
- 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.npmjs.org/p-finally/-/p-finally-1.0.0.tgz"
@@ -5532,13 +5986,6 @@ 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.npmjs.org/parse-json/-/parse-json-2.2.0.tgz"
- integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
- dependencies:
- error-ex "^1.2.0"
-
parse-json@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz"
@@ -5587,13 +6034,6 @@ path-dirname@^1.0.0:
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.npmjs.org/path-exists/-/path-exists-2.1.0.tgz"
- integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=
- dependencies:
- pinkie-promise "^2.0.0"
-
path-exists@^3.0.0:
version "3.0.0"
resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz"
@@ -5624,20 +6064,16 @@ path-parse@^1.0.6:
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.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.npmjs.org/path-type/-/path-type-1.1.0.tgz"
- 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.npmjs.org/path-type/-/path-type-4.0.0.tgz"
@@ -5654,10 +6090,10 @@ 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.npmjs.org/performance-now/-/performance-now-2.1.0.tgz"
- 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"
@@ -5700,10 +6136,10 @@ pkg-dir@^4.1.0:
dependencies:
find-up "^4.0.0"
-pnp-webpack-plugin@^1.6.4:
- version "1.6.4"
- resolved "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz"
- 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"
@@ -6484,6 +6920,13 @@ prosemirror-model@^1.0.0, prosemirror-model@^1.1.0, prosemirror-model@^1.2.0:
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.npmjs.org/prosemirror-schema-basic/-/prosemirror-schema-basic-1.1.2.tgz"
@@ -6507,6 +6950,23 @@ prosemirror-state@^1.0.0, prosemirror-state@^1.2.2:
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.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.2.11.tgz"
@@ -6523,6 +6983,15 @@ prosemirror-view@^1.0.0, prosemirror-view@^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.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz"
@@ -6536,16 +7005,6 @@ prr@~1.0.1:
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.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz"
- integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
-
-psl@^1.1.28:
- version "1.8.0"
- resolved "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz"
- integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==
-
public-encrypt@^4.0.0:
version "4.0.3"
resolved "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz"
@@ -6593,7 +7052,7 @@ punycode@^1.2.4:
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.npmjs.org/punycode/-/punycode-2.1.1.tgz"
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
@@ -6608,11 +7067,6 @@ qs@6.7.0:
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.npmjs.org/qs/-/qs-6.5.2.tgz"
- integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
-
query-string@^4.1.0:
version "4.3.4"
resolved "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz"
@@ -6673,24 +7127,7 @@ read-cache@^1.0.0:
dependencies:
pify "^2.3.0"
-read-pkg-up@^1.0.1:
- version "1.0.1"
- resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz"
- 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.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz"
- 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.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz"
integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
@@ -6728,13 +7165,19 @@ readdirp@~3.5.0:
dependencies:
picomatch "^2.2.1"
-redent@^1.0.0:
- version "1.0.0"
- resolved "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz"
- 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"
@@ -6743,16 +7186,26 @@ regenerate-unicode-properties@^8.2.0:
dependencies:
regenerate "^1.4.0"
-regenerate@^1.4.0:
+regenerate@^1.4.0, regenerate@^1.4.2:
version "1.4.2"
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.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.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz"
@@ -6760,6 +7213,13 @@ regenerator-transform@^0.14.2:
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.npmjs.org/regex-not/-/regex-not-1.0.2.tgz"
@@ -6788,6 +7248,18 @@ 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.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz"
@@ -6800,6 +7272,13 @@ regjsparser@^0.6.4:
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.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz"
@@ -6815,39 +7294,6 @@ repeat-string@^1.6.1:
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.npmjs.org/repeating/-/repeating-2.0.1.tgz"
- integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=
- dependencies:
- is-finite "^1.0.0"
-
-request@^2.87.0, request@^2.88.0:
- version "2.88.2"
- resolved "https://registry.npmjs.org/request/-/request-2.88.2.tgz"
- 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.npmjs.org/require-directory/-/require-directory-2.1.1.tgz"
@@ -6893,7 +7339,7 @@ resolve-url@^0.2.1:
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.npmjs.org/resolve/-/resolve-1.20.0.tgz"
integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==
@@ -6901,6 +7347,15 @@ resolve@^1.1.7, resolve@^1.10.0, resolve@^1.12.0:
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.npmjs.org/ret/-/ret-0.1.15.tgz"
@@ -6921,7 +7376,7 @@ rgba-regex@^1.0.0:
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.npmjs.org/rimraf/-/rimraf-2.7.1.tgz"
integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
@@ -6972,31 +7427,30 @@ safe-regex@^1.1.0:
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.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.npmjs.org/sass-graph/-/sass-graph-2.2.5.tgz"
- 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.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz"
- 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"
@@ -7021,7 +7475,7 @@ schema-utils@^1.0.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.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz"
integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==
@@ -7039,14 +7493,6 @@ schema-utils@^3.0.0:
ajv "^6.12.5"
ajv-keywords "^3.5.2"
-scss-tokenizer@^0.2.3:
- version "0.2.3"
- resolved "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz"
- 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.npmjs.org/select-hose/-/select-hose-2.0.0.tgz"
@@ -7059,21 +7505,26 @@ selfsigned@^1.10.8:
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.npmjs.org/semver/-/semver-5.7.1.tgz"
- integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
-
semver@7.0.0:
version "7.0.0"
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.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.npmjs.org/semver/-/semver-7.3.4.tgz"
@@ -7081,11 +7532,6 @@ semver@^7.3.2:
dependencies:
lru-cache "^6.0.0"
-semver@~5.3.0:
- version "5.3.0"
- resolved "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz"
- integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8=
-
send@0.17.1:
version "0.17.1"
resolved "https://registry.npmjs.org/send/-/send-0.17.1.tgz"
@@ -7142,7 +7588,7 @@ 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.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz"
integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
@@ -7180,13 +7626,6 @@ sha.js@^2.4.0, sha.js@^2.4.8:
inherits "^2.0.1"
safe-buffer "^5.0.1"
-shallow-clone@^3.0.0:
- version "3.0.1"
- resolved "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz"
- integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==
- dependencies:
- kind-of "^6.0.2"
-
shebang-command@^1.2.0:
version "1.2.0"
resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz"
@@ -7274,6 +7713,11 @@ source-list-map@^2.0.0:
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.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz"
@@ -7298,13 +7742,6 @@ source-map-url@^0.4.0:
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.npmjs.org/source-map/-/source-map-0.4.4.tgz"
- 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.npmjs.org/source-map/-/source-map-0.5.7.tgz"
@@ -7325,32 +7762,6 @@ spark-md5@^3.0.0:
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.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz"
- 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.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz"
- integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==
-
-spdx-expression-parse@^3.0.0:
- version "3.0.1"
- resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz"
- 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.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz"
- integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==
-
spdy-transport@^3.0.0:
version "3.0.0"
resolved "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz"
@@ -7386,21 +7797,6 @@ sprintf-js@~1.0.2:
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.npmjs.org/sshpk/-/sshpk-1.16.1.tgz"
- 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.npmjs.org/ssri/-/ssri-6.0.1.tgz"
@@ -7438,13 +7834,6 @@ static-extend@^0.1.1:
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.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz"
- integrity sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==
- dependencies:
- readable-stream "^2.0.1"
-
stimulus@^1.1.1:
version "1.1.1"
resolved "https://registry.npmjs.org/stimulus/-/stimulus-1.1.1.tgz"
@@ -7490,23 +7879,6 @@ strict-uri-encode@^1.0.0:
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.npmjs.org/string-width/-/string-width-1.0.2.tgz"
- 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.npmjs.org/string-width/-/string-width-2.1.1.tgz"
- 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.npmjs.org/string-width/-/string-width-3.1.0.tgz"
@@ -7551,20 +7923,13 @@ string_decoder@~1.1.1:
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.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.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz"
- 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.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz"
@@ -7572,28 +7937,14 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
dependencies:
ansi-regex "^4.1.0"
-strip-bom@^2.0.0:
- version "2.0.0"
- resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz"
- integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=
- dependencies:
- is-utf8 "^0.2.0"
-
strip-eof@^1.0.0:
version "1.0.0"
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.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz"
- 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.npmjs.org/style-loader/-/style-loader-1.3.0.tgz"
+ resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.3.0.tgz#828b4a3b3b7e7aa5847ce7bae9e874512114249e"
integrity sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q==
dependencies:
loader-utils "^2.0.0"
@@ -7608,11 +7959,6 @@ stylehacks@^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.npmjs.org/supports-color/-/supports-color-2.0.0.tgz"
- integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
-
supports-color@^5.3.0:
version "5.5.0"
resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz"
@@ -7634,6 +7980,11 @@ supports-color@^7.0.0, supports-color@^7.1.0:
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.npmjs.org/svgo/-/svgo-1.3.2.tgz"
@@ -7658,15 +8009,6 @@ tapable@^1.0.0, tapable@^1.1.3:
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.npmjs.org/tar/-/tar-2.2.2.tgz"
- 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.npmjs.org/tar/-/tar-6.1.0.tgz"
@@ -7701,9 +8043,9 @@ 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.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz"
+ 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==
dependencies:
cacache "^15.0.5"
@@ -7806,26 +8148,6 @@ toidentifier@1.0.0:
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.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz"
- 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.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz"
- integrity sha1-WIeWa7WCpFA6QetST301ARgVphM=
-
-"true-case-path@^1.0.2":
- version "1.0.3"
- resolved "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz"
- 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.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz"
@@ -7841,23 +8163,11 @@ tty-browserify@0.0.0:
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.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz"
- integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=
- dependencies:
- safe-buffer "^5.0.1"
-
turbolinks@^5.2.0:
version "5.2.0"
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.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz"
- integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
-
type-is@~1.6.17, type-is@~1.6.18:
version "1.6.18"
resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz"
@@ -7886,6 +8196,11 @@ unicode-canonical-property-names-ecmascript@^1.0.4:
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.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz"
@@ -7894,16 +8209,34 @@ unicode-match-property-ecmascript@^1.0.4:
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.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.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.npmjs.org/union-value/-/union-value-1.0.1.tgz"
@@ -7966,6 +8299,14 @@ upath@^1.1.1:
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.npmjs.org/uri-js/-/uri-js-4.4.1.tgz"
@@ -8043,14 +8384,6 @@ v8-compile-cache@^2.1.1:
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.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz"
- 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.npmjs.org/vary/-/vary-1.1.2.tgz"
@@ -8061,15 +8394,6 @@ vendors@^1.0.0:
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.npmjs.org/verror/-/verror-1.10.0.tgz"
- 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.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz"
@@ -8201,10 +8525,10 @@ webpack-sources@^1.0.0, webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-
source-list-map "^2.0.0"
source-map "~0.6.1"
-webpack@^4.44.1:
- version "4.46.0"
- resolved "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz"
- 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"
@@ -8249,20 +8573,13 @@ which-module@^2.0.0:
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.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.npmjs.org/wide-align/-/wide-align-1.1.3.tgz"
- integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==
- dependencies:
- string-width "^1.0.2 || 2"
-
worker-farm@^1.7.0:
version "1.7.0"
resolved "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz"
@@ -8301,11 +8618,6 @@ y18n@^4.0.0:
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.npmjs.org/yallist/-/yallist-2.1.2.tgz"
- integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
-
yallist@^3.0.2:
version "3.1.1"
resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz"