Merge branch 'main' into feature/long-questions

This commit is contained in:
Karina Kwiatek 2023-01-11 22:24:58 +01:00 committed by GitHub
commit c919b4913f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
27 changed files with 342 additions and 141 deletions

View file

@ -33,7 +33,7 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v3.2.0 uses: actions/checkout@v3.3.0
# Initializes the CodeQL tools for scanning. # Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL - name: Initialize CodeQL

View file

@ -41,7 +41,7 @@ jobs:
BUNDLE_WITHOUT: 'production' BUNDLE_WITHOUT: 'production'
steps: steps:
- uses: actions/checkout@v3.2.0 - uses: actions/checkout@v3.3.0
- name: Install dependencies - name: Install dependencies
run: sudo apt update && sudo apt-get install -y libpq-dev libxml2-dev libxslt1-dev libmagickwand-dev imagemagick libidn11-dev run: sudo apt update && sudo apt-get install -y libpq-dev libxml2-dev libxslt1-dev libmagickwand-dev imagemagick libidn11-dev
- name: Set up Ruby - name: Set up Ruby
@ -81,7 +81,7 @@ jobs:
lint: lint:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3.2.0 - uses: actions/checkout@v3.3.0
- name: Install dependencies - name: Install dependencies
run: sudo apt update && sudo apt-get install -y libpq-dev libxml2-dev libxslt1-dev libmagickwand-dev imagemagick libidn11-dev run: sudo apt update && sudo apt-get install -y libpq-dev libxml2-dev libxslt1-dev libmagickwand-dev imagemagick libidn11-dev
- name: Set up Ruby - name: Set up Ruby

View file

@ -92,7 +92,7 @@ GEM
activemodel (>= 5.2) activemodel (>= 5.2)
buftok (0.2.0) buftok (0.2.0)
builder (3.2.4) builder (3.2.4)
bullet (7.0.5) bullet (7.0.7)
activesupport (>= 3.0.0) activesupport (>= 3.0.0)
uniform_notifier (~> 1.11) uniform_notifier (~> 1.11)
carrierwave (2.1.0) carrierwave (2.1.0)
@ -314,7 +314,7 @@ GEM
parser (3.1.3.0) parser (3.1.3.0)
ast (~> 2.4.1) ast (~> 2.4.1)
pg (1.4.5) pg (1.4.5)
pghero (3.0.1) pghero (3.1.0)
activerecord (>= 6) activerecord (>= 6)
public_suffix (4.0.7) public_suffix (4.0.7)
puma (6.0.2) puma (6.0.2)
@ -402,7 +402,7 @@ GEM
rspec-its (1.3.0) rspec-its (1.3.0)
rspec-core (>= 3.0.0) rspec-core (>= 3.0.0)
rspec-expectations (>= 3.0.0) rspec-expectations (>= 3.0.0)
rspec-mocks (3.12.1) rspec-mocks (3.12.2)
diff-lcs (>= 1.2.0, < 2.0) diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.12.0) rspec-support (~> 3.12.0)
rspec-rails (6.0.1) rspec-rails (6.0.1)

View file

@ -6,6 +6,10 @@
font-size: 10em; font-size: 10em;
} }
.fs-7 {
font-size: .8rem;
}
.pe-none { .pe-none {
pointer-events: none; pointer-events: none;
} }

View file

@ -80,6 +80,7 @@ $unicodeRangeValues in Lexend.$unicodeMap {
"overrides/minicolors", "overrides/minicolors",
"overrides/modal", "overrides/modal",
"overrides/navbar", "overrides/navbar",
"overrides/popover",
"overrides/turbolinks", "overrides/turbolinks",
"overrides/toasts", "overrides/toasts",
"overrides/sweet-alert"; "overrides/sweet-alert";
@ -109,6 +110,7 @@ $unicodeRangeValues in Lexend.$unicodeMap {
"components/inbox-actions", "components/inbox-actions",
"components/inbox-entry", "components/inbox-entry",
"components/mobile-nav", "components/mobile-nav",
"components/navbar",
"components/notifications", "components/notifications",
"components/profile", "components/profile",
"components/push-settings", "components/push-settings",

View file

@ -1,4 +1,6 @@
.inbox-entry { .inbox-entry {
$this: &;
&--new { &--new {
box-shadow: 0 0.125rem 0.25rem var(--primary); box-shadow: 0 0.125rem 0.25rem var(--primary);
@ -19,4 +21,13 @@
} }
} }
} }
.format-help {
opacity: .3;
}
&:focus-within .format-help,
&:hover .format-help {
opacity: 1;
}
} }

View file

@ -0,0 +1,22 @@
.navbar-dev {
&.fixed-top:before {
top: 0;
}
&:before {
@extend .progress-bar-striped;
@extend .bg-warning;
content: "";
position: absolute;
bottom: 0;
height: 4px;
width: 100%;
background-size: 40px 40px;
@include media-breakpoint-up('md') {
bottom: unset;
top: 0;
}
}
}

View file

@ -0,0 +1,13 @@
.popover {
box-shadow: $box-shadow;
background-color: var(--raised-bg);
}
.rs-popover {
--popover-arrow-border: transparent;
--popover-border-color: transparent;
}
.popover-body p:last-child {
margin-bottom: 0;
}

View file

