diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index ffa90be..3ad0bbb 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -45,7 +45,15 @@
"extensions": [
"Shopify.ruby-lsp",
"TabbyML.vscode-tabby"
- ]
- }
+ ],
+ "settings": {
+ "terminal.integrated.defaultProfile.linux": "fish",
+ "terminal.integrated.profiles.linux": {
+ "fish": {
+ "path": "/bin/fish"
+ }
+ }
+ }
+ },
}
}
diff --git a/Dockerfile b/Dockerfile
index d48e011..43cae04 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -47,8 +47,9 @@ RUN \
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \
apt-get update -yqq && \
apt-get install -yqq --no-install-recommends \
- sqlite3 nodejs npm sassc yarn libvips && \
+ sqlite3 nodejs npm sassc yarn libvips fish ranger && \
apt-get clean && \
+ npm install tabby-agent && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \
truncate -s 0 /var/log/*log && \
gem update --system && \
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index 59e71f6..de00ee8 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -13,7 +13,9 @@ class ApplicationController < ActionController::Base
{ label: 'Dashboard', icon: :speedometer2, path: :root },
{ label: Report.model_name.human(count: 2), icon: :'journal-text', path: :reports },
{ label: Checklist.model_name.human(count: 2), icon: :'list-check', path: :checklists },
- { label: Check.model_name.human(count: 2), icon: :check2, path: :checks }
+ { label: Check.model_name.human(count: 2), icon: :check2, path: :checks },
+ { label: Link.model_name.human(count: 2), icon: :link, path: :links },
+ { label: LinkCategory.model_name.human(count: 2), icon: :"folder", path: :link_categories }
]
@search_url = nil # root_url
end
diff --git a/app/controllers/link_categories_controller.rb b/app/controllers/link_categories_controller.rb
new file mode 100644
index 0000000..7014f9c
--- /dev/null
+++ b/app/controllers/link_categories_controller.rb
@@ -0,0 +1,58 @@
+class LinkCategoriesController < ApplicationController
+ before_action :set_link_category, only: %i[ show edit update destroy ]
+
+ # GET /link_categories
+ def index
+ @link_categories = LinkCategory.all
+ end
+
+ # GET /link_categories/1
+ def show
+ end
+
+ # GET /link_categories/new
+ def new
+ @link_category = LinkCategory.new
+ end
+
+ # GET /link_categories/1/edit
+ def edit
+ end
+
+ # POST /link_categories
+ def create
+ @link_category = LinkCategory.new(link_category_params)
+
+ if @link_category.save
+ redirect_to @link_category, notice: "Link category was successfully created."
+ else
+ render :new, status: :unprocessable_entity
+ end
+ end
+
+ # PATCH/PUT /link_categories/1
+ def update
+ if @link_category.update(link_category_params)
+ redirect_to @link_category, notice: "Link category was successfully updated.", status: :see_other
+ else
+ render :edit, status: :unprocessable_entity
+ end
+ end
+
+ # DELETE /link_categories/1
+ def destroy
+ @link_category.destroy!
+ redirect_to link_categories_url, notice: "Link category was successfully destroyed.", status: :see_other
+ end
+
+ private
+ # Use callbacks to share common setup or constraints between actions.
+ def set_link_category
+ @link_category = LinkCategory.find(params[:id])
+ end
+
+ # Only allow a list of trusted parameters through.
+ def link_category_params
+ params.require(:link_category).permit(:name, :description, :rich_text)
+ end
+end
diff --git a/app/controllers/links_controller.rb b/app/controllers/links_controller.rb
new file mode 100644
index 0000000..810716f
--- /dev/null
+++ b/app/controllers/links_controller.rb
@@ -0,0 +1,59 @@
+class LinksController < ApplicationController
+ before_action :set_link, only: %i[show edit update destroy]
+
+ # GET /links
+ def index
+ @links = Link.all
+ end
+
+ # GET /links/1
+ def show
+ end
+
+ # GET /links/new
+ def new
+ @link = Link.new
+ end
+
+ # GET /links/1/edit
+ def edit
+ end
+
+ # POST /links
+ def create
+ @link = Link.new(link_params)
+
+ if @link.save
+ redirect_to @link, notice: 'Link was successfully created.'
+ else
+ render :new, status: :unprocessable_entity
+ end
+ end
+
+ # PATCH/PUT /links/1
+ def update
+ if @link.update(link_params)
+ redirect_to @link, notice: 'Link was successfully updated.', status: :see_other
+ else
+ render :edit, status: :unprocessable_entity
+ end
+ end
+
+ # DELETE /links/1
+ def destroy
+ @link.destroy!
+ redirect_to links_url, notice: 'Link was successfully destroyed.', status: :see_other
+ end
+
+ private
+
+ # Use callbacks to share common setup or constraints between actions.
+ def set_link
+ @link = Link.find(params[:id])
+ end
+
+ # Only allow a list of trusted parameters through.
+ def link_params
+ params.require(:link).permit(:url, :text, :description_html, :last_check_at, :fail_count, :link_category_id)
+ end
+end
diff --git a/app/helpers/link_categories_helper.rb b/app/helpers/link_categories_helper.rb
new file mode 100644
index 0000000..c60b20f
--- /dev/null
+++ b/app/helpers/link_categories_helper.rb
@@ -0,0 +1,2 @@
+module LinkCategoriesHelper
+end
diff --git a/app/helpers/links_helper.rb b/app/helpers/links_helper.rb
new file mode 100644
index 0000000..f6bc988
--- /dev/null
+++ b/app/helpers/links_helper.rb
@@ -0,0 +1,2 @@
+module LinksHelper
+end
diff --git a/app/javascript/controllers/check_link_controller.js b/app/javascript/controllers/check_link_controller.js
new file mode 100644
index 0000000..2f857c8
--- /dev/null
+++ b/app/javascript/controllers/check_link_controller.js
@@ -0,0 +1,19 @@
+import { Controller } from "@hotwired/stimulus"
+
+// Connects to data-controller="check-link"
+export default class extends Controller {
+ static targets = ["input", "button"]
+
+ connect() {
+ console.log("connect", this.inputTarget, this.buttonTarget)
+ this.inputTarget.addEventListener("input", e => this.onUrlInputChange(e))
+ }
+
+ onUrlInputChange(event) {
+ console.log("connect", this.inputTarget, this.buttonTarget)
+ console.log(event, this.buttonTarget)
+ this.buttonTarget.href = this.inputTarget.value;
+ this.buttonTarget.innerHTML = this.inputTarget.value;
+ return true;
+ }
+}
diff --git a/app/javascript/controllers/index.js b/app/javascript/controllers/index.js
index a8cca77..9c481e8 100644
--- a/app/javascript/controllers/index.js
+++ b/app/javascript/controllers/index.js
@@ -7,6 +7,9 @@ import { application } from "./application"
import AutosubmitController from "./autosubmit_controller"
application.register("autosubmit", AutosubmitController)
+import CheckLinkController from "./check_link_controller"
+application.register("check-link", CheckLinkController)
+
import CollapseChevronTogglerController from "./collapse_chevron_toggler_controller"
application.register("collapse-chevron-toggler", CollapseChevronTogglerController)
diff --git a/app/lib/link_checker.rb b/app/lib/link_checker.rb
new file mode 100644
index 0000000..bd44bef
--- /dev/null
+++ b/app/lib/link_checker.rb
@@ -0,0 +1,16 @@
+module LinkChecker
+ UA = "Mozilla/5.0 (Android 4.4; Mobile; rv:41.0) Gecko/41.0 Firefox/41.0"
+ module_function def http(input)
+ response = Net::HTTP.get_response(URI.parse(input), {"User-Agent": UA})
+ # debugger
+ case response
+ when Net::HTTPSuccess
+ response.uri
+ when Net::HTTPRedirection
+ http(response[:location])
+ else
+ false
+ end
+ end
+end
+
diff --git a/app/models/element.rb b/app/models/element.rb
index dfa3a5e..54ed6ff 100644
--- a/app/models/element.rb
+++ b/app/models/element.rb
@@ -7,4 +7,27 @@ class Element < ApplicationRecord
has_many :success_criteria, dependent: :destroy
validates :path, :title, presence: true
+
+ # Calculate actual conformity level:
+ # - if a success_criterion has result :failed -> the confirmity_level
+ # of that success_criterion is not reached.
+ # - the resulting level is the highest readched level
+ # abeying rule above.
+ def level
+ return nil
+ return nil unless success_criteria.all(&:result)
+
+ min_failed = success_criteria.select(&:failed?).map(&:level).min
+ possible_levels = success_criteria.select(&:passed?).map(&:level).uniq
+
+ return nil if possible_levels.empty?
+
+ puts possible_levels.inspect
+ puts min_failed
+ possible_levels[possible_levels.find_index(min_failed) - 1]
+ end
+
+ def max_level
+ @max_level ||= success_criteria.reject(&:not_applicable?).max(&:level)
+ end
end
diff --git a/app/models/link.rb b/app/models/link.rb
new file mode 100644
index 0000000..4a8e451
--- /dev/null
+++ b/app/models/link.rb
@@ -0,0 +1,51 @@
+class Link < ApplicationRecord
+ belongs_to :link_category
+ has_rich_text :description_html
+
+ validates :url, :text, presence: true
+ validate :check_url
+ validate :valid_url
+
+ before_validation :ensure_absolute_url
+
+ def ok?
+ fail_count == 0
+ end
+
+ private
+
+ USER_AGENT = "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0"
+
+ def check_url(input = url, add_error = true)
+ response = begin
+ Net::HTTP.get_response(URI.parse(input), "User-Agent": USER_AGENT)
+ rescue Socket::ResolutionError
+ errors.add(:url, :invalid) if add_error
+ return false
+ end
+
+ case response
+ when Net::HTTPSuccess
+ self.last_check_at = Time.zone.now
+ self.fail_count = 0
+
+ true
+ when Net::HTTPRedirection
+ check_url(response[:location])
+ else
+ self.last_check_at = Time.zone.now
+ self.fail_count += 1
+ errors.add(:url, :invalid) if add_error
+
+ false
+ end
+ end
+
+ def ensure_absolute_url
+ self.url = "https://#{self.url}" unless self.url.match?(%r{https{0,1}://.*})
+ end
+
+ def valid_url
+ errors.add(:url, :invalid) unless url.match /\A#{URI::regexp(['http', 'https'])}\z/
+ end
+end
diff --git a/app/models/link_category.rb b/app/models/link_category.rb
new file mode 100644
index 0000000..76de740
--- /dev/null
+++ b/app/models/link_category.rb
@@ -0,0 +1,5 @@
+class LinkCategory < ApplicationRecord
+ has_many :links
+
+ has_rich_text :description_html
+end
diff --git a/app/models/success_criterion.rb b/app/models/success_criterion.rb
index de63a93..b77d991 100644
--- a/app/models/success_criterion.rb
+++ b/app/models/success_criterion.rb
@@ -6,4 +6,10 @@ class SuccessCriterion < ApplicationRecord
has_rich_text :description_html
belongs_to :element, touch: true
+
+ def level_value
+ return nil unless level
+
+ self.class.levels.values.index_of(level)
+ end
end
diff --git a/app/views/checks/index.html.erb b/app/views/checks/index.html.erb
index b14aa48..dee0791 100644
--- a/app/views/checks/index.html.erb
+++ b/app/views/checks/index.html.erb
@@ -12,7 +12,6 @@
<% end %>
-<%== pagy_info(@pagy) %>
@@ -32,9 +31,12 @@
<% end %>
+
+ <%== pagy_info(@pagy) %>
+
<%== pagy_bootstrap_nav(@pagy) %>
<%= link_to t("scaffold.link_new", model: Check.model_name.human), new_check_path %>
-
\ No newline at end of file
+
diff --git a/app/views/layouts/_navigation.html.erb b/app/views/layouts/_navigation.html.erb
index 9768444..e25843e 100644
--- a/app/views/layouts/_navigation.html.erb
+++ b/app/views/layouts/_navigation.html.erb
@@ -2,6 +2,7 @@
-
\ No newline at end of file
+
diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb
index 9f737a6..440e2ef 100644
--- a/app/views/layouts/application.html.erb
+++ b/app/views/layouts/application.html.erb
@@ -1,7 +1,7 @@
data-controller="set-theme">
- A11yDive
+ a11ydive
<%= csrf_meta_tags %>
diff --git a/app/views/link_categories/_form.html.erb b/app/views/link_categories/_form.html.erb
new file mode 100644
index 0000000..d19fb02
--- /dev/null
+++ b/app/views/link_categories/_form.html.erb
@@ -0,0 +1,5 @@
+<%= bootstrap_form_with(model: link_category) do |form| %>
+ <%= form.text_field :name %>
+ <%= form.rich_text_area :description_html %>
+ <%= form.submit %>
+<% end %>
diff --git a/app/views/link_categories/_link_category.html.erb b/app/views/link_categories/_link_category.html.erb
new file mode 100644
index 0000000..dba9748
--- /dev/null
+++ b/app/views/link_categories/_link_category.html.erb
@@ -0,0 +1,12 @@
+
+
+ Name:
+ <%= link_category.name %>
+
+
+
+ Description:
+ <%= link_category.description_html %>
+
+
+
diff --git a/app/views/link_categories/_link_category.json.jbuilder b/app/views/link_categories/_link_category.json.jbuilder
new file mode 100644
index 0000000..fe0be43
--- /dev/null
+++ b/app/views/link_categories/_link_category.json.jbuilder
@@ -0,0 +1,2 @@
+json.extract! link_category, :id, :name, :description, :rich_text, :created_at, :updated_at
+json.url link_category_url(link_category, format: :json)
diff --git a/app/views/link_categories/edit.html.erb b/app/views/link_categories/edit.html.erb
new file mode 100644
index 0000000..13949e1
--- /dev/null
+++ b/app/views/link_categories/edit.html.erb
@@ -0,0 +1,8 @@
+<%= t("scaffold.pagetitle_edit", model: LinkCategory.model_name.human) %>
+
+<%= render "form", link_category: @link_category %>
+
+
+ <%= link_to t("scaffold.link_show", model: LinkCategory.model_name.human), @link_category %>
+ <%= link_to t("scaffold.link_index", model: LinkCategory.model_name.human(count: 2)), link_categories_path %>
+
diff --git a/app/views/link_categories/index.html.erb b/app/views/link_categories/index.html.erb
new file mode 100644
index 0000000..34ac9e4
--- /dev/null
+++ b/app/views/link_categories/index.html.erb
@@ -0,0 +1,29 @@
+<%= t("scaffold.pagetitle_index", model: LinkCategory.model_name.human(count: 2)) %>
+
+
+
+
+ | <%= LinkCategory.human_attribute_name(:id) %> |
+
+ <%= LinkCategory.human_attribute_name(:name) %> |
+
+ <%= LinkCategory.human_attribute_name(:description) %> |
+
+
+
+
+ <% @link_categories.each do |link_category| %>
+
+ | <%= link_to(link_category.id, url_for(link_category)) %> |
+
+ <%= link_to(link_category.name, url_for(link_category)) %> |
+
+ <%= link_to(link_category.description, url_for(link_category)) %> |
+
+ <% end %>
+
+
+
+
+ <%= link_to t("scaffold.link_new", model: LinkCategory.model_name.human), new_link_category_path %>
+
diff --git a/app/views/link_categories/index.json.jbuilder b/app/views/link_categories/index.json.jbuilder
new file mode 100644
index 0000000..b68de09
--- /dev/null
+++ b/app/views/link_categories/index.json.jbuilder
@@ -0,0 +1 @@
+json.array! @link_categories, partial: "link_categories/link_category", as: :link_category
diff --git a/app/views/link_categories/new.html.erb b/app/views/link_categories/new.html.erb
new file mode 100644
index 0000000..7648d0e
--- /dev/null
+++ b/app/views/link_categories/new.html.erb
@@ -0,0 +1,7 @@
+<%= t("scaffold.pagetitle_new", model: LinkCategory.model_name.human) %>
+
+<%= render "form", link_category: @link_category %>
+
+
+ <%= link_to t("scaffold.link_index", model: LinkCategory.model_name.human(count: 2)), link_categories_path %>
+
diff --git a/app/views/link_categories/show.html.erb b/app/views/link_categories/show.html.erb
new file mode 100644
index 0000000..54dcb50
--- /dev/null
+++ b/app/views/link_categories/show.html.erb
@@ -0,0 +1,9 @@
+<%= t("scaffold.pagetitle_show", model: @link_category.class.model_name.human) %>
+
+<%= render @link_category %>
+
+
+ <%= link_to t("scaffold.link_edit", model: @link_category.model_name.human), edit_link_category_path(@link_category) %>
+ <%= link_to t("scaffold.link_index", model: @link_category.model_name.human(count: 2)), link_categories_path %>
+ <%= button_to t("scaffold.link_destroy", model: @link_category.model_name.human), @link_category, method: :delete, class: "btn btn-outline-danger" %>
+
diff --git a/app/views/link_categories/show.json.jbuilder b/app/views/link_categories/show.json.jbuilder
new file mode 100644
index 0000000..ec040cb
--- /dev/null
+++ b/app/views/link_categories/show.json.jbuilder
@@ -0,0 +1 @@
+json.partial! "link_categories/link_category", link_category: @link_category
diff --git a/app/views/links/_form.html.erb b/app/views/links/_form.html.erb
new file mode 100644
index 0000000..f303568
--- /dev/null
+++ b/app/views/links/_form.html.erb
@@ -0,0 +1,12 @@
+<%= bootstrap_form_with(model: link) do |form| %>
+
+
+ <%= form.text_field :url, placeholder: "https://wikipedia.org", data: { "check-link-target": "input" } %>
+ <%= link_to(link.url, link.url, target: "_blank", class: "mb-2", data: { "check-link-target": "button" }) %>
+
+
+ <%= form.collection_select :link_category_id, LinkCategory.all.order(:name), :id, :name, include_blank: !link.persisted? %>
+ <%= form.text_field :text %>
+ <%= form.rich_text_area :description %>
+ <%= form.submit %>
+<% end %>
diff --git a/app/views/links/_link.html.erb b/app/views/links/_link.html.erb
new file mode 100644
index 0000000..ffdb788
--- /dev/null
+++ b/app/views/links/_link.html.erb
@@ -0,0 +1,32 @@
+
+
+ Url:
+ <%= link.url %>
+
+
+
+ Text:
+ <%= link.text %>
+
+
+
+ Description:
+ <%= link.description_html %>
+
+
+
+ Last check at:
+ <%= link.last_check_at %>
+
+
+
+ Fail count:
+ <%= link.fail_count %>
+
+
+
+ Link category:
+ <%= link.link_category_id %>
+
+
+
diff --git a/app/views/links/_link.json.jbuilder b/app/views/links/_link.json.jbuilder
new file mode 100644
index 0000000..8857558
--- /dev/null
+++ b/app/views/links/_link.json.jbuilder
@@ -0,0 +1,3 @@
+json.extract! link, :id, :url, :text, :description, :last_check_at, :fail_count, :link_category_id, :created_at, :updated_at
+json.url link_url(link, format: :json)
+json.description link.description.to_s
diff --git a/app/views/links/edit.html.erb b/app/views/links/edit.html.erb
new file mode 100644
index 0000000..8f38dce
--- /dev/null
+++ b/app/views/links/edit.html.erb
@@ -0,0 +1,8 @@
+<%= t("scaffold.pagetitle_edit", model: Link.model_name.human) %>
+
+<%= render "form", link: @link %>
+
+
+ <%= link_to t("scaffold.link_show", model: Link.model_name.human), @link %>
+ <%= link_to t("scaffold.link_index", model: Link.model_name.human(count: 2)), links_path %>
+
diff --git a/app/views/links/index.html.erb b/app/views/links/index.html.erb
new file mode 100644
index 0000000..d88f4ab
--- /dev/null
+++ b/app/views/links/index.html.erb
@@ -0,0 +1,30 @@
+<%= t("scaffold.pagetitle_index", model: Link.model_name.human(count: 2)) %>
+
+
+
+
+ |
+ <%= LinkCategory.model_name.human %> |
+ <%= Link.human_attribute_name(:url) %> |
+ <%= Link.human_attribute_name(:text) %> |
+ <%= Link.human_attribute_name(:description) %> |
+ <%= Link.human_attribute_name(:last_check_at) %> |
+
+
+
+ <% @links.each do |link| %>
+
+ | <%= link_to(tag.i(class: link.ok? ? "bi bi-check" : "bi bi-x-lg"), url_for(link)) %> |
+ <%= link_to(link.link_category.name, url_for(link)) %> |
+ <%= link_to(truncate(link.url), link.url, target: "_blank", rel: "nofollow") %> |
+ <%= link_to(link.text, url_for(link)) %> |
+ <%= link_to(truncate(link.description_html.to_plain_text), url_for(link)) %> |
+ <%= link.last_check_at && l(link.last_check_at, format: :short) %> |
+
+ <% end %>
+
+
+
+
+ <%= link_to t("scaffold.link_new", model: Link.model_name.human), new_link_path %>
+
diff --git a/app/views/links/index.json.jbuilder b/app/views/links/index.json.jbuilder
new file mode 100644
index 0000000..7b13bad
--- /dev/null
+++ b/app/views/links/index.json.jbuilder
@@ -0,0 +1 @@
+json.array! @links, partial: "links/link", as: :link
diff --git a/app/views/links/new.html.erb b/app/views/links/new.html.erb
new file mode 100644
index 0000000..4183be4
--- /dev/null
+++ b/app/views/links/new.html.erb
@@ -0,0 +1,7 @@
+<%= t("scaffold.pagetitle_new", model: Link.model_name.human) %>
+
+<%= render "form", link: @link %>
+
+
+ <%= link_to t("scaffold.link_index", model: Link.model_name.human(count: 2)), links_path %>
+
diff --git a/app/views/links/show.html.erb b/app/views/links/show.html.erb
new file mode 100644
index 0000000..83d18a4
--- /dev/null
+++ b/app/views/links/show.html.erb
@@ -0,0 +1,8 @@
+<%= t("scaffold.pagetitle_show", model: @link.class.model_name.human) %>
+<%= render @link %>
+
+
+ <%= link_to t("scaffold.link_edit", model: @link.model_name.human), edit_link_path(@link) %>
+ <%= link_to t("scaffold.link_index", model: @link.model_name.human(count: 2)), links_path %>
+ <%= button_to t("scaffold.link_destroy", model: @link.model_name.human), @link, method: :delete, class: "btn btn-outline-danger" %>
+
diff --git a/app/views/links/show.json.jbuilder b/app/views/links/show.json.jbuilder
new file mode 100644
index 0000000..79e4f78
--- /dev/null
+++ b/app/views/links/show.json.jbuilder
@@ -0,0 +1 @@
+json.partial! "links/link", link: @link
diff --git a/app/views/reports/index.html.erb b/app/views/reports/index.html.erb
index 0aa18ed..900eb9d 100644
--- a/app/views/reports/index.html.erb
+++ b/app/views/reports/index.html.erb
@@ -18,7 +18,7 @@
<%= link_to(report.name, url_for(report)) %> |
- <%= link_to(truncate(strip_tags(report.comment)), url_for(report)) if report.comment %> |
+ <%= link_to(truncate(report.comment_html.to_plain_text), url_for(report)) if report.comment_html %> |
<%= l(report.created_at, format: :short) %> |
<%= l(report.updated_at, format: :short) %> |
@@ -28,4 +28,4 @@
<%= link_to t("scaffold.link_new", model: Report.model_name.human), new_report_path %>
-
\ No newline at end of file
+
diff --git a/config/locales/activerecord.yml b/config/locales/activerecord.yml
index 76e4273..bf3043f 100644
--- a/config/locales/activerecord.yml
+++ b/config/locales/activerecord.yml
@@ -25,6 +25,18 @@ de-CH:
description_html: Details
path: Pfad
checklists: Checkliste
+ link:
+ id: ID
+ url: Link
+ text: Linktext
+ description_html: Beschreibung
+ ok: Status
+ last_check_at: Letzter Check
+ link_category_id: Kategorie
+ link_category:
+ id: ID
+ name: Name
+ description_html: Beschreibung
report:
name: Bezeichnung
comment_html: Projektbeschreibung
@@ -38,6 +50,12 @@ de-CH:
checklist:
one: Checkliste
other: Checklisten
+ link:
+ one: Link
+ other: Links
+ link_category:
+ one: Linkkategorie
+ other: Linkkategorien
report:
one: Prüfbericht
other: Prüfberichte
diff --git a/config/locales/de-CH.yml b/config/locales/de-CH.yml
index 03de927..e91b849 100644
--- a/config/locales/de-CH.yml
+++ b/config/locales/de-CH.yml
@@ -218,5 +218,5 @@ de-CH:
formats:
default: "%A, %d. %B %Y, %H:%M Uhr"
long: "%A, %d. %B %Y, %H:%M Uhr"
- short: "%d. %b, %H:%M Uhr"
+ short: "%d.%-m.%y %H:%M"
pm: nachmittags
diff --git a/config/routes.rb b/config/routes.rb
index 92e3784..4e10e3b 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -1,5 +1,7 @@
# Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html
Rails.application.routes.draw do
+ resources :links
+ resources :link_categories
namespace :admin do
get "backup", to: "backups#show", as: :backup
end
diff --git a/db/migrate/20240725173336_create_link_categories.rb b/db/migrate/20240725173336_create_link_categories.rb
new file mode 100644
index 0000000..28a0841
--- /dev/null
+++ b/db/migrate/20240725173336_create_link_categories.rb
@@ -0,0 +1,10 @@
+class CreateLinkCategories < ActiveRecord::Migration[7.1]
+ def change
+ create_table :link_categories do |t|
+ t.string :name
+ t.text :description
+
+ t.timestamps
+ end
+ end
+end
diff --git a/db/migrate/20240725173433_create_links.rb b/db/migrate/20240725173433_create_links.rb
new file mode 100644
index 0000000..29bea7d
--- /dev/null
+++ b/db/migrate/20240725173433_create_links.rb
@@ -0,0 +1,13 @@
+class CreateLinks < ActiveRecord::Migration[7.1]
+ def change
+ create_table :links do |t|
+ t.string :url
+ t.string :text
+ t.datetime :last_check_at
+ t.integer :fail_count, default: 0, null: false
+ t.references :link_category, null: false, foreign_key: true
+
+ t.timestamps
+ end
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 0fe2343..98809d5 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema[7.1].define(version: 2024_07_20_231941) do
+ActiveRecord::Schema[7.1].define(version: 2024_07_25_173433) do
create_table "action_text_rich_texts", force: :cascade do |t|
t.string "name", null: false
t.text "body"
@@ -63,7 +63,6 @@ ActiveRecord::Schema[7.1].define(version: 2024_07_20_231941) do
create_table "checklists", force: :cascade do |t|
t.string "code"
t.string "name"
- t.text "description"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
@@ -71,7 +70,6 @@ ActiveRecord::Schema[7.1].define(version: 2024_07_20_231941) do
create_table "checks", force: :cascade do |t|
t.string "position"
t.string "name"
- t.text "success_criterion"
t.integer "level"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
@@ -81,15 +79,31 @@ ActiveRecord::Schema[7.1].define(version: 2024_07_20_231941) do
t.integer "report_id", null: false
t.string "path"
t.string "title"
- t.text "description"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["report_id"], name: "index_elements_on_report_id"
end
+ create_table "link_categories", force: :cascade do |t|
+ t.string "name"
+ t.text "description"
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
+ end
+
+ create_table "links", force: :cascade do |t|
+ t.string "url"
+ t.string "text"
+ t.datetime "last_check_at"
+ t.integer "fail_count", default: 0, null: false
+ t.integer "link_category_id", null: false
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
+ t.index ["link_category_id"], name: "index_links_on_link_category_id"
+ end
+
create_table "reports", force: :cascade do |t|
t.string "name"
- t.text "comment"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
@@ -97,10 +111,8 @@ ActiveRecord::Schema[7.1].define(version: 2024_07_20_231941) do
create_table "success_criteria", force: :cascade do |t|
t.integer "element_id", null: false
t.string "title"
- t.text "description"
t.integer "level"
t.integer "result"
- t.text "comment"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["element_id"], name: "index_success_criteria_on_element_id"
@@ -111,5 +123,6 @@ ActiveRecord::Schema[7.1].define(version: 2024_07_20_231941) do
add_foreign_key "checklist_entries", "checklists"
add_foreign_key "checklist_entries", "checks"
add_foreign_key "elements", "reports"
+ add_foreign_key "links", "link_categories"
add_foreign_key "success_criteria", "elements"
end
diff --git a/docker-compose.yml b/docker-compose.yml
index b8faee1..877ee78 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -12,6 +12,9 @@ services:
target: development
volumes:
- ./:/app:cached
+ - ${PWD}:${PWD}
+ - ${HOME}/.tabby-client:/home/app/.tabby-client
+ working_dir: ${PWD}
environment:
RAILS_ENV: development
LOG_LEVEL: debug
@@ -22,6 +25,7 @@ services:
HISTFILE: /app/tmp/.bash_history
PSQL_HISTORY: /app/tmp/.psql_history
IRBRC: /app/.irbrc
+ SELENIUM_REMOTE_URL: http://chrome:4444/wd/hub
labels:
- traefik.http.routers.app-${COMPOSE_PROJECT_NAME}.entrypoints=http
- traefik.http.routers.app-${COMPOSE_PROJECT_NAME}.rule=Host(`${COMPOSE_PROJECT_NAME}.localhost`)
@@ -30,3 +34,6 @@ services:
networks:
- traefik
- default
+
+ chrome:
+ image: selenium/standalone-chrome
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..a189879
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,1378 @@
+{
+ "name": "app",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "app",
+ "dependencies": {
+ "@hotwired/stimulus": "^3.2.2",
+ "@hotwired/turbo-rails": "^8.0.4",
+ "@popperjs/core": "^2.11.8",
+ "@rails/actiontext": "^7.1.3-4",
+ "autoprefixer": "^10.4.19",
+ "bootstrap": "^5.3.3",
+ "bootstrap-icons": "^1.11.3",
+ "esbuild": "^0.23.0",
+ "nodemon": "^3.1.4",
+ "postcss": "^8.4.39",
+ "postcss-cli": "^11.0.0",
+ "sass": "^1.77.8",
+ "trix": "^2.1.3"
+ },
+ "devDependencies": {
+ "tabby-agent": "^1.7.0"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.0.tgz",
+ "integrity": "sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@hotwired/stimulus": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/@hotwired/stimulus/-/stimulus-3.2.2.tgz",
+ "integrity": "sha512-eGeIqNOQpXoPAIP7tC1+1Yc1yl1xnwYqg+3mzqxyrbE5pg5YFBZcA6YoTiByJB6DKAEsiWtl6tjTJS4IYtbB7A==",
+ "license": "MIT"
+ },
+ "node_modules/@hotwired/turbo": {
+ "version": "8.0.4",
+ "resolved": "https://registry.npmjs.org/@hotwired/turbo/-/turbo-8.0.4.tgz",
+ "integrity": "sha512-mlZEFUZrJnpfj+g/XeCWWuokvQyN68WvM78JM+0jfSFc98wegm259vCbC1zSllcspRwbgXK31ibehCy5PA78/Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/@hotwired/turbo-rails": {
+ "version": "8.0.4",
+ "resolved": "https://registry.npmjs.org/@hotwired/turbo-rails/-/turbo-rails-8.0.4.tgz",
+ "integrity": "sha512-GHCv5+B2VzYZZvMFpg/g9JLx/8pl/8chcubSB7T+Xn1zYOMqAKB6cT80vvWUzxdwfm/2KfaRysfDz+BmvtjFaw==",
+ "license": "MIT",
+ "dependencies": {
+ "@hotwired/turbo": "^8.0.4",
+ "@rails/actioncable": "^7.0"
+ }
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@popperjs/core": {
+ "version": "2.11.8",
+ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
+ "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/popperjs"
+ }
+ },
+ "node_modules/@rails/actioncable": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/@rails/actioncable/-/actioncable-7.1.3.tgz",
+ "integrity": "sha512-ojNvnoZtPN0pYvVFtlO7dyEN9Oml1B6IDM+whGKVak69MMYW99lC2NOWXWeE3bmwEydbP/nn6ERcpfjHVjYQjA==",
+ "license": "MIT"
+ },
+ "node_modules/@rails/actiontext": {
+ "version": "7.1.3-4",
+ "resolved": "https://registry.npmjs.org/@rails/actiontext/-/actiontext-7.1.3-4.tgz",
+ "integrity": "sha512-Yt0aFwV4vmQDH0SPMKACF5WnZ88vn8KHpCbPJIGnFcj4likev+SkmdCLu/TpcHrFQwHWXt+GwKE924Ny92YXAg==",
+ "license": "MIT",
+ "dependencies": {
+ "@rails/activestorage": ">= 7.1.0-alpha"
+ },
+ "peerDependencies": {
+ "trix": "^2.0.0"
+ }
+ },
+ "node_modules/@rails/activestorage": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/@rails/activestorage/-/activestorage-7.1.3.tgz",
+ "integrity": "sha512-B+RFYAU8vdTPFg0IJcRp2ey0Qw9hpcUOqHHcWqftDJ76ZMBi9+m/UUeMJlNsSd0l9eD+1HLlFSo1X//cY4yiDw==",
+ "license": "MIT",
+ "dependencies": {
+ "spark-md5": "^3.0.1"
+ }
+ },
+ "node_modules/@sindresorhus/merge-streams": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz",
+ "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "license": "ISC",
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/autoprefixer": {
+ "version": "10.4.19",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz",
+ "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/autoprefixer"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.23.0",
+ "caniuse-lite": "^1.0.30001599",
+ "fraction.js": "^4.3.7",
+ "normalize-range": "^0.1.2",
+ "picocolors": "^1.0.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "bin": {
+ "autoprefixer": "bin/autoprefixer"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "license": "MIT"
+ },
+ "node_modules/binary-extensions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
+ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/bootstrap": {
+ "version": "5.3.3",
+ "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz",
+ "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/twbs"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/bootstrap"
+ }
+ ],
+ "license": "MIT",
+ "peerDependencies": {
+ "@popperjs/core": "^2.11.8"
+ }
+ },
+ "node_modules/bootstrap-icons": {
+ "version": "1.11.3",
+ "resolved": "https://registry.npmjs.org/bootstrap-icons/-/bootstrap-icons-1.11.3.tgz",
+ "integrity": "sha512-+3lpHrCw/it2/7lBL15VR0HEumaBss0+f/Lb6ZvHISn1mlK83jjFpooTLsMWbIjJMDjDjOExMsTxnXSIT4k4ww==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/twbs"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/bootstrap"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "license": "MIT",
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.23.2",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.2.tgz",
+ "integrity": "sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "caniuse-lite": "^1.0.30001640",
+ "electron-to-chromium": "^1.4.820",
+ "node-releases": "^2.0.14",
+ "update-browserslist-db": "^1.1.0"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001642",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001642.tgz",
+ "integrity": "sha512-3XQ0DoRgLijXJErLSl+bLnJ+Et4KqV1PY6JJBGAFlsNsz31zeAIncyeZfLCabHK/jtSh+671RM9YMldxjUPZtA==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "CC-BY-4.0"
+ },
+ "node_modules/chokidar": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+ "license": "MIT",
+ "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"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "license": "MIT"
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "license": "MIT"
+ },
+ "node_modules/debug": {
+ "version": "4.3.5",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
+ "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/dependency-graph": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz",
+ "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.4.827",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.827.tgz",
+ "integrity": "sha512-VY+J0e4SFcNfQy19MEoMdaIcZLmDCprqvBtkii1WTCTQHpRvf5N8+3kTYCgL/PcntvwQvmMJWTuDPsq+IlhWKQ==",
+ "license": "ISC"
+ },
+ "node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "license": "MIT"
+ },
+ "node_modules/esbuild": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.0.tgz",
+ "integrity": "sha512-1lvV17H2bMYda/WaFb2jLPeHU3zml2k4/yagNMG8Q/YtfMjCwEUZa2eXXMgZTVSL5q1n4H7sQ0X6CdJDqqeCFA==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.23.0",
+ "@esbuild/android-arm": "0.23.0",
+ "@esbuild/android-arm64": "0.23.0",
+ "@esbuild/android-x64": "0.23.0",
+ "@esbuild/darwin-arm64": "0.23.0",
+ "@esbuild/darwin-x64": "0.23.0",
+ "@esbuild/freebsd-arm64": "0.23.0",
+ "@esbuild/freebsd-x64": "0.23.0",
+ "@esbuild/linux-arm": "0.23.0",
+ "@esbuild/linux-arm64": "0.23.0",
+ "@esbuild/linux-ia32": "0.23.0",
+ "@esbuild/linux-loong64": "0.23.0",
+ "@esbuild/linux-mips64el": "0.23.0",
+ "@esbuild/linux-ppc64": "0.23.0",
+ "@esbuild/linux-riscv64": "0.23.0",
+ "@esbuild/linux-s390x": "0.23.0",
+ "@esbuild/linux-x64": "0.23.0",
+ "@esbuild/netbsd-x64": "0.23.0",
+ "@esbuild/openbsd-arm64": "0.23.0",
+ "@esbuild/openbsd-x64": "0.23.0",
+ "@esbuild/sunos-x64": "0.23.0",
+ "@esbuild/win32-arm64": "0.23.0",
+ "@esbuild/win32-ia32": "0.23.0",
+ "@esbuild/win32-x64": "0.23.0"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
+ "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fastq": {
+ "version": "1.17.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
+ "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
+ "license": "ISC",
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "license": "MIT",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/fraction.js": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
+ "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",
+ "license": "MIT",
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "type": "patreon",
+ "url": "https://github.com/sponsors/rawify"
+ }
+ },
+ "node_modules/fs-extra": {
+ "version": "11.2.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
+ "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14.14"
+ }
+ },
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "license": "ISC",
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/get-stdin": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz",
+ "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/globby": {
+ "version": "14.0.2",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz",
+ "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==",
+ "license": "MIT",
+ "dependencies": {
+ "@sindresorhus/merge-streams": "^2.1.0",
+ "fast-glob": "^3.3.2",
+ "ignore": "^5.2.4",
+ "path-type": "^5.0.0",
+ "slash": "^5.1.0",
+ "unicorn-magic": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "license": "ISC"
+ },
+ "node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/ignore": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz",
+ "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/ignore-by-default": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
+ "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==",
+ "license": "ISC"
+ },
+ "node_modules/immutable": {
+ "version": "4.3.6",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.6.tgz",
+ "integrity": "sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==",
+ "license": "MIT"
+ },
+ "node_modules/is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "license": "MIT",
+ "dependencies": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "license": "MIT",
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "license": "MIT",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/lilconfig": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz",
+ "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antonk52"
+ }
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz",
+ "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==",
+ "license": "MIT",
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "license": "MIT"
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.7",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
+ "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.14",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
+ "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
+ "license": "MIT"
+ },
+ "node_modules/nodemon": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.4.tgz",
+ "integrity": "sha512-wjPBbFhtpJwmIeY2yP7QF+UKzPfltVGtfce1g/bB15/8vCGZj8uxD62b/b9M9/WVgme0NZudpownKN+c0plXlQ==",
+ "license": "MIT",
+ "dependencies": {
+ "chokidar": "^3.5.2",
+ "debug": "^4",
+ "ignore-by-default": "^1.0.1",
+ "minimatch": "^3.1.2",
+ "pstree.remy": "^1.1.8",
+ "semver": "^7.5.3",
+ "simple-update-notifier": "^2.0.0",
+ "supports-color": "^5.5.0",
+ "touch": "^3.1.0",
+ "undefsafe": "^2.0.5"
+ },
+ "bin": {
+ "nodemon": "bin/nodemon.js"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/nodemon"
+ }
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/normalize-range": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
+ "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-type": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz",
+ "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/picocolors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz",
+ "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==",
+ "license": "ISC"
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.4.39",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz",
+ "integrity": "sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.3.7",
+ "picocolors": "^1.0.1",
+ "source-map-js": "^1.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/postcss-cli": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-11.0.0.tgz",
+ "integrity": "sha512-xMITAI7M0u1yolVcXJ9XTZiO9aO49mcoKQy6pCDFdMh9kGqhzLVpWxeD/32M/QBmkhcGypZFFOLNLmIW4Pg4RA==",
+ "license": "MIT",
+ "dependencies": {
+ "chokidar": "^3.3.0",
+ "dependency-graph": "^0.11.0",
+ "fs-extra": "^11.0.0",
+ "get-stdin": "^9.0.0",
+ "globby": "^14.0.0",
+ "picocolors": "^1.0.0",
+ "postcss-load-config": "^5.0.0",
+ "postcss-reporter": "^7.0.0",
+ "pretty-hrtime": "^1.0.3",
+ "read-cache": "^1.0.0",
+ "slash": "^5.0.0",
+ "yargs": "^17.0.0"
+ },
+ "bin": {
+ "postcss": "index.js"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.0.0"
+ }
+ },
+ "node_modules/postcss-load-config": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-5.1.0.tgz",
+ "integrity": "sha512-G5AJ+IX0aD0dygOE0yFZQ/huFFMSNneyfp0e3/bT05a8OfPC5FUoZRPfGijUdGOJNMewJiwzcHJXFafFzeKFVA==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "lilconfig": "^3.1.1",
+ "yaml": "^2.4.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ },
+ "peerDependencies": {
+ "jiti": ">=1.21.0",
+ "postcss": ">=8.0.9",
+ "tsx": "^4.8.1"
+ },
+ "peerDependenciesMeta": {
+ "jiti": {
+ "optional": true
+ },
+ "postcss": {
+ "optional": true
+ },
+ "tsx": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/postcss-reporter": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-7.1.0.tgz",
+ "integrity": "sha512-/eoEylGWyy6/DOiMP5lmFRdmDKThqgn7D6hP2dXKJI/0rJSO1ADFNngZfDzxL0YAxFvws+Rtpuji1YIHj4mySA==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "picocolors": "^1.0.0",
+ "thenby": "^1.3.4"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-value-parser": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
+ "license": "MIT"
+ },
+ "node_modules/pretty-hrtime": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
+ "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/pstree.remy": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
+ "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==",
+ "license": "MIT"
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/read-cache": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
+ "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
+ "license": "MIT",
+ "dependencies": {
+ "pify": "^2.3.0"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "license": "MIT",
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "license": "MIT",
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/sass": {
+ "version": "1.77.8",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.8.tgz",
+ "integrity": "sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==",
+ "license": "MIT",
+ "dependencies": {
+ "chokidar": ">=3.0.0 <4.0.0",
+ "immutable": "^4.0.0",
+ "source-map-js": ">=0.6.2 <2.0.0"
+ },
+ "bin": {
+ "sass": "sass.js"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/semver": {
+ "version": "7.6.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
+ "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/simple-update-notifier": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz",
+ "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==",
+ "license": "MIT",
+ "dependencies": {
+ "semver": "^7.5.3"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/slash": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz",
+ "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
+ "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/spark-md5": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.2.tgz",
+ "integrity": "sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw==",
+ "license": "(WTFPL OR MIT)"
+ },
+ "node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/tabby-agent": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/tabby-agent/-/tabby-agent-1.7.0.tgz",
+ "integrity": "sha512-jA8cCO39V+nOvFZP3GaXlxQEqqwXJvvz9tlgVFcqbq2gcWTBSUV4SbxoPYDRKIhY27oTXfeG0SHkAaoL+km5GA==",
+ "dev": true,
+ "bin": {
+ "tabby-agent": "dist/node/index.js"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/thenby": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/thenby/-/thenby-1.3.4.tgz",
+ "integrity": "sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "license": "MIT",
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/touch": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz",
+ "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==",
+ "license": "ISC",
+ "bin": {
+ "nodetouch": "bin/nodetouch.js"
+ }
+ },
+ "node_modules/trix": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/trix/-/trix-2.1.3.tgz",
+ "integrity": "sha512-LqMp67LiKMQytAHKqNL1Jgmfz69ViW+WBOQTPA2BlMIuxic1mw5vHgDtOE0bvvojUdjAxh0EJtLpJn6BC/2JKw==",
+ "license": "MIT"
+ },
+ "node_modules/undefsafe": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz",
+ "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==",
+ "license": "MIT"
+ },
+ "node_modules/unicorn-magic": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz",
+ "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz",
+ "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "escalade": "^3.1.2",
+ "picocolors": "^1.0.1"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yaml": {
+ "version": "2.4.5",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz",
+ "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==",
+ "license": "ISC",
+ "bin": {
+ "yaml": "bin.mjs"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "license": "MIT",
+ "dependencies": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
index e3d2076..94d542f 100644
--- a/package.json
+++ b/package.json
@@ -25,5 +25,8 @@
},
"browserslist": [
"defaults"
- ]
+ ],
+ "devDependencies": {
+ "tabby-agent": "^1.7.0"
+ }
}
diff --git a/test/controllers/checklists_controller_test.rb b/test/controllers/checklists_controller_test.rb
index abe84e9..dcfe1b7 100644
--- a/test/controllers/checklists_controller_test.rb
+++ b/test/controllers/checklists_controller_test.rb
@@ -17,7 +17,7 @@ class ChecklistsControllerTest < ActionDispatch::IntegrationTest
test "should create checklist" do
assert_difference("Checklist.count") do
- post checklists_url, params: { checklist: { code: @checklist.code, description: @checklist.description, name: @checklist.name } }
+ post checklists_url, params: { checklist: { code: @checklist.code, description_html: @checklist.description_html, name: @checklist.name } }
end
assert_redirected_to checklist_url(Checklist.last)
@@ -34,7 +34,7 @@ class ChecklistsControllerTest < ActionDispatch::IntegrationTest
end
test "should update checklist" do
- patch checklist_url(@checklist), params: { checklist: { code: @checklist.code, description: @checklist.description, name: @checklist.name } }
+ patch checklist_url(@checklist), params: { checklist: { code: @checklist.code, description_html: @checklist.description_html, name: @checklist.name } }
assert_redirected_to checklist_url(@checklist)
end
diff --git a/test/controllers/checks_controller_test.rb b/test/controllers/checks_controller_test.rb
index a230625..6e110ac 100644
--- a/test/controllers/checks_controller_test.rb
+++ b/test/controllers/checks_controller_test.rb
@@ -19,7 +19,7 @@ class ChecksControllerTest < ActionDispatch::IntegrationTest
assert_difference('Check.count') do
post checks_url,
params: { check: { level: @check.level, name: @check.name, position: @check.position,
- success_criterion: @check.success_criterion } }
+ success_criterion_html: @check.success_criterion_html } }
end
assert_redirected_to check_url(Check.last)
@@ -38,7 +38,7 @@ class ChecksControllerTest < ActionDispatch::IntegrationTest
test 'should update check' do
patch check_url(@check),
params: { check: { level: @check.level, name: @check.name, position: @check.position,
- success_criterion: @check.success_criterion } }
+ success_criterion_html: @check.success_criterion_html } }
assert_redirected_to check_url(@check)
end
diff --git a/test/controllers/elements_controller_test.rb b/test/controllers/elements_controller_test.rb
index fd2f053..9d34716 100644
--- a/test/controllers/elements_controller_test.rb
+++ b/test/controllers/elements_controller_test.rb
@@ -19,7 +19,7 @@ class ElementsControllerTest < ActionDispatch::IntegrationTest
test 'should create element' do
assert_difference('Element.count') do
post elements_url,
- params: { element: { description: @element.description, path: @element.path, report_id: @element.report_id,
+ params: { element: { description_html: @element.description_html, path: @element.path, report_id: @element.report_id,
title: @element.title, checklist_id: @checklist.id } }
end
@@ -38,7 +38,7 @@ class ElementsControllerTest < ActionDispatch::IntegrationTest
test 'should update element' do
patch element_url(@element),
- params: { element: { description: @element.description, path: @element.path, report_id: @element.report_id,
+ params: { element: { description_html: @element.description_html, path: @element.path, report_id: @element.report_id,
title: @element.title } }
assert_redirected_to element_url(@element)
end
diff --git a/test/controllers/link_categories_controller_test.rb b/test/controllers/link_categories_controller_test.rb
new file mode 100644
index 0000000..99829d7
--- /dev/null
+++ b/test/controllers/link_categories_controller_test.rb
@@ -0,0 +1,49 @@
+require "test_helper"
+
+class LinkCategoriesControllerTest < ActionDispatch::IntegrationTest
+ setup do
+ @link_category = link_categories(:one)
+ end
+
+ test "should get index" do
+ get link_categories_url
+ assert_response :success
+ end
+
+ test "should get new" do
+ get new_link_category_url
+ assert_response :success
+ end
+
+ test "should create link_category" do
+ assert_difference("LinkCategory.count") do
+ post link_categories_url, params: { link_category: { description: @link_category.description, name: @link_category.name } }
+ end
+
+ assert_redirected_to link_category_url(LinkCategory.last)
+ end
+
+ test "should show link_category" do
+ get link_category_url(@link_category)
+ assert_response :success
+ end
+
+ test "should get edit" do
+ get edit_link_category_url(@link_category)
+ assert_response :success
+ end
+
+ test "should update link_category" do
+ patch link_category_url(@link_category), params: { link_category: { description: @link_category.description, name: @link_category.name } }
+ assert_redirected_to link_category_url(@link_category)
+ end
+
+ test "should destroy link_category" do
+ assert_difference("LinkCategory.count", -1) do
+ link_category = link_categories(:deletable)
+ delete link_category_url(link_category)
+ end
+
+ assert_redirected_to link_categories_url
+ end
+end
diff --git a/test/controllers/links_controller_test.rb b/test/controllers/links_controller_test.rb
new file mode 100644
index 0000000..3c83334
--- /dev/null
+++ b/test/controllers/links_controller_test.rb
@@ -0,0 +1,48 @@
+require "test_helper"
+
+class LinksControllerTest < ActionDispatch::IntegrationTest
+ setup do
+ @link = links(:one)
+ end
+
+ test "should get index" do
+ get links_url
+ assert_response :success
+ end
+
+ test "should get new" do
+ get new_link_url
+ assert_response :success
+ end
+
+ test "should create link" do
+ assert_difference("Link.count") do
+ post links_url, params: { link: { fail_count: @link.fail_count, last_check_at: @link.last_check_at, link_category_id: @link.link_category_id, text: @link.text, url: @link.url } }
+ end
+
+ assert_redirected_to link_url(Link.last)
+ end
+
+ test "should show link" do
+ get link_url(@link)
+ assert_response :success
+ end
+
+ test "should get edit" do
+ get edit_link_url(@link)
+ assert_response :success
+ end
+
+ test "should update link" do
+ patch link_url(@link), params: { link: { fail_count: @link.fail_count, last_check_at: @link.last_check_at, link_category_id: @link.link_category_id, text: @link.text, url: @link.url } }
+ assert_redirected_to link_url(@link)
+ end
+
+ test "should destroy link" do
+ assert_difference("Link.count", -1) do
+ delete link_url(@link)
+ end
+
+ assert_redirected_to links_url
+ end
+end
diff --git a/test/controllers/reports_controller_test.rb b/test/controllers/reports_controller_test.rb
index c3d2951..6e26f15 100644
--- a/test/controllers/reports_controller_test.rb
+++ b/test/controllers/reports_controller_test.rb
@@ -17,7 +17,7 @@ class ReportsControllerTest < ActionDispatch::IntegrationTest
test "should create report" do
assert_difference("Report.count") do
- post reports_url, params: { report: { comment: @report.comment, name: @report.name } }
+ post reports_url, params: { report: { comment_html: @report.comment_html, name: @report.name } }
end
assert_redirected_to report_url(Report.last)
@@ -34,7 +34,7 @@ class ReportsControllerTest < ActionDispatch::IntegrationTest
end
test "should update report" do
- patch report_url(@report), params: { report: { comment: @report.comment, name: @report.name } }
+ patch report_url(@report), params: { report: { comment_html: @report.comment_html, name: @report.name } }
assert_redirected_to report_url(@report)
end
diff --git a/test/controllers/success_criteria_controller_test.rb b/test/controllers/success_criteria_controller_test.rb
index 480ec6a..3046632 100644
--- a/test/controllers/success_criteria_controller_test.rb
+++ b/test/controllers/success_criteria_controller_test.rb
@@ -17,7 +17,7 @@ class SuccessCriteriaControllerTest < ActionDispatch::IntegrationTest
test "should create success_criterion" do
assert_difference("SuccessCriterion.count") do
- post success_criteria_url, params: { success_criterion: { comment: @success_criterion.comment, description: @success_criterion.description, element_id: @success_criterion.element_id, level: @success_criterion.level, result: @success_criterion.result, title: @success_criterion.title } }
+ post success_criteria_url, params: { success_criterion: { comment_html: @success_criterion.comment_html, description_html: @success_criterion.description_html, element_id: @success_criterion.element_id, level: @success_criterion.level, result: @success_criterion.result, title: @success_criterion.title } }
end
assert_redirected_to success_criterion_url(SuccessCriterion.last)
@@ -34,7 +34,7 @@ class SuccessCriteriaControllerTest < ActionDispatch::IntegrationTest
end
test "should update success_criterion" do
- patch success_criterion_url(@success_criterion), params: { success_criterion: { comment: @success_criterion.comment, description: @success_criterion.description, element_id: @success_criterion.element_id, level: @success_criterion.level, result: @success_criterion.result, title: @success_criterion.title } }
+ patch success_criterion_url(@success_criterion), params: { success_criterion: { comment_html: @success_criterion.comment_html, description_html: @success_criterion.description_html, element_id: @success_criterion.element_id, level: @success_criterion.level, result: @success_criterion.result, title: @success_criterion.title } }
assert_redirected_to success_criterion_url(@success_criterion)
end
diff --git a/test/fixtures/checklists.yml b/test/fixtures/checklists.yml
index 2a957fa..59387ea 100644
--- a/test/fixtures/checklists.yml
+++ b/test/fixtures/checklists.yml
@@ -3,9 +3,7 @@
one:
code: MyString
name: MyString
- description: MyText
two:
code: MyString
name: MyString
- description: MyText
diff --git a/test/fixtures/checks.yml b/test/fixtures/checks.yml
index c5c8760..4a70959 100644
--- a/test/fixtures/checks.yml
+++ b/test/fixtures/checks.yml
@@ -3,17 +3,14 @@
one:
position: MyString
name: MyString
- success_criterion: MyText
level: 1
two:
position: MyString
name: MyString
- success_criterion: MyText
level: 1
deletable:
position: MyString
name: MyString
- success_criterion: MyText
- level: 1
\ No newline at end of file
+ level: 1
diff --git a/test/fixtures/elements.yml b/test/fixtures/elements.yml
index e389c2a..bd233e6 100644
--- a/test/fixtures/elements.yml
+++ b/test/fixtures/elements.yml
@@ -4,10 +4,10 @@ one:
report: one
path: MyString
title: MyString
- description: MyText
+ # description: MyText
two:
report: two
path: MyString
title: MyString
- description: MyText
+ # description: MyText
diff --git a/test/fixtures/link_categories.yml b/test/fixtures/link_categories.yml
new file mode 100644
index 0000000..05c403f
--- /dev/null
+++ b/test/fixtures/link_categories.yml
@@ -0,0 +1,14 @@
+# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
+
+one:
+ name: Tools
+ description: MyString
+
+two:
+ name: Checklisten
+ description: MyString
+
+deletable:
+ name: Delete me
+ description: please
+
diff --git a/test/fixtures/links.yml b/test/fixtures/links.yml
new file mode 100644
index 0000000..8f34a11
--- /dev/null
+++ b/test/fixtures/links.yml
@@ -0,0 +1,15 @@
+# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
+
+one:
+ url: https://example.com
+ text: MyString
+ last_check_at: 2024-07-25 19:34:33
+ fail_count: 1
+ link_category: one
+
+two:
+ url: https://wikipedia.org
+ text: MyString
+ last_check_at: 2024-07-25 19:34:33
+ fail_count: 1
+ link_category: two
diff --git a/test/fixtures/reports.yml b/test/fixtures/reports.yml
index afd8e3f..7d41224 100644
--- a/test/fixtures/reports.yml
+++ b/test/fixtures/reports.yml
@@ -2,8 +2,6 @@
one:
name: MyString
- comment: MyText
two:
name: MyString
- comment: MyText
diff --git a/test/fixtures/success_criteria.yml b/test/fixtures/success_criteria.yml
index 12d1527..38cc751 100644
--- a/test/fixtures/success_criteria.yml
+++ b/test/fixtures/success_criteria.yml
@@ -3,15 +3,11 @@
one:
element: one
title: MyString
- description: MyText
level: 1
result: 1
- comment: MyText
two:
element: two
title: MyString
- description: MyText
level: 1
result: 1
- comment: MyText
diff --git a/test/models/element_test.rb b/test/models/element_test.rb
index 165b0f2..62026f9 100644
--- a/test/models/element_test.rb
+++ b/test/models/element_test.rb
@@ -1,7 +1,24 @@
-require "test_helper"
+require 'test_helper'
class ElementTest < ActiveSupport::TestCase
# test "the truth" do
# assert true
# end
+ test 'level calculation' do
+ skip
+ sc1 = success_criteria(:one)
+ sc2 = success_criteria(:two)
+ sc3 = success_criteria(:one)
+ sc4 = success_criteria(:two)
+ sc5 = success_criteria(:one)
+ sc6 = success_criteria(:two)
+ element = elements(:one)
+ element.success_criteria = [sc1, sc2, sc3, sc4, sc5, sc6]
+ element.success_criteria.each { _1.passed! }
+ assert element.level == :A
+
+ element.success_criteria.each { _1.result = :passed }
+
+ assert element.level == 'A'
+ end
end
diff --git a/test/models/link_category_test.rb b/test/models/link_category_test.rb
new file mode 100644
index 0000000..f47575f
--- /dev/null
+++ b/test/models/link_category_test.rb
@@ -0,0 +1,7 @@
+require "test_helper"
+
+class LinkCategoryTest < ActiveSupport::TestCase
+ # test "the truth" do
+ # assert true
+ # end
+end
diff --git a/test/models/link_test.rb b/test/models/link_test.rb
new file mode 100644
index 0000000..c4a0f6e
--- /dev/null
+++ b/test/models/link_test.rb
@@ -0,0 +1,7 @@
+require "test_helper"
+
+class LinkTest < ActiveSupport::TestCase
+ # test "the truth" do
+ # assert true
+ # end
+end
diff --git a/test/system/checklists_test.rb b/test/system/checklists_test.rb
index fe6114c..18f9ca0 100644
--- a/test/system/checklists_test.rb
+++ b/test/system/checklists_test.rb
@@ -14,7 +14,7 @@ class ChecklistsTest < ApplicationSystemTestCase
visit checklists_url
click_on 'Checkliste hinzufügen'
- fill_in_rich_text_area 'Details', with: @checklist.description
+ fill_in_rich_text_area 'Details', with: @checklist.description_html
fill_in 'Überschrift', with: @checklist.name
click_on 'Checkliste erstellen'
end
@@ -23,7 +23,7 @@ class ChecklistsTest < ApplicationSystemTestCase
visit checklist_url(@checklist)
click_on 'Checkliste bearbeiten', match: :first
- fill_in_rich_text_area 'Details', with: @checklist.description
+ fill_in_rich_text_area 'Details', with: @checklist.description_html
fill_in 'Überschrift', with: @checklist.name
click_on 'Checkliste aktualisieren'
end
diff --git a/test/system/checks_test.rb b/test/system/checks_test.rb
index 757587e..5c2b097 100644
--- a/test/system/checks_test.rb
+++ b/test/system/checks_test.rb
@@ -39,6 +39,7 @@ class ChecksTest < ApplicationSystemTestCase
end
test 'fail' do
+ skip
assert false
end
end
diff --git a/test/system/elements_test.rb b/test/system/elements_test.rb
index 2a998c5..ef8b5e2 100644
--- a/test/system/elements_test.rb
+++ b/test/system/elements_test.rb
@@ -14,7 +14,7 @@ class ElementsTest < ApplicationSystemTestCase
visit elements_url
click_on 'Element hinzufügen'
- fill_in_rich_text_area 'Details', with: @element.description
+ fill_in_rich_text_area 'Details', with: @element.description_html
fill_in 'Pfad', with: @element.path
fill_in 'Beschreibung', with: @element.title
click_on 'Element erstellen'
@@ -24,7 +24,7 @@ class ElementsTest < ApplicationSystemTestCase
visit element_url(@element)
click_on 'Element bearbeiten', match: :first
- fill_in_rich_text_area 'Details', with: @element.description
+ fill_in_rich_text_area 'Details', with: @element.description_html
fill_in 'Pfad', with: @element.path
fill_in 'Beschreibung', with: @element.title
click_on 'Element aktualisieren'
diff --git a/test/system/link_categories_test.rb b/test/system/link_categories_test.rb
new file mode 100644
index 0000000..7dfd499
--- /dev/null
+++ b/test/system/link_categories_test.rb
@@ -0,0 +1,36 @@
+require 'application_system_test_case'
+
+class LinkCategoriesTest < ApplicationSystemTestCase
+ setup do
+ @link_category = link_categories(:one)
+ end
+
+ test 'visiting the index' do
+ visit link_categories_url
+ assert_selector 'h1', text: 'Linkkategorien'
+ end
+
+ test 'should create Linkkategorie' do
+ visit link_categories_url
+ click_on 'Linkkategorie hinzufügen'
+
+ fill_in_rich_text_area 'Beschreibung', with: @link_category.description_html
+ fill_in 'Name', with: @link_category.name
+ click_on 'Linkkategorie erstellen'
+ end
+
+ test 'should update Link category' do
+ visit link_category_url(@link_category)
+ click_on 'Linkkategorie bearbeiten', match: :first
+
+ fill_in_rich_text_area 'Beschreibung', with: @link_category.description_html
+ fill_in 'Name', with: @link_category.name
+ click_on 'Linkkategorie aktualisieren'
+ end
+
+ test 'should destroy Link category' do
+ link_category = link_categories(:deletable)
+ visit link_category_url(link_category)
+ click_on 'Linkkategorie löschen', match: :first
+ end
+end
diff --git a/test/system/links_test.rb b/test/system/links_test.rb
new file mode 100644
index 0000000..0b7acd9
--- /dev/null
+++ b/test/system/links_test.rb
@@ -0,0 +1,37 @@
+require 'application_system_test_case'
+
+class LinksTest < ApplicationSystemTestCase
+ setup do
+ @link = links(:one)
+ end
+
+ test 'visiting the index' do
+ visit links_url
+ assert_selector 'h1', text: 'Links'
+ end
+
+ test 'should create link' do
+ visit links_url
+ click_on 'Link hinzufügen'
+
+ select @link.link_category.name, from: 'Kategorie'
+ fill_in 'Linktext', with: @link.text
+ fill_in 'Link', with: @link.url
+ click_on 'Link erstellen'
+ end
+
+ test 'should update Link' do
+ visit link_url(@link)
+ click_on 'Link bearbeiten', match: :first
+
+ select @link.link_category.name, from: 'Kategorie'
+ fill_in 'Linktext', with: @link.text
+ fill_in 'Link', with: @link.url
+ click_on 'Link aktualisieren'
+ end
+
+ test 'should destroy Link' do
+ visit link_url(@link)
+ click_on 'Link löschen', match: :first
+ end
+end
diff --git a/test/system/success_criteria_test.rb b/test/system/success_criteria_test.rb
index 24102aa..e4e77cb 100644
--- a/test/system/success_criteria_test.rb
+++ b/test/system/success_criteria_test.rb
@@ -14,8 +14,8 @@ class SuccessCriteriaTest < ApplicationSystemTestCase
visit success_criteria_url
click_on 'Erfolgskriterium hinzufügen'
- fill_in_rich_text_area 'Testkommentar', with: @success_criterion.comment
- fill_in_rich_text_area 'Richtlinie', with: @success_criterion.description
+ fill_in_rich_text_area 'Testkommentar', with: @success_criterion.comment_html
+ fill_in_rich_text_area 'Richtlinie', with: @success_criterion.description_html
# fill_in 'Element', with: @success_criterion.element_id
# fill_in 'Level', with: @success_criterion.level
# fill_in 'Result', with: @success_criterion.result
@@ -28,7 +28,7 @@ class SuccessCriteriaTest < ApplicationSystemTestCase
click_on 'Erfolgskriterium bearbeiten', match: :first
fill_in_rich_text_area 'Testkommentar', with: @success_criterion.comment_html
- fill_in_rich_text_area 'Richtlinie', with: @success_criterion.description
+ fill_in_rich_text_area 'Richtlinie', with: @success_criterion.description_html
find('label', text: 'Bestanden', visible: true).click
fill_in 'Titel', with: 'new'
click_on 'Erfolgskriterium aktualisieren'
diff --git a/yarn.lock b/yarn.lock
index e745dc5..48ee517 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -84,7 +84,7 @@
"@esbuild/linux-x64@0.23.0":
version "0.23.0"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.23.0.tgz#c8409761996e3f6db29abcf9b05bee8d7d80e910"
+ resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.0.tgz"
integrity sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ==
"@esbuild/netbsd-x64@0.23.0":
@@ -124,12 +124,12 @@
"@hotwired/stimulus@^3.2.2":
version "3.2.2"
- resolved "https://registry.yarnpkg.com/@hotwired/stimulus/-/stimulus-3.2.2.tgz#071aab59c600fed95b97939e605ff261a4251608"
+ resolved "https://registry.npmjs.org/@hotwired/stimulus/-/stimulus-3.2.2.tgz"
integrity sha512-eGeIqNOQpXoPAIP7tC1+1Yc1yl1xnwYqg+3mzqxyrbE5pg5YFBZcA6YoTiByJB6DKAEsiWtl6tjTJS4IYtbB7A==
"@hotwired/turbo-rails@^8.0.4":
version "8.0.4"
- resolved "https://registry.yarnpkg.com/@hotwired/turbo-rails/-/turbo-rails-8.0.4.tgz#d224f524a9e33fe687cec5d706054eb6fe13fa5b"
+ resolved "https://registry.npmjs.org/@hotwired/turbo-rails/-/turbo-rails-8.0.4.tgz"
integrity sha512-GHCv5+B2VzYZZvMFpg/g9JLx/8pl/8chcubSB7T+Xn1zYOMqAKB6cT80vvWUzxdwfm/2KfaRysfDz+BmvtjFaw==
dependencies:
"@hotwired/turbo" "^8.0.4"
@@ -137,12 +137,12 @@
"@hotwired/turbo@^8.0.4":
version "8.0.4"
- resolved "https://registry.yarnpkg.com/@hotwired/turbo/-/turbo-8.0.4.tgz#5c5361c06a37cdf10dcba4223f1afd0ca1c75091"
+ resolved "https://registry.npmjs.org/@hotwired/turbo/-/turbo-8.0.4.tgz"
integrity sha512-mlZEFUZrJnpfj+g/XeCWWuokvQyN68WvM78JM+0jfSFc98wegm259vCbC1zSllcspRwbgXK31ibehCy5PA78/Q==
"@nodelib/fs.scandir@2.1.5":
version "2.1.5"
- resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
+ resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz"
integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
dependencies:
"@nodelib/fs.stat" "2.0.5"
@@ -150,12 +150,12 @@
"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
version "2.0.5"
- resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
+ resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
"@nodelib/fs.walk@^1.2.3":
version "1.2.8"
- resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
+ resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz"
integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
dependencies:
"@nodelib/fs.scandir" "2.1.5"
@@ -163,48 +163,48 @@
"@popperjs/core@^2.11.8":
version "2.11.8"
- resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f"
+ resolved "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz"
integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==
"@rails/actioncable@^7.0":
version "7.1.3"
- resolved "https://registry.yarnpkg.com/@rails/actioncable/-/actioncable-7.1.3.tgz#4db480347775aeecd4dde2405659eef74a458881"
+ resolved "https://registry.npmjs.org/@rails/actioncable/-/actioncable-7.1.3.tgz"
integrity sha512-ojNvnoZtPN0pYvVFtlO7dyEN9Oml1B6IDM+whGKVak69MMYW99lC2NOWXWeE3bmwEydbP/nn6ERcpfjHVjYQjA==
"@rails/actiontext@^7.1.3-4":
version "7.1.3-4"
- resolved "https://registry.yarnpkg.com/@rails/actiontext/-/actiontext-7.1.3-4.tgz#6717c4cbe146e04677c1c403d144a4fd9e9227f9"
+ resolved "https://registry.npmjs.org/@rails/actiontext/-/actiontext-7.1.3-4.tgz"
integrity sha512-Yt0aFwV4vmQDH0SPMKACF5WnZ88vn8KHpCbPJIGnFcj4likev+SkmdCLu/TpcHrFQwHWXt+GwKE924Ny92YXAg==
dependencies:
"@rails/activestorage" ">= 7.1.0-alpha"
"@rails/activestorage@>= 7.1.0-alpha":
version "7.1.3"
- resolved "https://registry.yarnpkg.com/@rails/activestorage/-/activestorage-7.1.3.tgz#e83ece6c5fd94b3ddf30a8cf3b8f78cad049e596"
+ resolved "https://registry.npmjs.org/@rails/activestorage/-/activestorage-7.1.3.tgz"
integrity sha512-B+RFYAU8vdTPFg0IJcRp2ey0Qw9hpcUOqHHcWqftDJ76ZMBi9+m/UUeMJlNsSd0l9eD+1HLlFSo1X//cY4yiDw==
dependencies:
spark-md5 "^3.0.1"
"@sindresorhus/merge-streams@^2.1.0":
version "2.3.0"
- resolved "https://registry.yarnpkg.com/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz#719df7fb41766bc143369eaa0dd56d8dc87c9958"
+ resolved "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz"
integrity sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==
ansi-regex@^5.0.1:
version "5.0.1"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
+ resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz"
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
ansi-styles@^4.0.0:
version "4.3.0"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
+ resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"
integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
dependencies:
color-convert "^2.0.1"
anymatch@~3.1.2:
version "3.1.3"
- resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
+ resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz"
integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
dependencies:
normalize-path "^3.0.0"
@@ -212,7 +212,7 @@ anymatch@~3.1.2:
autoprefixer@^10.4.19:
version "10.4.19"
- resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.19.tgz#ad25a856e82ee9d7898c59583c1afeb3fa65f89f"
+ resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz"
integrity sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==
dependencies:
browserslist "^4.23.0"
@@ -224,27 +224,27 @@ autoprefixer@^10.4.19:
balanced-match@^1.0.0:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
+ resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
binary-extensions@^2.0.0:
version "2.3.0"
- resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522"
+ resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz"
integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==
bootstrap-icons@^1.11.3:
version "1.11.3"
- resolved "https://registry.yarnpkg.com/bootstrap-icons/-/bootstrap-icons-1.11.3.tgz#03f9cb754ec005c52f9ee616e2e84a82cab3084b"
+ resolved "https://registry.npmjs.org/bootstrap-icons/-/bootstrap-icons-1.11.3.tgz"
integrity sha512-+3lpHrCw/it2/7lBL15VR0HEumaBss0+f/Lb6ZvHISn1mlK83jjFpooTLsMWbIjJMDjDjOExMsTxnXSIT4k4ww==
bootstrap@^5.3.3:
version "5.3.3"
- resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-5.3.3.tgz#de35e1a765c897ac940021900fcbb831602bac38"
+ resolved "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz"
integrity sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==
brace-expansion@^1.1.7:
version "1.1.11"
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+ resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz"
integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
dependencies:
balanced-match "^1.0.0"
@@ -252,14 +252,14 @@ brace-expansion@^1.1.7:
braces@^3.0.3, braces@~3.0.2:
version "3.0.3"
- resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789"
+ resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz"
integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==
dependencies:
fill-range "^7.1.1"
browserslist@^4.23.0:
version "4.23.2"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.2.tgz#244fe803641f1c19c28c48c4b6ec9736eb3d32ed"
+ resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.23.2.tgz"
integrity sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==
dependencies:
caniuse-lite "^1.0.30001640"
@@ -269,12 +269,12 @@ browserslist@^4.23.0:
caniuse-lite@^1.0.30001599, caniuse-lite@^1.0.30001640:
version "1.0.30001642"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001642.tgz#6aa6610eb24067c246d30c57f055a9d0a7f8d05f"
+ resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001642.tgz"
integrity sha512-3XQ0DoRgLijXJErLSl+bLnJ+Et4KqV1PY6JJBGAFlsNsz31zeAIncyeZfLCabHK/jtSh+671RM9YMldxjUPZtA==
"chokidar@>=3.0.0 <4.0.0", chokidar@^3.3.0, chokidar@^3.5.2:
version "3.6.0"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b"
+ resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz"
integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==
dependencies:
anymatch "~3.1.2"
@@ -289,7 +289,7 @@ caniuse-lite@^1.0.30001599, caniuse-lite@^1.0.30001640:
cliui@^8.0.1:
version "8.0.1"
- resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa"
+ resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz"
integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==
dependencies:
string-width "^4.2.0"
@@ -298,46 +298,46 @@ cliui@^8.0.1:
color-convert@^2.0.1:
version "2.0.1"
- resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
+ resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz"
integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
dependencies:
color-name "~1.1.4"
color-name@~1.1.4:
version "1.1.4"
- resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
+ resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
concat-map@0.0.1:
version "0.0.1"
- resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+ resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
debug@^4:
version "4.3.5"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e"
+ resolved "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz"
integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==
dependencies:
ms "2.1.2"
dependency-graph@^0.11.0:
version "0.11.0"
- resolved "https://registry.yarnpkg.com/dependency-graph/-/dependency-graph-0.11.0.tgz#ac0ce7ed68a54da22165a85e97a01d53f5eb2e27"
+ resolved "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz"
integrity sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==
electron-to-chromium@^1.4.820:
version "1.4.827"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.827.tgz#76068ed1c71dd3963e1befc8ae815004b2da6a02"
+ resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.827.tgz"
integrity sha512-VY+J0e4SFcNfQy19MEoMdaIcZLmDCprqvBtkii1WTCTQHpRvf5N8+3kTYCgL/PcntvwQvmMJWTuDPsq+IlhWKQ==
emoji-regex@^8.0.0:
version "8.0.0"
- resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
+ resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz"
integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
esbuild@^0.23.0:
version "0.23.0"
- resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.23.0.tgz#de06002d48424d9fdb7eb52dbe8e95927f852599"
+ resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.23.0.tgz"
integrity sha512-1lvV17H2bMYda/WaFb2jLPeHU3zml2k4/yagNMG8Q/YtfMjCwEUZa2eXXMgZTVSL5q1n4H7sQ0X6CdJDqqeCFA==
optionalDependencies:
"@esbuild/aix-ppc64" "0.23.0"
@@ -367,12 +367,12 @@ esbuild@^0.23.0:
escalade@^3.1.1, escalade@^3.1.2:
version "3.1.2"
- resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27"
+ resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz"
integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==
fast-glob@^3.3.2:
version "3.3.2"
- resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129"
+ resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz"
integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==
dependencies:
"@nodelib/fs.stat" "^2.0.2"
@@ -383,26 +383,26 @@ fast-glob@^3.3.2:
fastq@^1.6.0:
version "1.17.1"
- resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47"
+ resolved "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz"
integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==
dependencies:
reusify "^1.0.4"
fill-range@^7.1.1:
version "7.1.1"
- resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292"
+ resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz"
integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==
dependencies:
to-regex-range "^5.0.1"
fraction.js@^4.3.7:
version "4.3.7"
- resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7"
+ resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz"
integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==
fs-extra@^11.0.0:
version "11.2.0"
- resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b"
+ resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz"
integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==
dependencies:
graceful-fs "^4.2.0"
@@ -416,24 +416,24 @@ fsevents@~2.3.2:
get-caller-file@^2.0.5:
version "2.0.5"
- resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
+ resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz"
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
get-stdin@^9.0.0:
version "9.0.0"
- resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-9.0.0.tgz#3983ff82e03d56f1b2ea0d3e60325f39d703a575"
+ resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz"
integrity sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==
glob-parent@^5.1.2, glob-parent@~5.1.2:
version "5.1.2"
- resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
+ resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz"
integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
dependencies:
is-glob "^4.0.1"
globby@^14.0.0:
version "14.0.2"
- resolved "https://registry.yarnpkg.com/globby/-/globby-14.0.2.tgz#06554a54ccfe9264e5a9ff8eded46aa1e306482f"
+ resolved "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz"
integrity sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==
dependencies:
"@sindresorhus/merge-streams" "^2.1.0"
@@ -445,61 +445,61 @@ globby@^14.0.0:
graceful-fs@^4.1.6, graceful-fs@^4.2.0:
version "4.2.11"
- resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
+ resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz"
integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
has-flag@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+ resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz"
integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==
ignore-by-default@^1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09"
+ resolved "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz"
integrity sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==
ignore@^5.2.4:
version "5.3.1"
- resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef"
+ resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz"
integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==
immutable@^4.0.0:
version "4.3.6"
- resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.6.tgz#6a05f7858213238e587fb83586ffa3b4b27f0447"
+ resolved "https://registry.npmjs.org/immutable/-/immutable-4.3.6.tgz"
integrity sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==
is-binary-path@~2.1.0:
version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
+ resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz"
integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
dependencies:
binary-extensions "^2.0.0"
is-extglob@^2.1.1:
version "2.1.1"
- resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+ resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz"
integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
is-fullwidth-code-point@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
+ resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz"
integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
is-glob@^4.0.1, is-glob@~4.0.1:
version "4.0.3"
- resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
+ resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz"
integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
dependencies:
is-extglob "^2.1.1"
is-number@^7.0.0:
version "7.0.0"
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
+ resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
jsonfile@^6.0.1:
version "6.1.0"
- resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
+ resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz"
integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==
dependencies:
universalify "^2.0.0"
@@ -508,17 +508,17 @@ jsonfile@^6.0.1:
lilconfig@^3.1.1:
version "3.1.2"
- resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.2.tgz#e4a7c3cb549e3a606c8dcc32e5ae1005e62c05cb"
+ resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz"
integrity sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==
merge2@^1.3.0:
version "1.4.1"
- resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
+ resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz"
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
micromatch@^4.0.4:
version "4.0.7"
- resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5"
+ resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz"
integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==
dependencies:
braces "^3.0.3"
@@ -526,29 +526,29 @@ micromatch@^4.0.4:
minimatch@^3.1.2:
version "3.1.2"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
+ resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
dependencies:
brace-expansion "^1.1.7"
ms@2.1.2:
version "2.1.2"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
+ resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
nanoid@^3.3.7:
version "3.3.7"
- resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8"
+ resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz"
integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==
node-releases@^2.0.14:
version "2.0.14"
- resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b"
+ resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz"
integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==
nodemon@^3.1.4:
version "3.1.4"
- resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-3.1.4.tgz#c34dcd8eb46a05723ccde60cbdd25addcc8725e4"
+ resolved "https://registry.npmjs.org/nodemon/-/nodemon-3.1.4.tgz"
integrity sha512-wjPBbFhtpJwmIeY2yP7QF+UKzPfltVGtfce1g/bB15/8vCGZj8uxD62b/b9M9/WVgme0NZudpownKN+c0plXlQ==
dependencies:
chokidar "^3.5.2"
@@ -564,37 +564,37 @@ nodemon@^3.1.4:
normalize-path@^3.0.0, normalize-path@~3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
+ resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz"
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
normalize-range@^0.1.2:
version "0.1.2"
- resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
+ resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz"
integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==
path-type@^5.0.0:
version "5.0.0"
- resolved "https://registry.yarnpkg.com/path-type/-/path-type-5.0.0.tgz#14b01ed7aea7ddf9c7c3f46181d4d04f9c785bb8"
+ resolved "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz"
integrity sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==
picocolors@^1.0.0, picocolors@^1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1"
+ resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz"
integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
version "2.3.1"
- resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
+ resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
pify@^2.3.0:
version "2.3.0"
- resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
+ resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz"
integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==
postcss-cli@^11.0.0:
version "11.0.0"
- resolved "https://registry.yarnpkg.com/postcss-cli/-/postcss-cli-11.0.0.tgz#649f4b9af447501feb6cbca7f7505a132f90442b"
+ resolved "https://registry.npmjs.org/postcss-cli/-/postcss-cli-11.0.0.tgz"
integrity sha512-xMITAI7M0u1yolVcXJ9XTZiO9aO49mcoKQy6pCDFdMh9kGqhzLVpWxeD/32M/QBmkhcGypZFFOLNLmIW4Pg4RA==
dependencies:
chokidar "^3.3.0"
@@ -612,7 +612,7 @@ postcss-cli@^11.0.0:
postcss-load-config@^5.0.0:
version "5.1.0"
- resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-5.1.0.tgz#4ded23410da973e05edae9d41fa99bb5c1d5477f"
+ resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-5.1.0.tgz"
integrity sha512-G5AJ+IX0aD0dygOE0yFZQ/huFFMSNneyfp0e3/bT05a8OfPC5FUoZRPfGijUdGOJNMewJiwzcHJXFafFzeKFVA==
dependencies:
lilconfig "^3.1.1"
@@ -620,7 +620,7 @@ postcss-load-config@^5.0.0:
postcss-reporter@^7.0.0:
version "7.1.0"
- resolved "https://registry.yarnpkg.com/postcss-reporter/-/postcss-reporter-7.1.0.tgz#5ec476d224e2fe25a054e3c66d9b2901d4fab422"
+ resolved "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-7.1.0.tgz"
integrity sha512-/eoEylGWyy6/DOiMP5lmFRdmDKThqgn7D6hP2dXKJI/0rJSO1ADFNngZfDzxL0YAxFvws+Rtpuji1YIHj4mySA==
dependencies:
picocolors "^1.0.0"
@@ -628,12 +628,12 @@ postcss-reporter@^7.0.0:
postcss-value-parser@^4.2.0:
version "4.2.0"
- resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
+ resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz"
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
postcss@^8.4.39:
version "8.4.39"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.39.tgz#aa3c94998b61d3a9c259efa51db4b392e1bde0e3"
+ resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz"
integrity sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==
dependencies:
nanoid "^3.3.7"
@@ -642,53 +642,53 @@ postcss@^8.4.39:
pretty-hrtime@^1.0.3:
version "1.0.3"
- resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1"
+ resolved "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz"
integrity sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==
pstree.remy@^1.1.8:
version "1.1.8"
- resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a"
+ resolved "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz"
integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==
queue-microtask@^1.2.2:
version "1.2.3"
- resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
+ resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz"
integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
read-cache@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774"
+ resolved "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz"
integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==
dependencies:
pify "^2.3.0"
readdirp@~3.6.0:
version "3.6.0"
- resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
+ resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz"
integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
dependencies:
picomatch "^2.2.1"
require-directory@^2.1.1:
version "2.1.1"
- resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
+ resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz"
integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==
reusify@^1.0.4:
version "1.0.4"
- resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
+ resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz"
integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
run-parallel@^1.1.9:
version "1.2.0"
- resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
+ resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz"
integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
dependencies:
queue-microtask "^1.2.2"
sass@^1.77.8:
version "1.77.8"
- resolved "https://registry.yarnpkg.com/sass/-/sass-1.77.8.tgz#9f18b449ea401759ef7ec1752a16373e296b52bd"
+ resolved "https://registry.npmjs.org/sass/-/sass-1.77.8.tgz"
integrity sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==
dependencies:
chokidar ">=3.0.0 <4.0.0"
@@ -697,34 +697,34 @@ sass@^1.77.8:
semver@^7.5.3:
version "7.6.2"
- resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13"
+ resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz"
integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==
simple-update-notifier@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz#d70b92bdab7d6d90dfd73931195a30b6e3d7cebb"
+ resolved "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz"
integrity sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==
dependencies:
semver "^7.5.3"
slash@^5.0.0, slash@^5.1.0:
version "5.1.0"
- resolved "https://registry.yarnpkg.com/slash/-/slash-5.1.0.tgz#be3adddcdf09ac38eebe8dcdc7b1a57a75b095ce"
+ resolved "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz"
integrity sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==
"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.2.0:
version "1.2.0"
- resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af"
+ resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz"
integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==
spark-md5@^3.0.1:
version "3.0.2"
- resolved "https://registry.yarnpkg.com/spark-md5/-/spark-md5-3.0.2.tgz#7952c4a30784347abcee73268e473b9c0167e3fc"
+ resolved "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.2.tgz"
integrity sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw==
string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
version "4.2.3"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
+ resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
dependencies:
emoji-regex "^8.0.0"
@@ -733,58 +733,63 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
strip-ansi@^6.0.0, strip-ansi@^6.0.1:
version "6.0.1"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
+ resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
dependencies:
ansi-regex "^5.0.1"
supports-color@^5.5.0:
version "5.5.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
+ resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz"
integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
dependencies:
has-flag "^3.0.0"
+tabby-agent@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.npmjs.org/tabby-agent/-/tabby-agent-1.7.0.tgz"
+ integrity sha512-jA8cCO39V+nOvFZP3GaXlxQEqqwXJvvz9tlgVFcqbq2gcWTBSUV4SbxoPYDRKIhY27oTXfeG0SHkAaoL+km5GA==
+
thenby@^1.3.4:
version "1.3.4"
- resolved "https://registry.yarnpkg.com/thenby/-/thenby-1.3.4.tgz#81581f6e1bb324c6dedeae9bfc28e59b1a2201cc"
+ resolved "https://registry.npmjs.org/thenby/-/thenby-1.3.4.tgz"
integrity sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ==
to-regex-range@^5.0.1:
version "5.0.1"
- resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
+ resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz"
integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
dependencies:
is-number "^7.0.0"
touch@^3.1.0:
version "3.1.1"
- resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.1.tgz#097a23d7b161476435e5c1344a95c0f75b4a5694"
+ resolved "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz"
integrity sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==
trix@^2.1.3:
version "2.1.3"
- resolved "https://registry.yarnpkg.com/trix/-/trix-2.1.3.tgz#38c8725cd1864ca5e9784aed7d043fa11669ba81"
+ resolved "https://registry.npmjs.org/trix/-/trix-2.1.3.tgz"
integrity sha512-LqMp67LiKMQytAHKqNL1Jgmfz69ViW+WBOQTPA2BlMIuxic1mw5vHgDtOE0bvvojUdjAxh0EJtLpJn6BC/2JKw==
undefsafe@^2.0.5:
version "2.0.5"
- resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c"
+ resolved "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz"
integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==
unicorn-magic@^0.1.0:
version "0.1.0"
- resolved "https://registry.yarnpkg.com/unicorn-magic/-/unicorn-magic-0.1.0.tgz#1bb9a51c823aaf9d73a8bfcd3d1a23dde94b0ce4"
+ resolved "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz"
integrity sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==
universalify@^2.0.0:
version "2.0.1"
- resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d"
+ resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz"
integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==
update-browserslist-db@^1.1.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz#7ca61c0d8650766090728046e416a8cde682859e"
+ resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz"
integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==
dependencies:
escalade "^3.1.2"
@@ -792,7 +797,7 @@ update-browserslist-db@^1.1.0:
wrap-ansi@^7.0.0:
version "7.0.0"
- resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
+ resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz"
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
dependencies:
ansi-styles "^4.0.0"
@@ -801,22 +806,22 @@ wrap-ansi@^7.0.0:
y18n@^5.0.5:
version "5.0.8"
- resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
+ resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz"
integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
yaml@^2.4.2:
version "2.4.5"
- resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.4.5.tgz#60630b206dd6d84df97003d33fc1ddf6296cca5e"
+ resolved "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz"
integrity sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==
yargs-parser@^21.1.1:
version "21.1.1"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"
+ resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz"
integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
yargs@^17.0.0:
version "17.7.2"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269"
+ resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz"
integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==
dependencies:
cliui "^8.0.1"