@ -0,0 +1,18 @@
import { Controller } from '@hotwired/stimulus';
import { Popover } from 'bootstrap';
export default class extends Controller {
connect(): void {
const formatOptionsElement = document.getElementById('formatting-options');
this.element.addEventListener('click', e => e.preventDefault());
new Popover(this.element, {
html: true,
content: formatOptionsElement.innerHTML,
placement: 'bottom',
trigger: 'focus',
customClass: 'rs-popover'
})
}
}

View file

@ -3,6 +3,7 @@ import AnnouncementController from "retrospring/controllers/announcement_control
import AutofocusController from "retrospring/controllers/autofocus_controller"; import AutofocusController from "retrospring/controllers/autofocus_controller";
import CharacterCountController from "retrospring/controllers/character_count_controller"; import CharacterCountController from "retrospring/controllers/character_count_controller";
import CharacterCountWarningController from "retrospring/controllers/character_count_warning_controller"; import CharacterCountWarningController from "retrospring/controllers/character_count_warning_controller";
import FormatPopupController from "retrospring/controllers/format_popup_controller";
/** /**
* This module sets up Stimulus and our controllers * This module sets up Stimulus and our controllers
@ -17,4 +18,5 @@ export default function (): void {
window['Stimulus'].register('autofocus', AutofocusController); window['Stimulus'].register('autofocus', AutofocusController);
window['Stimulus'].register('character-count', CharacterCountController); window['Stimulus'].register('character-count', CharacterCountController);
window['Stimulus'].register('character-count-warning', CharacterCountWarningController); window['Stimulus'].register('character-count-warning', CharacterCountWarningController);
window['Stimulus'].register('format-popup', FormatPopupController);
} }

View file

@ -23,15 +23,17 @@
= render "actions/question", question: i.question = render "actions/question", question: i.question
- if current_user == i.user - if current_user == i.user
.card-body .card-body
%textarea.form-control{ name: "ib-answer", placeholder: t(".placeholder"), data: { id: i.id } } %textarea.form-control.mb-3{ name: "ib-answer", placeholder: t(".placeholder"), data: { id: i.id } }
%br/ .d-sm-flex
%button.btn.btn-success{ name: "ib-answer", data: { ib_id: i.id } } %button.btn.btn-success.me-sm-1{ name: "ib-answer", data: { ib_id: i.id } }
= t("voc.answer") = t("voc.answer")
%button.btn.btn-danger{ name: "ib-destroy", data: { ib_id: i.id } } %button.btn.btn-danger.me-sm-1{ name: "ib-destroy", data: { ib_id: i.id } }
= t("voc.delete") = t("voc.delete")
%button.btn.btn-default{ name: "ib-options", data: { ib_id: i.id, state: :hidden } } %button.btn.btn-default.px-1{ name: "ib-options", data: { ib_id: i.id, state: :hidden } }
%i.fa.fa-chevron-down %i.fa.fa-chevron-down
%span.pe-none= t(".options") %span.pe-none= t(".options")
%p.format-help.ms-auto.align-self-center.mt-2.mt-sm-0.text-center
= render "shared/format_link"
.card-footer.d-none{ id: "ib-options-#{i.id}" } .card-footer.d-none{ id: "ib-options-#{i.id}" }
%h4= t(".sharing.heading") %h4= t(".sharing.heading")
- if current_user.services.count.positive? - if current_user.services.count.positive?

View file

@ -30,6 +30,7 @@
= render 'navigation/guest' = render 'navigation/guest'
= render 'shared/announcements' = render 'shared/announcements'
= yield = yield
= render "shared/formatting"
- if Rails.env.development? - if Rails.env.development?
#debug #debug
%hr %hr

View file

@ -1,10 +1,13 @@
%nav.navbar.navbar-themed.navbar-expand-lg.bg-primary.fixed-top.d-lg-block.d-none.d-print-none{ role: :navigation } %nav.navbar.navbar-themed.navbar-expand-lg.bg-primary.fixed-top.d-lg-block.d-none.d-print-none{ class: Rails.env.development? ? "navbar-dev" : "", role: :navigation }
.container .container
%a.navbar-brand{ href: '/', title: APP_CONFIG["site_name"] } %a.navbar-brand{ href: '/', title: APP_CONFIG["site_name"] }
- if APP_CONFIG["use_svg_logo"] - if APP_CONFIG["use_svg_logo"]
= render inline: Rails.application.config.justask_svg_logo = render inline: Rails.application.config.justask_svg_logo
- else - else
= APP_CONFIG["site_name"] = APP_CONFIG["site_name"]
- if Rails.env.development?
%span.badge.rounded-pill.bg-warning.text-bg-warning.fs-7
DEV
%ul.nav.navbar-nav.me-auto %ul.nav.navbar-nav.me-auto
= nav_entry t("navigation.timeline"), root_path, icon: 'home' = nav_entry t("navigation.timeline"), root_path, icon: 'home'
= nav_entry t("navigation.inbox"), '/inbox', icon: 'inbox', badge: inbox_count = nav_entry t("navigation.inbox"), '/inbox', icon: 'inbox', badge: inbox_count

View file

@ -1,10 +1,13 @@
%nav.navbar.navbar-themed.navbar-expand-lg.bg-primary.fixed-top{ role: :navigation } %nav.navbar.navbar-themed.navbar-expand-lg.bg-primary.fixed-top{ class: Rails.env.development? ? "navbar-dev" : "", role: :navigation }
.container .container
%a.navbar-brand{ href: '/', title: APP_CONFIG["site_name"] } %a.navbar-brand{ href: '/', title: APP_CONFIG["site_name"] }
- if APP_CONFIG["use_svg_logo"] - if APP_CONFIG["use_svg_logo"]
= render inline: Rails.application.config.justask_svg_logo = render inline: Rails.application.config.justask_svg_logo
- else - else
= APP_CONFIG["site_name"] = APP_CONFIG["site_name"]
- if Rails.env.development?
%span.badge.rounded-pill.bg-warning.text-bg-warning.fs-7
DEV
%button.navbar-toggler{ data: { bs_target: '#j2-main-navbar-collapse', bs_toggle: :collapse }, type: :button } %button.navbar-toggler{ data: { bs_target: '#j2-main-navbar-collapse', bs_toggle: :collapse }, type: :button }
%span.visually-hidden= t("navigation.toggle") %span.visually-hidden= t("navigation.toggle")
%span.navbar-toggler-icon %span.navbar-toggler-icon

View file

@ -1,5 +1,5 @@
- notifications_icon = notification_count.nil? ? 'bell-o' : 'bell' - notifications_icon = notification_count.nil? ? 'bell-o' : 'bell'
%nav.navbar.navbar-themed.bg-primary.fixed-bottom.d-lg-none.d-block.d-print-none#rs-mobile-nav{ role: :navigation } %nav.navbar.navbar-themed.bg-primary.fixed-bottom.d-lg-none.d-block.d-print-none#rs-mobile-nav{ class: Rails.env.development? ? "navbar-dev" : "", role: :navigation }
.container .container
%ul.nav.navbar-nav.navbar-icon-row %ul.nav.navbar-nav.navbar-icon-row
= nav_entry t("navigation.timeline"), root_path, icon: 'home', icon_only: true = nav_entry t("navigation.timeline"), root_path, icon: 'home', icon_only: true

View file

@ -0,0 +1,3 @@
%a.text-muted.text-decoration-none.fs-7{ href: "#", data: { controller: "format-popup" }, tabindex: "0" }
%i.fab.fa-markdown
= t("voc.format_markdown")

View file

@ -0,0 +1,2 @@
#formatting-options.d-none{ aria: { hidden: true } }
= t(".body_html", app_name: APP_CONFIG["site_name"])

View file

@ -551,6 +551,13 @@ en:
unsubscribe_all: "Disable on all devices" unsubscribe_all: "Disable on all devices"
description: "Here you can set up or disable push notifications for new questions in your inbox." description: "Here you can set up or disable push notifications for new questions in your inbox."
shared: shared:
formatting:
body_html: |
<p>%{app_name} uses <b>Markdown</b> for formatting</p>
<p>A blank line starts a new paragraph</p>
<p><code>*italic text*</code> for <i>italic text</i></p>
<p><code>**bold text**</code> for <b>bold text</b></p>
<p><code>[link](https://example.com)</code> for <a href="https://example.com">link</a></p>
links: links:
about: "About" about: "About"
source: "Source code" source: "Source code"

View file

@ -10,6 +10,7 @@ en:
delete: "Delete" delete: "Delete"
edit: "Edit" edit: "Edit"
follow: "Follow" follow: "Follow"
format_markdown: "Styling with Markdown is supported"
load: "Load more" load: "Load more"
login: "Sign in" login: "Sign in"
logout: "Sign out" logout: "Sign out"

View file

@ -17,9 +17,9 @@ module Retrospring
def month = 1 def month = 1
def day = 5 def day = 11
def patch = 2 def patch = 0
def suffix = "" def suffix = ""

View file

View file

@ -95,7 +95,7 @@ module UseCase
def filtered?(question) def filtered?(question)
target_user.mute_rules.any? { |rule| rule.applies_to? question } || target_user.mute_rules.any? { |rule| rule.applies_to? question } ||
(anonymous && AnonymousBlock.where(identifier: question.author_identifier, user_id: [target_user.id, nil]).any?) || (anonymous && AnonymousBlock.where(identifier: question.author_identifier, user_id: [target_user.id, nil]).any?) ||
(source_user_id && anonymous && AnonymousBlock.where(target_user_id: [source_user.id, nil], user_id: [target_user.id, nil]).any?) || (source_user_id && anonymous && AnonymousBlock.where(target_user_id: source_user.id, user_id: [target_user.id, nil]).any?) ||
(source_user_id && target_user.muting?(source_user)) (source_user_id && target_user.muting?(source_user))
end end

View file

@ -6,7 +6,7 @@
"build:css": "sass ./app/assets/stylesheets/application.sass.scss:./app/assets/builds/application.css --no-source-map --load-path=node_modules" "build:css": "sass ./app/assets/stylesheets/application.sass.scss:./app/assets/builds/application.css --no-source-map --load-path=node_modules"
}, },
"dependencies": { "dependencies": {
"@fontsource/lexend": "^4.5.13", "@fontsource/lexend": "^4.5.14",
"@fortawesome/fontawesome-free": "^6.2.1", "@fortawesome/fontawesome-free": "^6.2.1",
"@hotwired/stimulus": "^3.2.1", "@hotwired/stimulus": "^3.2.1",
"@hotwired/turbo-rails": "^7.2.4", "@hotwired/turbo-rails": "^7.2.4",
@ -26,7 +26,7 @@
"devDependencies": { "devDependencies": {
"@typescript-eslint/eslint-plugin": "^4.11.0", "@typescript-eslint/eslint-plugin": "^4.11.0",
"@typescript-eslint/parser": "^4.11.0", "@typescript-eslint/parser": "^4.11.0",
"esbuild": "^0.16.14", "esbuild": "^0.16.16",
"eslint": "^7.16.0", "eslint": "^7.16.0",
"eslint-plugin-import": "^2.26.0" "eslint-plugin-import": "^2.26.0"
} }

View file

@ -0,0 +1,16 @@
# frozen_string_literal: true
require "rails_helper"
require "support/load_rake_tasks"
describe "test locale generation" do
it "succeeds" do
allow($stdout).to receive(:puts)
Rake::Task["locale:generate"].execute
%w[activerecord controllers errors frontend views voc].each do |locale_type|
expect($stdout).to have_received(:puts).with a_string_including("generating #{locale_type}.en-xx.yml")
end
end
end

View file

@ -0,0 +1,84 @@
# frozen_string_literal: true
require "rails_helper"
require "support/load_rake_tasks"
describe "version bumping tasks" do
include ActiveSupport::Testing::TimeHelpers
describe "version:bump" do
around do |example|
# make a backup of our version file
version_path = Rails.root.join("lib/retrospring/version.rb")
version_contents = File.read(version_path)
example.run
ensure
# restore our version file
File.write(version_path, version_contents)
end
it "updates the version if the version date differs" do
travel_to(Time.utc(2069, 6, 21, 13, 37, 0))
allow($stdout).to receive(:puts)
Rake::Task["version:bump"].execute
expect($stdout).to have_received(:puts).with "New version: 2069.0621.0"
travel_back
end
context "when version is already from today" do
before do
allow(Retrospring::Version).to receive(:year).and_return 2069
allow(Retrospring::Version).to receive(:month).and_return 6
allow(Retrospring::Version).to receive(:day).and_return 21
allow(Retrospring::Version).to receive(:patch).and_return 0
# just stubbing the constant is not enough, we need to stub away the
# reading of the version file too; otherwise only the patch value is
# updated
version_path = Rails.root.join("lib/retrospring/version.rb")
version_contents = File.read(version_path)
.sub!(/def year = .+/, "def year = 2069")
.sub!(/def month = .+/, "def month = 6")
.sub!(/def day = .+/, "def day = 21")
.sub!(/def patch = .+/, "def patch = 0")
allow(File).to receive(:read).with(version_path).and_return(version_contents)
end
it "updates the version if the version date differs" do
travel_to(Time.utc(2069, 6, 21, 13, 37, 0))
allow($stdout).to receive(:puts)
Rake::Task["version:bump"].execute
expect($stdout).to have_received(:puts).with "Current version: 2069.0621.0"
expect($stdout).to have_received(:puts).with "New version: 2069.0621.1"
travel_back
end
end
end
describe "version:commit" do
before do
allow(Retrospring::Version).to receive(:year).and_return 2069
allow(Retrospring::Version).to receive(:month).and_return 6
allow(Retrospring::Version).to receive(:day).and_return 21
allow(Retrospring::Version).to receive(:patch).and_return 3
end
it "runs the correct git commands" do
allow($stdout).to receive(:puts)
version_path = Rails.root.join("lib/retrospring/version.rb")
expect_any_instance_of(Rake::FileUtilsExt)
.to receive(:sh)
.with(%(git commit -m 'Bump version to 2069.0621.3' -- #{version_path.to_s.inspect}))
expect_any_instance_of(Rake::FileUtilsExt)
.to receive(:sh)
.with(%(git tag -a -m 'Bump version to 2069.0621.3' 2069.0621.3))
Rake::Task["version:commit"].execute
end
end
end

View file

@ -0,0 +1,7 @@
# frozen_string_literal: true
# ensure Rake tasks are only loaded once during the entire RSpec run.
#
# when using it from a `before(:context) { ... }` block this will load the
# tasks more than once and therefore run tasks more often than they should ...
Rails.application.load_tasks

236
yarn.lock
View file

@ -23,115 +23,115 @@
chalk "^2.0.0" chalk "^2.0.0"
js-tokens "^4.0.0" js-tokens "^4.0.0"
"@esbuild/android-arm64@0.16.14": "@esbuild/android-arm64@0.16.16":
version "0.16.14" version "0.16.16"
resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.16.14.tgz#f02c9f0d43086ddf6ed2795b881ddf7990f74456" resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.16.16.tgz#833184b8a0a96f9c85105c53d0a67e6d3c5c3f07"
integrity sha512-hTqB6Iq13pW4xaydeqQrs8vPntUnMjbkq+PgGiBMi69eYk74naG2ftHWqKnxn874kNrt5Or3rQ0PJutx2doJuQ== integrity sha512-hFHVAzUKp9Tf8psGq+bDVv+6hTy1bAOoV/jJMUWwhUnIHsh6WbFMhw0ZTkqDuh7TdpffFoHOiIOIxmHc7oYRBQ==
"@esbuild/android-arm@0.16.14": "@esbuild/android-arm@0.16.16":
version "0.16.14" version "0.16.16"
resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.16.14.tgz#24e4faf569d0d6bbf9ed46f6ed395d68eb7f04fc" resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.16.16.tgz#23761b2fd1dfa4806161dbfc9e0824f04061cb95"
integrity sha512-u0rITLxFIeYAvtJXBQNhNuV4YZe+MD1YvIWT7Nicj8hZAtRVZk2PgNH6KclcKDVHz1ChLKXRfX7d7tkbQBUfrg== integrity sha512-BUuWMlt4WSXod1HSl7aGK8fJOsi+Tab/M0IDK1V1/GstzoOpqc/v3DqmN8MkuapPKQ9Br1WtLAN4uEgWR8x64A==
"@esbuild/android-x64@0.16.14": "@esbuild/android-x64@0.16.16":
version "0.16.14" version "0.16.16"
resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.16.14.tgz#1173e706cf57c0d4dbf069d18e5d50ae6a5b0871" resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.16.16.tgz#ffa09f04c0ffea5b594ab7655fc9ca1220365e9b"
integrity sha512-jir51K4J0K5Rt0KOcippjSNdOl7akKDVz5I6yrqdk4/m9y+rldGptQUF7qU4YpX8U61LtR+w2Tu2Ph+K/UaJOw== integrity sha512-9WhxJpeb6XumlfivldxqmkJepEcELekmSw3NkGrs+Edq6sS5KRxtUBQuKYDD7KqP59dDkxVbaoPIQFKWQG0KLg==
"@esbuild/darwin-arm64@0.16.14": "@esbuild/darwin-arm64@0.16.16":
version "0.16.14" version "0.16.16"
resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.16.14.tgz#67f05693c5b097bcb4ff656ba5839459f30f79c2" resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.16.16.tgz#62ed2b4bfab594b9e5e708580361f1d059b53b26"
integrity sha512-vrlaP81IuwPaw1fyX8fHCmivP3Gr73ojVEZy+oWJLAiZVcG8o8Phwun/XDnYIFUHxIoUnMFEpg9o38MIvlw8zw== integrity sha512-8Z+wld+vr/prHPi2O0X7o1zQOfMbXWGAw9hT0jEyU/l/Yrg+0Z3FO9pjPho72dVkZs4ewZk0bDOFLdZHm8jEfw==
"@esbuild/darwin-x64@0.16.14": "@esbuild/darwin-x64@0.16.16":
version "0.16.14" version "0.16.16"
resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.16.14.tgz#519c9d127c5363d4a1e73b9d954460f798b41d2a" resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.16.16.tgz#e9756d34cd9b3737a5354e89ca0fdca32d8df64c"
integrity sha512-KV1E01eC2hGYA2qzFDRCK4wdZCRUvMwCNcobgpiiOzp5QXpJBqFPdxI69j8vvzuU7oxFXDgANwEkXvpeQqyOyg== integrity sha512-CYkxVvkZzGCqFrt7EgjFxQKhlUPyDkuR9P0Y5wEcmJqVI8ncerOIY5Kej52MhZyzOBXkYrJgZeVZC9xXXoEg9A==
"@esbuild/freebsd-arm64@0.16.14": "@esbuild/freebsd-arm64@0.16.16":
version "0.16.14" version "0.16.16"
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.14.tgz#2e3f5de2951a8ec732a3e4ec4f5d47a7c9626001" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.16.tgz#db7bce444d372e5a213a3f359c42aee3acc0dd45"
integrity sha512-xRM1RQsazSvL42BNa5XC7ytD4ZDp0ZyJcH7aB0SlYUcHexJUKiDNKR7dlRVlpt6W0DvoRPU2nWK/9/QWS4u2fw== integrity sha512-fxrw4BYqQ39z/3Ja9xj/a1gMsVq0xEjhSyI4a9MjfvDDD8fUV8IYliac96i7tzZc3+VytyXX+XNsnpEk5sw5Wg==
"@esbuild/freebsd-x64@0.16.14": "@esbuild/freebsd-x64@0.16.16":
version "0.16.14" version "0.16.16"
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.16.14.tgz#d3cf84ff28357ac8d0123309bac37fcfcdd98f53" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.16.16.tgz#02e8a81b7e56040b5eb883896de445a6cd3501f0"
integrity sha512-7ALTAn6YRRf1O6fw9jmn0rWmOx3XfwDo7njGtjy1LXhDGUjTY/vohEPM3ii5MQ411vJv1r498EEx2aBQTJcrEw== integrity sha512-8p3v1D+du2jiDvSoNVimHhj7leSfST9YlKsAEO7etBfuqjaBMndo0fmjNLp0JCMld+XIx9L80tooOkyUv1a1PQ==
"@esbuild/linux-arm64@0.16.14": "@esbuild/linux-arm64@0.16.16":
version "0.16.14" version "0.16.16"
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.16.14.tgz#f44b0e3d5d470cd763a9bc4855a12b8cb73d6c12" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.16.16.tgz#ea8c3df172644fa6437f0083c2a38b50f89e5b98"
integrity sha512-TLh2OcbBUQcMYRH4GbiDkDZfZ4t1A3GgmeXY27dHSI6xrU7IkO00MGBiJySmEV6sH3Wa6pAN6UtaVL0DwkGW4Q== integrity sha512-N3u6BBbCVY3xeP2D8Db7QY8I+nZ+2AgOopUIqk+5yCoLnsWkcVxD2ay5E9iIdvApFi1Vg1lZiiwaVp8bOpAc4A==
"@esbuild/linux-arm@0.16.14": "@esbuild/linux-arm@0.16.16":
version "0.16.14" version "0.16.16"
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.16.14.tgz#b239eb7e6cb7df9c34c6b08f4adf113da47e0e09" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.16.16.tgz#c1c2e97e67bb7247e6f60e2644de057bfedb8cbb"
integrity sha512-X6xULug66ulrr4IzrW7qq+eq9n4MtEyagdWvj4o4cmWr+JXOT47atjpDF9j5M2zHY0UQBmqnHhwl+tXpkpIb2w== integrity sha512-bYaocE1/PTMRmkgSckZ0D0Xn2nox8v2qlk+MVVqm+VECNKDdZvghVZtH41dNtBbwADSvA6qkCHGYeWm9LrNCBw==
"@esbuild/linux-ia32@0.16.14": "@esbuild/linux-ia32@0.16.16":
version "0.16.14" version "0.16.16"
resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.16.14.tgz#f5f7886027cd61bed59178e981a0ef47ca5b72ef" resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.16.16.tgz#9a0b0e926926f891a3e7f7c50bb38e3db49c2c9a"
integrity sha512-oBZkcZ56UZDFCAfE3Fd/Jgy10EoS7Td77NzNGenM+HSY8BkdQAcI9VF9qgwdOLZ+tuftWD7UqZ26SAhtvA3XhA== integrity sha512-dxjqLKUW8GqGemoRT9v8IgHk+T4tRm1rn1gUcArsp26W9EkK/27VSjBVUXhEG5NInHZ92JaQ3SSMdTwv/r9a2A==
"@esbuild/linux-loong64@0.16.14": "@esbuild/linux-loong64@0.16.16":
version "0.16.14" version "0.16.16"
resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.16.14.tgz#d2329371726f9778156c89ea0bed26fc1bc3cd7e" resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.16.16.tgz#c5a50ff5981d457ed45f42c3f06a60086759c79b"
integrity sha512-udz/aEHTcuHP+xdWOJmZ5C9RQXHfZd/EhCnTi1Hfay37zH3lBxn/fNs85LA9HlsniFw2zccgcbrrTMKk7Cn1Qg== integrity sha512-MdUFggHjRiCCwNE9+1AibewoNq6wf94GLB9Q9aXwl+a75UlRmbRK3h6WJyrSGA6ZstDJgaD2wiTSP7tQNUYxwA==
"@esbuild/linux-mips64el@0.16.14": "@esbuild/linux-mips64el@0.16.16":
version "0.16.14" version "0.16.16"
resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.16.14.tgz#8af86bdc6ee937c8a2803b3c197b28824f48df8e" resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.16.16.tgz#e85b7e3c25000be2ae373e5208e55e282a9763e0"
integrity sha512-kJ2iEnikUOdC1SiTGbH0fJUgpZwa0ITDTvj9EHf9lm3I0hZ4Yugsb3M6XSl696jVxrEocLe519/8CbSpQWFSrg== integrity sha512-CO3YmO7jYMlGqGoeFeKzdwx/bx8Vtq/SZaMAi+ZLDUnDUdfC7GmGwXzIwDJ70Sg+P9pAemjJyJ1icKJ9R3q/Fg==
"@esbuild/linux-ppc64@0.16.14": "@esbuild/linux-ppc64@0.16.16":
version "0.16.14" version "0.16.16"
resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.16.14.tgz#3fa3f8c6c9db3127f2ec5b2eba1cec67ff9a9b8e" resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.16.16.tgz#24a0013bf727830df44fece571172ebe31b5c5e6"
integrity sha512-kclKxvZvX5YhykwlJ/K9ljiY4THe5vXubXpWmr7q3Zu3WxKnUe1VOZmhkEZlqtnJx31GHPEV4SIG95IqTdfgfg== integrity sha512-DSl5Czh5hCy/7azX0Wl9IdzPHX2H8clC6G87tBnZnzUpNgRxPFhfmArbaHoAysu4JfqCqbB/33u/GL9dUgCBAw==
"@esbuild/linux-riscv64@0.16.14": "@esbuild/linux-riscv64@0.16.16":
version "0.16.14" version "0.16.16"
resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.16.14.tgz#1bd1b631de2533106a08876295bad3a19b20f629" resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.16.16.tgz#b080998d8d0480e8235f1384c585ae505e98a19d"
integrity sha512-fdwP9Dc+Kx/cZwp9T9kNqjAE/PQjfrxbio4rZ3XnC3cVvZBjuxpkiyu/tuCwt6SbAK5th6AYNjFdEV9kGC020A== integrity sha512-sSVVMEXsqf1fQu0j7kkhXMViroixU5XoaJXl1u/u+jbXvvhhCt9YvA/B6VM3aM/77HuRQ94neS5bcisijGnKFQ==
"@esbuild/linux-s390x@0.16.14": "@esbuild/linux-s390x@0.16.16":
version "0.16.14" version "0.16.16"
resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.16.14.tgz#c87440b6522b9a36a9cafd05b0f1ca3c5bad4cca" resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.16.16.tgz#5042de05b9b653dfd134f05e1b37b61704c14c42"
integrity sha512-++fw3P4fQk9nqvdzbANRqimKspL8pDCnSpXomyhV7V/ISha/BZIYvZwLBWVKp9CVWKwWPJ4ktsezuLIvlJRHqA== integrity sha512-jRqBCre9gZGoCdCN/UWCCMwCMsOg65IpY9Pyj56mKCF5zXy9d60kkNRdDN6YXGjr3rzcC4DXnS/kQVCGcC4yPQ==
"@esbuild/linux-x64@0.16.14": "@esbuild/linux-x64@0.16.16":
version "0.16.14" version "0.16.16"
resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.16.14.tgz#49cd974dad6042ac0141ba332df6307c44e77fed" resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.16.16.tgz#b7c0750f2276c9dcf41f0f2229adca46ef22f698"
integrity sha512-TomtswAuzBf2NnddlrS4W01Tv85RM9YtATB3OugY6On0PLM4Ksz5qvQKVAjtzPKoLgL1FiZtfc8mkZc4IgoMEA== integrity sha512-G1+09TopOzo59/55lk5Q0UokghYLyHTKKzD5lXsAOOlGDbieGEFJpJBr3BLDbf7cz89KX04sBeExAR/pL/26sA==
"@esbuild/netbsd-x64@0.16.14": "@esbuild/netbsd-x64@0.16.16":
version "0.16.14" version "0.16.16"
resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.16.14.tgz#53dcfb5131376feff0911adff7f01b4821706cf6" resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.16.16.tgz#e2a0ee181fbbe834174d26e24ce1b258232bb3eb"
integrity sha512-U06pfx8P5CqyoPNfqIJmnf+5/r4mJ1S62G4zE6eOjS59naQcxi6GnscUCPH3b+hRG0qdKoGX49RAyiqW+M9aSw== integrity sha512-xwjGJB5wwDEujLaJIrSMRqWkbigALpBNcsF9SqszoNKc+wY4kPTdKrSxiY5ik3IatojePP+WV108MvF6q6np4w==
"@esbuild/openbsd-x64@0.16.14": "@esbuild/openbsd-x64@0.16.16":
version "0.16.14" version "0.16.16"
resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.16.14.tgz#f36888f73087bcd12c5bf9a4b18e348da9c80ad0" resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.16.16.tgz#87a84c1932e00f52ab3380c31facf0e48086ffb9"
integrity sha512-/Jl8XVaWEZNu9rZw+n792GIBupQwHo6GDoapHSb/2xp/Ku28eK6QpR2O9cPBkzHH4OOoMH0LB6zg/qczJ5TTGg== integrity sha512-yeERkoxG2nR2oxO5n+Ms7MsCeNk23zrby2GXCqnfCpPp7KNc0vxaaacIxb21wPMfXXRhGBrNP4YLIupUBrWdlg==
"@esbuild/sunos-x64@0.16.14": "@esbuild/sunos-x64@0.16.16":
version "0.16.14" version "0.16.16"
resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.16.14.tgz#41e046bb0849ae59702a5cfa8be300431a61ee3a" resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.16.16.tgz#996bcd2603cd345733c3aa5f52bfd5b8fa7d1d36"
integrity sha512-2iI7D34uTbDn/TaSiUbEHz+fUa8KbN90vX5yYqo12QGpu6T8Jl+kxODsWuMCwoTVlqUpwfPV22nBbFPME9OPtw== integrity sha512-nHfbEym0IObXPhtX6Va3H5GaKBty2kdhlAhKmyCj9u255ktAj0b1YACUs9j5H88NRn9cJCthD1Ik/k9wn8YKVg==
"@esbuild/win32-arm64@0.16.14": "@esbuild/win32-arm64@0.16.16":
version "0.16.14" version "0.16.16"
resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.16.14.tgz#d6ed78742a6edd413e75796882ddaef8c1e23b93" resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.16.16.tgz#404a9411d12533d0f2ce0a85df6ddb32e851ef04"
integrity sha512-SjlM7AHmQVTiGBJE/nqauY1aDh80UBsXZ94g4g60CDkrDMseatiqALVcIuElg4ZSYzJs8hsg5W6zS2zLpZTVgg== integrity sha512-pdD+M1ZOFy4hE15ZyPX09fd5g4DqbbL1wXGY90YmleVS6Y5YlraW4BvHjim/X/4yuCpTsAFvsT4Nca2lbyDH/A==
"@esbuild/win32-ia32@0.16.14": "@esbuild/win32-ia32@0.16.16":
version "0.16.14" version "0.16.16"
resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.16.14.tgz#558bd53859a83fe887d7d2dcdc6cb3fc9aa9a9bc" resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.16.16.tgz#bb5655a48f5f87fee870061883411f5149bc5e44"
integrity sha512-z06t5zqk8ak0Xom5HG81z2iOQ1hNWYsFQp3sczVLVx+dctWdgl80tNRyTbwjaFfui2vFO12dfE3trCTvA+HO4g== integrity sha512-IPEMfU9p0c3Vb8PqxaPX6BM9rYwlTZGYOf9u+kMdhoILZkVKEjq6PKZO0lB+isojWwAnAqh4ZxshD96njTXajg==
"@esbuild/win32-x64@0.16.14": "@esbuild/win32-x64@0.16.16":
version "0.16.14" version "0.16.16"
resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.16.14.tgz#90558dcb279989d92a42e5be4dfb884b2399361f" resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.16.16.tgz#ee22fed0b2e0c00ce895cdfae9d32ef069a12e04"
integrity sha512-ED1UpWcM6lAbalbbQ9TrGqJh4Y9TaASUvu8bI/0mgJcxhSByJ6rbpgqRhxYMaQ682WfA71nxUreaTO7L275zrw== integrity sha512-1YYpoJ39WV/2bnShPwgdzJklc+XS0bysN6Tpnt1cWPdeoKOG4RMEY1g7i534QxXX/rPvNx/NLJQTTCeORYzipg==
"@eslint/eslintrc@^0.4.3": "@eslint/eslintrc@^0.4.3":
version "0.4.3" version "0.4.3"
@ -148,10 +148,10 @@
minimatch "^3.0.4" minimatch "^3.0.4"
strip-json-comments "^3.1.1" strip-json-comments "^3.1.1"
"@fontsource/lexend@^4.5.13": "@fontsource/lexend@^4.5.14":
version "4.5.13" version "4.5.14"
resolved "https://registry.yarnpkg.com/@fontsource/lexend/-/lexend-4.5.13.tgz#a22076e1393af0f075e945fcffc9ffa514805304" resolved "https://registry.yarnpkg.com/@fontsource/lexend/-/lexend-4.5.14.tgz#04c7a12650aff6e6d030c6e84c9e1ee94f219764"
integrity sha512-lJjBMU9Jmi2a/QqLRBhwe862385UyS2RckS3ATr8jHAq1JFLxox2p2gODNzhaWo0ZwTjDxIJ0YfMiEzSdyqZ0w== integrity sha512-6ctm23JzSITVKi6Kjnw5chfE5rZLUa50DpFbXHQlgjrwNtdvEg1mH6JYLQAZM4VtMmg2JfiSQyoCvePGvvhTVg==
"@fortawesome/fontawesome-free@^6.2.1": "@fortawesome/fontawesome-free@^6.2.1":
version "6.2.1" version "6.2.1"
@ -639,33 +639,33 @@ es-to-primitive@^1.2.1:
is-date-object "^1.0.1" is-date-object "^1.0.1"
is-symbol "^1.0.2" is-symbol "^1.0.2"
esbuild@^0.16.14: esbuild@^0.16.16:
version "0.16.14" version "0.16.16"
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.16.14.tgz#366249a0a0fd431d3ab706195721ef1014198919" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.16.16.tgz#e8a27820a30cc1449066f9bbe8916b145dbc9046"
integrity sha512-6xAn3O6ZZyoxZAEkwfI9hw4cEqSr/o1ViJtnkvImVkblmUN65Md04o0S/7H1WNu1XGf1Cjij/on7VO4psIYjkw== integrity sha512-24JyKq10KXM5EBIgPotYIJ2fInNWVVqflv3gicIyQqfmUqi4HvDW1VR790cBgLJHCl96Syy7lhoz7tLFcmuRmg==
optionalDependencies: optionalDependencies:
"@esbuild/android-arm" "0.16.14" "@esbuild/android-arm" "0.16.16"
"@esbuild/android-arm64" "0.16.14" "@esbuild/android-arm64" "0.16.16"
"@esbuild/android-x64" "0.16.14" "@esbuild/android-x64" "0.16.16"
"@esbuild/darwin-arm64" "0.16.14" "@esbuild/darwin-arm64" "0.16.16"
"@esbuild/darwin-x64" "0.16.14" "@esbuild/darwin-x64" "0.16.16"
"@esbuild/freebsd-arm64" "0.16.14" "@esbuild/freebsd-arm64" "0.16.16"
"@esbuild/freebsd-x64" "0.16.14" "@esbuild/freebsd-x64" "0.16.16"
"@esbuild/linux-arm" "0.16.14" "@esbuild/linux-arm" "0.16.16"
"@esbuild/linux-arm64" "0.16.14" "@esbuild/linux-arm64" "0.16.16"
"@esbuild/linux-ia32" "0.16.14" "@esbuild/linux-ia32" "0.16.16"
"@esbuild/linux-loong64" "0.16.14" "@esbuild/linux-loong64" "0.16.16"
"@esbuild/linux-mips64el" "0.16.14" "@esbuild/linux-mips64el" "0.16.16"
"@esbuild/linux-ppc64" "0.16.14" "@esbuild/linux-ppc64" "0.16.16"
"@esbuild/linux-riscv64" "0.16.14" "@esbuild/linux-riscv64" "0.16.16"
"@esbuild/linux-s390x" "0.16.14" "@esbuild/linux-s390x" "0.16.16"
"@esbuild/linux-x64" "0.16.14" "@esbuild/linux-x64" "0.16.16"
"@esbuild/netbsd-x64" "0.16.14" "@esbuild/netbsd-x64" "0.16.16"
"@esbuild/openbsd-x64" "0.16.14" "@esbuild/openbsd-x64" "0.16.16"
"@esbuild/sunos-x64" "0.16.14" "@esbuild/sunos-x64" "0.16.16"
"@esbuild/win32-arm64" "0.16.14" "@esbuild/win32-arm64" "0.16.16"
"@esbuild/win32-ia32" "0.16.14" "@esbuild/win32-ia32" "0.16.16"
"@esbuild/win32-x64" "0.16.14" "@esbuild/win32-x64" "0.16.16"
escape-string-regexp@^1.0.5: escape-string-regexp@^1.0.5:
version "1.0.5" version "1.0.5"