diff --git a/CHANGELOG.md b/CHANGELOG.md index eb9ebfb4..e28f0210 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,9 +2,15 @@ ## Unreleased +## Version 23.10.2 + +- Improvement: Recognize payment duplicates more accurately +- Feature: Edit contract and invoice emails before send +- Updates + ## Version 23.10.1 -- Improvement: Limit year calender scroll to 1 month +- Improvement: Limit year calender scroll to 1 month - Bugfixes ## Version 23.9.3 diff --git a/Gemfile.lock b/Gemfile.lock index e146b951..f09817e8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -83,7 +83,7 @@ GEM rake (>= 10.4, < 14.0) ast (2.4.2) aws-eventstream (1.2.0) - aws-partitions (1.835.0) + aws-partitions (1.842.0) aws-sdk-core (3.185.1) aws-eventstream (~> 1, >= 1.0.2) aws-partitions (~> 1, >= 1.651.0) @@ -96,7 +96,7 @@ GEM aws-sdk-core (~> 3, >= 3.181.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.6) - aws-sigv4 (1.6.0) + aws-sigv4 (1.6.1) aws-eventstream (~> 1, >= 1.0.2) babel-source (5.8.35) babel-transpiler (0.7.0) @@ -120,7 +120,7 @@ GEM bundler (>= 1.2.0, < 3) thor (~> 1.0) byebug (11.1.3) - camt_parser (2.15.1) + camt_parser (2.16.0) nokogiri cancancan (3.5.0) capybara (3.39.2) @@ -191,10 +191,10 @@ GEM ffi (1.16.3) foreman (0.87.2) forwardable (1.3.3) - fugit (1.8.1) + fugit (1.9.0) et-orbi (~> 1, >= 1.2.7) raabro (~> 1.4) - gettext (3.4.4) + gettext (3.4.9) erubi locale (>= 2.0.5) prime @@ -262,7 +262,7 @@ GEM msgpack (1.7.2) multi_json (1.15.0) mutex_m (0.1.2) - net-imap (0.4.1) + net-imap (0.4.2) date net-protocol net-pop (0.1.2) @@ -301,7 +301,7 @@ GEM pry-rescue (1.5.2) interception (>= 0.5) pry (>= 0.12.0) - psych (5.1.1) + psych (5.1.1.1) stringio public_suffix (5.0.3) puma (6.4.0) @@ -367,9 +367,9 @@ GEM execjs railties (>= 3.2) tilt - redis (5.0.7) - redis-client (>= 0.9.0) - redis-client (0.17.0) + redis (5.0.8) + redis-client (>= 0.17.0) + redis-client (0.18.0) connection_pool regexp_parser (2.8.2) reline (0.3.9) @@ -401,8 +401,7 @@ GEM rspec-mocks (~> 3.12) rspec-support (~> 3.12) rspec-support (3.12.1) - rubocop (1.57.1) - base64 (~> 0.1.1) + rubocop (1.57.2) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) @@ -413,7 +412,7 @@ GEM rubocop-ast (>= 1.28.1, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 3.0) - rubocop-ast (1.29.0) + rubocop-ast (1.30.0) parser (>= 3.2.1.0) rubocop-capybara (2.19.0) rubocop (~> 1.41) @@ -422,12 +421,12 @@ GEM rubocop-performance (1.19.1) rubocop (>= 1.7.0, < 2.0) rubocop-ast (>= 0.4.0) - rubocop-rails (2.21.2) + rubocop-rails (2.22.0) activesupport (>= 4.2.0) rack (>= 1.1) rubocop (>= 1.33.0, < 2.0) - rubocop-rspec (2.24.1) - rubocop (~> 1.33) + rubocop-rspec (2.25.0) + rubocop (~> 1.40) rubocop-capybara (~> 2.17) rubocop-factory_bot (~> 2.22) ruby-progressbar (1.13.0) @@ -461,7 +460,7 @@ GEM slim (5.1.1) temple (~> 0.10.0) tilt (>= 2.1.0) - slim-rails (3.6.2) + slim-rails (3.6.3) actionpack (>= 3.1) railties (>= 3.1) slim (>= 3.0, < 6.0, != 5.0.0) @@ -473,11 +472,11 @@ GEM terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) text (1.3.1) - thor (1.2.2) + thor (1.3.0) tilt (2.3.0) timeout (0.4.0) - translation (1.37) - gettext (~> 3.2, >= 3.2.5, <= 3.4.4) + translation (1.38) + gettext (~> 3.2, >= 3.2.5, <= 3.4.9) ttfunk (1.7.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) diff --git a/VERSION b/VERSION index 6e8fd795..6c3577ee 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -V23.10.1 +V23.10.2 diff --git a/app/controllers/manage/bookings_controller.rb b/app/controllers/manage/bookings_controller.rb index 65aabfa9..627d84fa 100644 --- a/app/controllers/manage/bookings_controller.rb +++ b/app/controllers/manage/bookings_controller.rb @@ -64,13 +64,11 @@ def create def update @booking.assign_attributes(booking_params) - responses = BookingQuestionResponse.process_nested_attributes(@booking, booking_question_responses_params, - manage: true) - @booking.booking_question_responses = responses unless responses.nil? + process_booking_question_responses @booking.save(context: :manage_update) - call_booking_action - Booking::Log.log(@booking, trigger: :manager, action: booking_action, user: current_user) - respond_with :manage, @booking + redirect_to = call_booking_action + write_booking_log + respond_with :manage, @booking, location: redirect_to end def destroy @@ -85,12 +83,23 @@ def preparation_service @preparation_service ||= BookingPreparationService.new(current_organisation) end + def write_booking_log + Booking::Log.log(@booking, trigger: :manager, action: booking_action, user: current_user) + end + def set_filter @filter = Booking::Filter.new(default_booking_filter_params.merge(booking_filter_params)) end + def process_booking_question_responses + responses = BookingQuestionResponse.process_nested_attributes(@booking, booking_question_responses_params, + manage: true) + @booking.booking_question_responses = responses unless responses.nil? + end + def call_booking_action - booking_action&.call(booking: @booking) + result = booking_action&.call(booking: @booking) + instance_eval(&result.redirect_proc) if result&.redirect_proc.present? rescue BookingActions::Base::NotAllowed @booking.errors.add(:base, :action_not_allowed) end diff --git a/app/controllers/manage/payments_controller.rb b/app/controllers/manage/payments_controller.rb index f9db2562..b0095489 100644 --- a/app/controllers/manage/payments_controller.rb +++ b/app/controllers/manage/payments_controller.rb @@ -10,7 +10,7 @@ def index @payments = @booking.payments.ordered else @payments = @payments.joins(:booking).where(booking: { organisation: current_organisation }).ordered - @payments = @payments.last_year if params[:all].blank? + @payments = @payments.recent if params[:all].blank? end respond_with :manage, @payments end diff --git a/app/domain/booking_actions/base.rb b/app/domain/booking_actions/base.rb index 309270a1..ade65093 100644 --- a/app/domain/booking_actions/base.rb +++ b/app/domain/booking_actions/base.rb @@ -3,6 +3,7 @@ module BookingActions class Base class NotAllowed < StandardError; end + Result = Struct.new(:ok, :redirect_proc, keyword_init: true) include Translatable extend Translatable @@ -34,6 +35,8 @@ def to_s self.class.action_name end + def redirect_to; end + def button_options { variant: 'primary' diff --git a/app/domain/booking_actions/manage/accept.rb b/app/domain/booking_actions/manage/accept.rb index 5426fbe9..a0aa6767 100644 --- a/app/domain/booking_actions/manage/accept.rb +++ b/app/domain/booking_actions/manage/accept.rb @@ -4,7 +4,7 @@ module BookingActions module Manage class Accept < BookingActions::Base def call! - booking.update(transition_to: transition_to) + Result.new ok: booking.update(transition_to: transition_to) end def allowed? diff --git a/app/domain/booking_actions/manage/cancel.rb b/app/domain/booking_actions/manage/cancel.rb index b05adfb2..deecf1fa 100644 --- a/app/domain/booking_actions/manage/cancel.rb +++ b/app/domain/booking_actions/manage/cancel.rb @@ -5,8 +5,12 @@ module Manage class Cancel < BookingActions::Base def call! booking.errors.clear - booking.update(transition_to: :declined_request) if booking.can_transition_to?(:declined_request) - booking.update(transition_to: :cancelation_pending) if booking.can_transition_to?(:cancelation_pending) + transition_to = if booking.can_transition_to?(:declined_request) + :declined_request + elsif booking.can_transition_to?(:cancelation_pending) + :cancelation_pending + end + Result.new ok: booking.update(transition_to: transition_to) end def allowed? diff --git a/app/domain/booking_actions/manage/commit_request.rb b/app/domain/booking_actions/manage/commit_request.rb index 7269a365..0eb270ff 100644 --- a/app/domain/booking_actions/manage/commit_request.rb +++ b/app/domain/booking_actions/manage/commit_request.rb @@ -4,7 +4,7 @@ module BookingActions module Manage class CommitRequest < BookingActions::Base def call! - booking.update(committed_request: true) + Result.new ok: booking.update(committed_request: true) end def allowed? diff --git a/app/domain/booking_actions/manage/email_contract_and_deposit.rb b/app/domain/booking_actions/manage/email_contract_and_deposit.rb index 7579e37a..06bd6654 100644 --- a/app/domain/booking_actions/manage/email_contract_and_deposit.rb +++ b/app/domain/booking_actions/manage/email_contract_and_deposit.rb @@ -8,8 +8,9 @@ class EmailContractAndDeposit < BookingActions::Base def call! notification = prepare_notification - notification.save! && contract.sent! && invoices.each(&:sent!) && notification.deliver - notification.dup.tap { _1.to = operator }.deliver if operator&.email.present? + notification.save! && contract.sent! && invoices.each(&:sent!) + + Result.new ok: notification.valid?, redirect_proc: redirect_proc(notification) end def allowed? @@ -21,6 +22,14 @@ def allowed? private + def redirect_proc(notification) + return unless notification&.persisted? + + proc do + edit_manage_notification_path(notification) + end + end + def invoices @invoices ||= booking.invoices.kept.unsent.where(type: [Invoices::Deposit.to_s, Invoices::Offer.to_s]) end @@ -40,6 +49,7 @@ def prepare_attachments def prepare_notification booking.notifications.new(template: :awaiting_contract_notification, to: booking.tenant, template_context: { contract: contract, invoices: invoices }).tap do |notification| + notification.bcc = operator.email if operator&.email.present? notification.attach(prepare_attachments) end end diff --git a/app/domain/booking_actions/manage/email_contract_without_deposit.rb b/app/domain/booking_actions/manage/email_contract_without_deposit.rb index dce62d26..c2688cc8 100644 --- a/app/domain/booking_actions/manage/email_contract_without_deposit.rb +++ b/app/domain/booking_actions/manage/email_contract_without_deposit.rb @@ -7,10 +7,10 @@ class EmailContractWithoutDeposit < EmailContractAndDeposit required_by: self) def call!(contract = booking.contract) - notification = booking.notifications.new(template: :awaiting_contract_notification, to: booking.tenant, - template_context: { contract: contract }) - notification.attach(prepare_attachments(booking, contract)) - notification.save! && contract.sent! && notification.deliver + notification = prepare_notification + notification.save! && contract.sent! + + Result.new ok: notification.valid?, redirect_proc: redirect_proc(notification) end def allowed? @@ -30,6 +30,14 @@ def button_options private + def redirect_proc(notification) + return unless notification&.persisted? + + proc do + edit_manage_notification_path(notification) + end + end + def prepare_attachments(booking, contract) [ DesignatedDocument.for_booking(booking).where(send_with_contract: true), @@ -37,6 +45,13 @@ def prepare_attachments(booking, contract) ].flatten.compact end + def prepare_notification + booking.notifications.new(template: :awaiting_contract_notification, to: booking.tenant, + template_context: { contract: contract }).tap do |notification| + notification.attach(prepare_attachments(booking, contract)) + end + end + def booking context.fetch(:booking) end diff --git a/app/domain/booking_actions/manage/email_invoices.rb b/app/domain/booking_actions/manage/email_invoices.rb index 6b4789d6..bb8f36fd 100644 --- a/app/domain/booking_actions/manage/email_invoices.rb +++ b/app/domain/booking_actions/manage/email_invoices.rb @@ -8,8 +8,9 @@ class EmailInvoices < BookingActions::Base def call! notification = prepare_notification - notification.deliver && invoices.each(&:sent!) - notification.dup.tap { _1.to = operator }.deliver if operator&.email.present? + notification.save! && invoices.each(&:sent!) + + Result.new ok: notification.valid?, redirect_proc: redirect_proc(notification) end def allowed? @@ -19,6 +20,14 @@ def allowed? protected + def redirect_proc(notification) + return unless notification&.persisted? + + proc do + edit_manage_notification_path(notification) + end + end + def booking context.fetch(:booking) end @@ -31,6 +40,7 @@ def invoices def prepare_notification booking.notifications.new(template: :payment_due_notification, to: booking.tenant, template_context: { invoices: invoices }) do |notification| + notification.bcc = operator.email if operator&.email.present? notification.attach(prepare_attachments) end end diff --git a/app/domain/booking_actions/manage/email_offers.rb b/app/domain/booking_actions/manage/email_offers.rb index 8f117f47..9392fb96 100644 --- a/app/domain/booking_actions/manage/email_offers.rb +++ b/app/domain/booking_actions/manage/email_offers.rb @@ -7,7 +7,9 @@ class EmailOffers < BookingActions::Base def call! notification = prepare_notification - notification.deliver && offers.each(&:sent!) + notification.save! && offers.each(&:sent!) + + Result.new ok: notification.valid?, redirect_proc: redirect_proc(notification) end def allowed? @@ -16,6 +18,14 @@ def allowed? protected + def redirect_proc(notification) + return unless notification&.persisted? + + proc do + edit_manage_notification_path(notification) + end + end + def booking context.fetch(:booking) end diff --git a/app/domain/booking_actions/manage/mark_contract_signed.rb b/app/domain/booking_actions/manage/mark_contract_signed.rb index 576deffa..4e1b9093 100644 --- a/app/domain/booking_actions/manage/mark_contract_signed.rb +++ b/app/domain/booking_actions/manage/mark_contract_signed.rb @@ -7,11 +7,12 @@ class MarkContractSigned < BookingActions::Base def call! booking.contract.signed! - booking.update(committed_request: true) + result = Result.new ok: booking.update(committed_request: true) - return unless Invoices::Deposit.of(booking).kept.unpaid.exists? + return result unless Invoices::Deposit.of(booking).kept.unpaid.exists? booking.notifications.new(template: :contract_signed_notification, to: booking.tenant).deliver + result end def allowed? diff --git a/app/domain/booking_actions/manage/skip_invoice.rb b/app/domain/booking_actions/manage/skip_invoice.rb index 12f9ca55..d734740c 100644 --- a/app/domain/booking_actions/manage/skip_invoice.rb +++ b/app/domain/booking_actions/manage/skip_invoice.rb @@ -4,7 +4,7 @@ module BookingActions module Manage class SkipInvoice < BookingActions::Base def call! - booking.update(transition_to: :completed) + Result.new ok: booking.update(transition_to: :completed) end def allowed? diff --git a/app/domain/booking_actions/public/cancel.rb b/app/domain/booking_actions/public/cancel.rb index d4112793..f5b39840 100644 --- a/app/domain/booking_actions/public/cancel.rb +++ b/app/domain/booking_actions/public/cancel.rb @@ -5,8 +5,12 @@ module Public class Cancel < BookingActions::Base def call! booking.errors.clear - booking.update(transition_to: :cancelled_request) if booking.can_transition_to?(:cancelled_request) - booking.update(transition_to: :cancelation_pending) if booking.can_transition_to?(:cancelation_pending) + transition_to = if booking.can_transition_to?(:declined_request) + :declined_request + elsif booking.can_transition_to?(:cancelation_pending) + :cancelation_pending + end + Result.new ok: booking.update(transition_to: transition_to) end def allowed? diff --git a/app/domain/booking_actions/public/commit_booking_agent_request.rb b/app/domain/booking_actions/public/commit_booking_agent_request.rb index 4c412bcb..0f9ec603 100644 --- a/app/domain/booking_actions/public/commit_booking_agent_request.rb +++ b/app/domain/booking_actions/public/commit_booking_agent_request.rb @@ -4,7 +4,7 @@ module BookingActions module Public class CommitBookingAgentRequest < CommitRequest def call! - agent_booking.update(committed_request: true) + Result.new ok: booking.update(committed_request: true) end def allowed? diff --git a/app/domain/booking_actions/public/commit_request.rb b/app/domain/booking_actions/public/commit_request.rb index 600b15fc..d9bb010f 100644 --- a/app/domain/booking_actions/public/commit_request.rb +++ b/app/domain/booking_actions/public/commit_request.rb @@ -4,7 +4,7 @@ module BookingActions module Public class CommitRequest < BookingActions::Base def call! - booking.update(committed_request: true) + Result.new ok: booking.update(committed_request: true) end def allowed? diff --git a/app/domain/booking_actions/public/postpone_deadline.rb b/app/domain/booking_actions/public/postpone_deadline.rb index 18760e51..fda7bd46 100644 --- a/app/domain/booking_actions/public/postpone_deadline.rb +++ b/app/domain/booking_actions/public/postpone_deadline.rb @@ -4,9 +4,7 @@ module BookingActions module Public class PostponeDeadline < BookingActions::Base def call! - return booking.deadline.postpone if allowed? - - booking.deadline.errors.add(:base, :not_postponable) + Result.new ok: booking.deadline.postpone end def allowed? diff --git a/app/domain/booking_flows/base.rb b/app/domain/booking_flows/base.rb index fd46fcf8..030d22d9 100644 --- a/app/domain/booking_flows/base.rb +++ b/app/domain/booking_flows/base.rb @@ -65,6 +65,16 @@ def past_transitions object.state_transitions.pluck(:to_state).map(&:to_sym) end + def rollback_to!(state) + state = object.state_transitions.where(to_state: state).last unless state.is_a? Booking::StateTransition + return if state.blank? + + # rubocop:disable Rails/SkipsModelValidations + object.state_transitions.where(Booking::StateTransition.arel_table[:created_at].gt(state.created_at)) + .destroy_all && object.touch + # rubocop:enable Rails/SkipsModelValidations + end + def infer_next_state self.class.callbacks[:infer].each do |callback| from = callback.from.to_s diff --git a/app/domain/booking_states/payment_due.rb b/app/domain/booking_states/payment_due.rb index 1b0ff9bf..67c7eb64 100644 --- a/app/domain/booking_states/payment_due.rb +++ b/app/domain/booking_states/payment_due.rb @@ -41,7 +41,7 @@ def relevant_time end def invoice_paid_checklist_item - ChecklistItem.new(:invoices_paid, booking.invoices.kept.all?(&:paid?), + ChecklistItem.new(:invoices_paid, booking.invoices.kept.all?(&:settled?), manage_booking_invoices_path(booking, org: booking.organisation, locale: I18n.locale)) end end diff --git a/app/javascript/components/calendar/MonthsCalendar.tsx b/app/javascript/components/calendar/MonthsCalendar.tsx index 04010bfd..4cf31dc4 100644 --- a/app/javascript/components/calendar/MonthsCalendar.tsx +++ b/app/javascript/components/calendar/MonthsCalendar.tsx @@ -43,13 +43,14 @@ const CalendarMonth = memo(function CalendarMonth({ dateString, dateElementFacto interface MonthsCalendarProps { initialFirstDate?: string | Date; dateElementFactory: DateElementFactory; + months?: number; } -function MonthsCalendar({ initialFirstDate, dateElementFactory }: MonthsCalendarProps) { +function MonthsCalendar({ initialFirstDate, dateElementFactory, months }: MonthsCalendarProps) { const [firstDate, setFirstDate] = useState(parseDate(initialFirstDate)); const nextMonth = () => setFirstDate((prevFirstDate) => addMonths(prevFirstDate, 1)); const prevMonth = () => setFirstDate((prevFirstDate) => subMonths(prevFirstDate, 1)); - const interval = { start: firstDate, end: addMonths(firstDate, 7) }; + const interval = { start: firstDate, end: addMonths(firstDate, (months || 8) - 1) }; return (
diff --git a/app/javascript/components/calendar/OccupancyCalendar.tsx b/app/javascript/components/calendar/OccupancyCalendar.tsx index 1a62ffe3..087ab1e1 100644 --- a/app/javascript/components/calendar/OccupancyCalendar.tsx +++ b/app/javascript/components/calendar/OccupancyCalendar.tsx @@ -15,6 +15,7 @@ interface OccupancyCalendarProps { classNameCallback?: (date: Date) => string; disabledCallback?: (date: Date) => boolean; defaultView?: ViewType; + months?: string | number; } type ViewType = "months" | "year"; @@ -32,10 +33,12 @@ function OccupancyCalendar({ disabledCallback, onClick, defaultView, + months, }: OccupancyCalendarProps) { const [view, setView] = useState(defaultView || "months"); const [occupancyWindow, setOccupancyWindow] = useState(); const initialFirstDate = start; + months = Number(months); useEffect(() => { (async () => { @@ -82,6 +85,7 @@ function OccupancyCalendar({ {({ months: MonthsCalendar, year: YearCalendar }[view] || MonthsCalendar)({ initialFirstDate, dateElementFactory, + months, })}
diff --git a/app/javascript/components/calendar/YearCalendar.tsx b/app/javascript/components/calendar/YearCalendar.tsx index 8aaaf4d4..0530b560 100644 --- a/app/javascript/components/calendar/YearCalendar.tsx +++ b/app/javascript/components/calendar/YearCalendar.tsx @@ -8,6 +8,7 @@ import { parseDate, materializedWeekdays } from "./calendar_functions"; interface YearCalendarProps { initialFirstDate?: string | Date; dateElementFactory: DateElementFactory; + months?: number; } const monthNameFormatter = new Intl.DateTimeFormat(document.documentElement.lang, { @@ -15,11 +16,11 @@ const monthNameFormatter = new Intl.DateTimeFormat(document.documentElement.lang year: "numeric", }); -export default function YearCalendar({ initialFirstDate, dateElementFactory }: YearCalendarProps) { +export default function YearCalendar({ initialFirstDate, dateElementFactory, months }: YearCalendarProps) { const [firstDate, setFirstDate] = useState(startOfMonth(parseDate(initialFirstDate))); const nextMonth = () => setFirstDate((prevFirstDate) => addMonths(prevFirstDate, 1)); const prevMonth = () => setFirstDate((prevFirstDate) => subMonths(prevFirstDate, 1)); - const interval = { start: firstDate, end: addMonths(firstDate, 11) }; + const interval = { start: firstDate, end: addMonths(firstDate, Math.max(months || 12, 12) - 1) }; return (
diff --git a/app/javascript/stylesheets/calendar.scss b/app/javascript/stylesheets/calendar.scss index 79b7a8da..9790d420 100644 --- a/app/javascript/stylesheets/calendar.scss +++ b/app/javascript/stylesheets/calendar.scss @@ -258,16 +258,4 @@ transform: translate(-43%, -100%); z-index: 10; display: none; - -} - -.react-tiny-popover-container { - z-index: 10; - - ul.occupancies { - &>li+li { - margin-top: 2em; - } - } - } diff --git a/app/models/ability.rb b/app/models/ability.rb index 7d45a6c1..62a67efd 100644 --- a/app/models/ability.rb +++ b/app/models/ability.rb @@ -74,6 +74,7 @@ class Manage < Base can :read, BookingAgent, organisation: organisation can :read, BookingCategory, organisation: organisation can :read, BookingCondition, tarif: { organisation: organisation } + can :read, BookingQuestion, organisation: organisation can :read, Contract, booking: { organisation: organisation } can %i[read new create], DataDigest, organisation: organisation can :read, DataDigestTemplate, organisation: organisation diff --git a/app/models/booking_question.rb b/app/models/booking_question.rb index 8d8190fb..fd378434 100644 --- a/app/models/booking_question.rb +++ b/app/models/booking_question.rb @@ -79,7 +79,7 @@ def applies_to_booking?(booking) def self.applying_to_booking(booking) return none if booking&.organisation.blank? - booking.organisation.booking_questions.include_conditions.filter do |question| + booking.organisation.booking_questions.include_conditions.ordered.filter do |question| question.applies_to_booking?(booking) end end diff --git a/app/models/invoice.rb b/app/models/invoice.rb index cb0bc70e..d05a2c26 100644 --- a/app/models/invoice.rb +++ b/app/models/invoice.rb @@ -113,7 +113,11 @@ def sent? end def open? - !amount_open.zero? + !settled? + end + + def settled? + amount_open.zero? end def recalculate diff --git a/app/models/invoice_part/factory.rb b/app/models/invoice_part/factory.rb index 9799ce08..a0d2a0f2 100644 --- a/app/models/invoice_part/factory.rb +++ b/app/models/invoice_part/factory.rb @@ -13,9 +13,9 @@ def initialize(invoice) def call I18n.with_locale(invoice.locale || I18n.locale) do [ + from_deposits.presence, from_supersede_invoice.presence, - from_usages.presence, - from_deposits.presence + from_usages.presence ].flatten.compact.each_with_index { |invoice_part, i| invoice_part.ordinal_position = i } end end @@ -40,7 +40,7 @@ def from_deposits [ InvoiceParts::Text.new(apply: suggest?, label: Invoices::Deposit.model_name.human), - InvoiceParts::Add.new(apply: suggest?, label: Invoices::Deposit.model_name.human, amount: - deposited_amount) + InvoiceParts::Add.new(apply: suggest?, label: I18n.t('.deposited_amount'), amount: - deposited_amount) ] end @@ -52,7 +52,7 @@ def usages_to_invoice_parts(usages) usages.filter_map do |usage| next unless usage.tarif&.associated_types&.include?(Tarif::ASSOCIATED_TYPES.key(invoice.class)) - InvoiceParts::Add.from_usage(usage, apply: suggest? && !usage_already_invoiced?(usage)) + InvoiceParts::Add.from_usage(usage, apply: suggest?) end end @@ -63,12 +63,5 @@ def usage_group_to_invoice_part(group, group_usages) def suggest? invoice.invoice_parts.none? end - - def usage_already_invoiced?(usage) - InvoicePart.joins(:invoice).exists?(usage: usage, - invoice: { discarded_at: nil, type: [ - Invoices::Deposit.to_s, Invoices::Invoice.to_s - ] }) - end end end diff --git a/app/models/notification.rb b/app/models/notification.rb index 707a5e02..53787cf0 100644 --- a/app/models/notification.rb +++ b/app/models/notification.rb @@ -6,6 +6,7 @@ # # id :bigint not null, primary key # addressed_to :integer default("manager"), not null +# bcc :string # body :text # cc :string default([]), is an Array # locale :string default(NULL), not null @@ -43,13 +44,9 @@ class Notification < ApplicationRecord validates :to, :locale, presence: true validates :rich_text_template, presence: true, if: :rich_text_template_key? - delegate :bcc, to: :organisation - attribute :rich_text_template_key attribute :template_context - scope :failed, -> { where(queued_for_delivery: true, sent_at: nil).where(arel_table[:created_at].lt(1.hour.ago)) } - before_validation :apply_template def deliverable? @@ -60,6 +57,10 @@ def deliver deliverable? && save && message_delivery.tap(&:deliver_later) end + def delivered? + sent_at.present? + end + def attach(*files_or_documents_to_attach) files_or_documents_to_attach.flatten.map do |attachment| next attachment.attach_to(attachments) if attachment.is_a?(DesignatedDocument) @@ -112,6 +113,10 @@ def text ActionView::Base.full_sanitizer.sanitize(body) end + def bcc + [super, organisation&.bcc].compact + end + # rubocop:disable Metrics/MethodLength def to=(value) value = value.presence diff --git a/app/models/payment.rb b/app/models/payment.rb index d362625f..3c11e103 100644 --- a/app/models/payment.rb +++ b/app/models/payment.rb @@ -42,7 +42,7 @@ class Payment < ApplicationRecord end scope :ordered, -> { order(paid_at: :DESC) } - scope :last_year, -> { where(arel_table[:paid_at].gt(1.year.ago)) } + scope :recent, -> { where(arel_table[:paid_at].gt(3.months.ago)) } after_create :confirm!, if: :confirm? after_destroy :recalculate_invoice @@ -53,7 +53,7 @@ class Payment < ApplicationRecord end def duplicates - Payment.where(booking: booking, paid_at: paid_at, amount: amount).where.not(id: [id]) + Payment.where(booking: booking, paid_at: paid_at, amount: amount, camt_instr_id: camt_instr_id).where.not(id: [id]) end def confirm! diff --git a/app/models/payment/factory.rb b/app/models/payment/factory.rb index 74ff0c8c..1fa66467 100644 --- a/app/models/payment/factory.rb +++ b/app/models/payment/factory.rb @@ -28,11 +28,12 @@ def find_invoice_by_ref(ref) def from_camt_transaction(transaction, entry) ref = transaction.creditor_reference invoice = find_invoice_by_ref(ref) + remarks = [transaction.name, entry.description].compact_blank.join("\n\n") Payment.new( invoice: invoice, booking: invoice&.booking, applies: invoice.present?, ref: ref, paid_at: entry.value_date, amount: transaction.amount, data: camt_transaction_to_h(transaction), - remarks: [transaction.name, entry.description].compact_blank.join("\n\n") + camt_instr_id: transaction.reference, remarks: remarks ) end @@ -45,9 +46,10 @@ def camt_transaction_to_h(transaction) def from_import(payments_params) payments = payments_params.values.filter_map { |payment_params| Payment.new(payment_params) } + payments = payments.select(&:applies) Payment.transaction do - raise ActiveRecord::Rollback unless payments.select(&:applies).all?(&:save) + raise ActiveRecord::Rollback unless payments.all?(&:save) end payments diff --git a/app/params/manage/payment_params.rb b/app/params/manage/payment_params.rb index b0252bb9..9b0305ab 100644 --- a/app/params/manage/payment_params.rb +++ b/app/params/manage/payment_params.rb @@ -3,7 +3,7 @@ module Manage class PaymentParams < ApplicationParams def self.permitted_keys - %i[amount invoice_id booking_id paid_at ref data remarks applies confirm write_off] + %i[amount invoice_id booking_id paid_at ref data remarks applies confirm write_off camt_instr_id] end end end diff --git a/app/views/manage/bookings/_form.html.slim b/app/views/manage/bookings/_form.html.slim index 6adec938..da61c497 100644 --- a/app/views/manage/bookings/_form.html.slim +++ b/app/views/manage/bookings/_form.html.slim @@ -57,7 +57,7 @@ = cf.form_group :country_code, label: { text: Tenant.human_attribute_name(:country_code) } do = cf.country_select :country_code, { default: "CH", priority_countries: %w[CH DE FR IT] }, class: 'form-control' - = cf.text_area :phone, rows: 2 + = cf.text_field :phone = cf.date_select :birth_date, use_two_digit_numbers: true, start_year: Time.zone.today.year - 75, end_year: Time.zone.today.year - 17, include_blank: true = cf.collection_select :locale, Tenant.locales, :first, :first = f.text_field :tenant_organisation diff --git a/app/views/manage/bookings/usages/index.html.slim b/app/views/manage/bookings/usages/index.html.slim index 43e25d99..be9a0aff 100644 --- a/app/views/manage/bookings/usages/index.html.slim +++ b/app/views/manage/bookings/usages/index.html.slim @@ -12,4 +12,7 @@ hr.mt-5 h1.mt-5= t('.applicable_tarifs', default: 'Verfügbare Tarife') section.mt-4 - = render partial: 'manage/bookings/usages/table', locals: { usages: @suggested_usages } + = render layout: 'manage/bookings/usages/table', locals: { usages: @suggested_usages } do + - unless params[:suggest_usages].present? + = link_to url_for(suggest_usages: true), class: 'btn btn-outline-primary ms-2' do + = t('manage.bookings.usages.index.suggest_usages') diff --git a/app/views/manage/designated_documents/_form.html.slim b/app/views/manage/designated_documents/_form.html.slim index b4b5492b..d2accedf 100644 --- a/app/views/manage/designated_documents/_form.html.slim +++ b/app/views/manage/designated_documents/_form.html.slim @@ -2,7 +2,7 @@ = f.select :designation, DesignatedDocument.designations.keys.map { [DesignatedDocument.human_enum(:designation, _1), _1] }, include_blank: true = f.select :locale, I18n.available_locales.map { [_1, _1] }, include_blank: t('.all_locales') = f.text_field :name - = f.file_field :file + = f.file_field :file, required: @designated_document.file.blank? = f.check_box :send_with_contract = f.check_box :send_with_last_infos = f.text_area :remarks diff --git a/app/views/manage/invoices/index.html.slim b/app/views/manage/invoices/index.html.slim index 48035044..0f052e6f 100644 --- a/app/views/manage/invoices/index.html.slim +++ b/app/views/manage/invoices/index.html.slim @@ -81,7 +81,7 @@ - if can?(:manage, invoice) .btn-group - unless invoice.discarded? - - unless invoice.paid? + - if invoice.open? = link_to new_manage_booking_payment_path(invoice.booking, payment: { invoice_id: invoice.id }), class: 'btn btn-default' = t(:add_record, model_name: Payment.model_name.human) - unless invoice.is_a?(Invoices::LateNotice) diff --git a/app/views/manage/notifications/_form.html.slim b/app/views/manage/notifications/_form.html.slim index e69de29b..0bc900d8 100644 --- a/app/views/manage/notifications/_form.html.slim +++ b/app/views/manage/notifications/_form.html.slim @@ -0,0 +1,13 @@ += form_with(model: [:manage, @booking, @notification], local: true) do |f| + + fieldset[v-pre] + = f.text_field :subject + = f.datetime_local_field :sent_at, step: 1 + = f.text_area :body, class: 'rich-text-area' + + .form-actions.pt-4.mt-3 + - if @notification.deliverable? + = f.button name: :'deliver', value: true, class: 'btn btn-primary' + = t('.deliver') + + =<> f.submit diff --git a/app/views/manage/notifications/edit.html.slim b/app/views/manage/notifications/edit.html.slim index d05fdd25..75db26ca 100644 --- a/app/views/manage/notifications/edit.html.slim +++ b/app/views/manage/notifications/edit.html.slim @@ -2,17 +2,16 @@ .row.justify-content-center .col-lg-8 + + - unless @notification.delivered? + .alert.alert-warning.mb-3[role="alert"] + p.m-0= t('manage.notifications.form.not_sent') + .card.shadow-sm .card-body - = form_with(model: [:manage, @booking, @notification], local: true) do |f| - - fieldset - = f.text_field :subject - = f.datetime_local_field :sent_at, step: 1 - = f.text_area :body + == render 'form' - .form-actions.pt-4.mt-3 - => f.submit - - if @notification.deliverable? - = f.button name: :'deliver', value: true, class: 'btn btn-outline-primary' - = t('.deliver') + .card-footer + ul.my-0 + - @notification.attachments.each do |attachment| + li= link_to attachment.filename, attachment, target: :_blank diff --git a/app/views/manage/notifications/show.html.slim b/app/views/manage/notifications/show.html.slim index 075846f0..3530a775 100644 --- a/app/views/manage/notifications/show.html.slim +++ b/app/views/manage/notifications/show.html.slim @@ -2,15 +2,22 @@ .card.shadow-sm .card-body - .mb-3 - = Notification.human_attribute_name(:to) - ' : - - @notification.to.each do |to| - = mail_to(to) - ' + ul.mb-3.list-unstyled + li + = Notification.human_attribute_name(:to) + ' : + - @notification.to.each do |to| + = mail_to(to) + ' + li + = Notification.human_attribute_name(:sent_at) + ' : + = @notification.sent_at.present? ? l(@notification.sent_at) : '-' + h5.card-title= @notification.subject == @notification.body + .card-footer ul.my-0 - @notification.attachments.each do |attachment| diff --git a/app/views/manage/payments/import.html.slim b/app/views/manage/payments/import.html.slim index 44bc3c3b..e4b73a1d 100644 --- a/app/views/manage/payments/import.html.slim +++ b/app/views/manage/payments/import.html.slim @@ -23,11 +23,12 @@ = pf.hidden_field :id = pf.check_box :applies, skip_label: true = pf.hidden_field :ref + = pf.hidden_field :camt_instr_id = pf.hidden_field :data td.py-2 - = pf.collection_select :invoice_id, @invoices, :id, :to_s, skip_label: true, include_blank: true + = pf.collection_select :invoice_id, @invoices, :id, :to_s, skip_label: true, include_blank: true, required: false td.py-2 - = pf.collection_select :booking_id, @bookings, :id, :to_s, skip_label: true, include_blank: true + = pf.collection_select :booking_id, @bookings, :id, :to_s, skip_label: true, include_blank: true, required: false td.py-2 = pf.number_field :amount, skip_label: true, step: 0.05 td.py-2 diff --git a/app/views/manage/payments/import_done.html.slim b/app/views/manage/payments/import_done.html.slim index a71f029f..be630791 100644 --- a/app/views/manage/payments/import_done.html.slim +++ b/app/views/manage/payments/import_done.html.slim @@ -10,17 +10,19 @@ table.table tbody.shadow-sm - @payments.each do |payment| - tr[class=(!payment.applies && 'text-muted' || !payment.valid? && 'alert-danger' || payment.invoice.blank? && 'alert-warning' || payment.persisted? && 'alert-success')] - td - td + tr[class=(!payment.applies && 'text-muted' || !payment.valid? && 'bg-danger-subtle' || payment.invoice.blank? && 'bg-warning-subtle' || payment.persisted? && 'bg-success-subtle')] + td.bg-transparent + td.bg-transparent = link_to payment.invoice, manage_invoice_path(payment.invoice) if payment.invoice.present? - td + td.bg-transparent = link_to payment.booking, manage_booking_path(payment.booking) if payment.booking.present? - td + td.bg-transparent = number_to_currency(payment.amount, unit:payment.organisation.currency) if payment.organisation.present? - td + td.bg-transparent = l payment.paid_at - td + td.bg-transparent p= payment.remarks + - if payment.errors.any? + p.text-danger= payment.errors.full_messages.to_sentence diff --git a/app/views/manage/tenants/_form.html.slim b/app/views/manage/tenants/_form.html.slim index 6e029966..b4f11a86 100644 --- a/app/views/manage/tenants/_form.html.slim +++ b/app/views/manage/tenants/_form.html.slim @@ -16,7 +16,7 @@ = f.form_group :country_code, label: { text: Tenant.human_attribute_name(:country_code) } do = f.country_select :country_code, { default: "CH", priority_countries: %w[CH DE FR IT] }, class: 'form-control' - = f.text_area :phone, rows: 2 + = f.text_field :phone = f.date_select :birth_date, use_two_digit_numbers: true, start_year: Time.zone.today.year - 75, end_year: Time.zone.today.year - 17, include_blank: true = f.text_field :iban = f.text_area :remarks diff --git a/app/views/public/calendars/embed.html.slim b/app/views/public/calendars/embed.html.slim index 3442fe74..00d9eb49 100644 --- a/app/views/public/calendars/embed.html.slim +++ b/app/views/public/calendars/embed.html.slim @@ -12,5 +12,5 @@ html[lang="#{I18n.locale}-CH"] = react_component('calendar/OccupancyCalendar', { \ calendarUrl: occupiable_calendar_url(org: current_organisation&.slug, locale: I18n.locale, occupiable_id: @occupiable.to_param, format: :json), \ occupancyAtUrl: at_occupiable_calendar_url(org: current_organisation&.slug, locale: I18n.locale, occupiable_id: @occupiable.to_param, date: '__DATE__'), \ - defaultView: params[:default_view] \ + defaultView: params[:default_view], months: params[:months] }) diff --git a/app/views/public/occupancies/embed.html.slim b/app/views/public/occupancies/embed.html.slim index e9e2dc05..fc199611 100644 --- a/app/views/public/occupancies/embed.html.slim +++ b/app/views/public/occupancies/embed.html.slim @@ -12,5 +12,5 @@ html[lang="#{I18n.locale}-CH"] = react_component('calendar/OccupancyCalendar', { \ calendarUrl: calendar_home_occupancies_url(org: current_organisation&.slug, locale: I18n.locale, home_id: @home.to_param, format: :json), \ occupancyAtUrl: at_occupiable_calendar_url(org: current_organisation&.slug, locale: I18n.locale, occupiable_id: @home.to_param, date: '__DATE__'), \ - defaultView: params[:default_view] \ + defaultView: params[:default_view], months: params[:months] \ }) diff --git a/config/locales/.translation_io b/config/locales/.translation_io index c0515de4..1a200b38 100644 --- a/config/locales/.translation_io +++ b/config/locales/.translation_io @@ -5,4 +5,4 @@ # ignore the conflicts and "sync" again, it will fix this file for you. --- -timestamp: 1695296692 +timestamp: 1698668476 diff --git a/config/locales/de.yml b/config/locales/de.yml index c14e5c8a..bf83f4d3 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -1274,6 +1274,7 @@ de: index: applicable_tarifs: Anwendbare Tarife save_and_continue: Speichern und %{invoice_type} erstellen + suggest_usages: Tarife und Verbrauch vorschlagen table: save: "%{model_name} speichern" data_digests: @@ -1290,8 +1291,9 @@ de: form: suggested_invoice_parts: Vorgeschlagene Positionen notifications: - edit: - deliver: Speichern und nochmals versenden + form: + deliver: Speichern und versenden + not_sent: Diese Nachricht wurde noch nicht versendet organisation_users: index: invite_user: Neuen Benutzer einladen diff --git a/config/locales/fr.yml b/config/locales/fr.yml index f11dc1be..77617d08 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -533,7 +533,7 @@ fr: booking_questions/check_box: one: Informations supplémentaires sous forme de case à cocher booking_questions/date: - one: + one: Indication supplémentaire sous forme de date booking_questions/integer: one: Information supplémentaire sous forme de nombre entier booking_questions/string: @@ -704,7 +704,7 @@ fr: approximate_headcount: Nombre de personnes attendues days: Jour nights: Nächte - overnight_stays: + overnight_stays: Nombre de nuitées attendues tenant_organisation: Organisation des locataires date_span: attributes: @@ -1101,7 +1101,7 @@ fr: submit: create: Créer un(e) %{model} submit: Enregistrer - update: Valider ces informations %{model} + update: Enregistrer i18n: transliterate: rule: @@ -1197,6 +1197,7 @@ fr: index: applicable_tarifs: Tarifs applicables save_and_continue: Enregistrer et créer %{invoice_type} + suggest_usages: table: save: Enregistrer %{model_name} data_digests: @@ -1215,6 +1216,9 @@ fr: notifications: edit: deliver: Enregistrer et envoyer à nouveau + form: + deliver: + not_sent: organisation_users: index: invite_user: Inviter un nouvel utilisateur diff --git a/config/locales/it.yml b/config/locales/it.yml index 018b9309..9f958bb6 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -1166,6 +1166,7 @@ it: index: applicable_tarifs: Tariffe applicabili save_and_continue: Salvare e creare %{invoice_type}. + suggest_usages: table: save: Salvare %{model_name}. data_digests: @@ -1184,6 +1185,9 @@ it: notifications: edit: deliver: Salvare e inviare di nuovo + form: + deliver: + not_sent: organisation_users: index: invite_user: Invitare un nuovo utente diff --git a/db/migrate/20231024072125_add_bcc_to_notifications.rb b/db/migrate/20231024072125_add_bcc_to_notifications.rb new file mode 100644 index 00000000..82b3c66c --- /dev/null +++ b/db/migrate/20231024072125_add_bcc_to_notifications.rb @@ -0,0 +1,5 @@ +class AddBccToNotifications < ActiveRecord::Migration[7.1] + def change + add_column :notifications, :bcc, :string, null: true + end +end diff --git a/db/migrate/20231027112153_add_instr_id_to_payments.rb b/db/migrate/20231027112153_add_instr_id_to_payments.rb new file mode 100644 index 00000000..808080da --- /dev/null +++ b/db/migrate/20231027112153_add_instr_id_to_payments.rb @@ -0,0 +1,5 @@ +class AddInstrIdToPayments < ActiveRecord::Migration[7.1] + def change + add_column :payments, :camt_instr_id, :string, null: true + end +end diff --git a/db/schema.rb b/db/schema.rb index 26f42846..ff79d40e 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: 2023_10_06_135554) do +ActiveRecord::Schema[7.1].define(version: 2023_10_27_112153) do # These are extensions that must be enabled in order to support this database enable_extension "pgcrypto" enable_extension "plpgsql" @@ -347,6 +347,7 @@ t.string "to", default: [], array: true t.string "cc", default: [], array: true t.string "locale", default: "de", null: false + t.string "bcc" t.index ["booking_id"], name: "index_notifications_on_booking_id" t.index ["rich_text_template_id"], name: "index_notifications_on_rich_text_template_id" end @@ -468,6 +469,7 @@ t.datetime "created_at", precision: nil, null: false t.datetime "updated_at", precision: nil, null: false t.boolean "write_off", default: false, null: false + t.string "camt_instr_id" t.index ["booking_id"], name: "index_payments_on_booking_id" t.index ["invoice_id"], name: "index_payments_on_invoice_id" end diff --git a/package.json b/package.json index 2160b70f..50a7eb9c 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,6 @@ "react-hook-form": "^7.46.2", "react-i18next": "^13.0.0", "react-swipeable": "^7.0.0", - "react-tiny-popover": "^7.2.4", "react_ujs": "^3.1.1", "sass": "^1.68.0", "sass-loader": "^13.3.2", diff --git a/spec/factories/notifications.rb b/spec/factories/notifications.rb index 30fd9295..aafde11c 100644 --- a/spec/factories/notifications.rb +++ b/spec/factories/notifications.rb @@ -6,6 +6,7 @@ # # id :bigint not null, primary key # addressed_to :integer default("manager"), not null +# bcc :string # body :text # cc :string default([]), is an Array # locale :string default(NULL), not null diff --git a/spec/features/booking_strategies/default_spec.rb b/spec/features/booking_strategies/default_spec.rb index adf089af..7a29b16a 100644 --- a/spec/features/booking_strategies/default_spec.rb +++ b/spec/features/booking_strategies/default_spec.rb @@ -42,10 +42,10 @@ end let(:expected_notifications) do - %w[payment_due_notification payment_due_notification payment_confirmation_notification + %w[payment_due_notification payment_confirmation_notification upcoming_notification operator_upcoming_notification operator_upcoming_notification operator_upcoming_soon_notification operator_upcoming_soon_notification - upcoming_soon_notification awaiting_contract_notification awaiting_contract_notification + upcoming_soon_notification awaiting_contract_notification definitive_request_notification manage_definitive_request_notification provisional_request_notification open_request_notification manage_new_booking_notification unconfirmed_request_notification completed_notification] @@ -70,6 +70,7 @@ perform_booking set_usages create_invoice + send_invoice finalize_booking check_booking end @@ -150,6 +151,8 @@ def create_deposit def confirm_booking visit manage_booking_path(@booking, org: org) click_on :email_contract_and_deposit + submit_form + visit manage_booking_path(@booking, org: org) click_on :mark_contract_signed end @@ -179,9 +182,14 @@ def create_invoice submit_form end - def finalize_booking + def send_invoice visit manage_booking_path(@booking, org: org) click_on :email_invoices + submit_form + visit manage_booking_path(@booking, org: org) + end + + def finalize_booking click_on :postpone_deadline visit manage_booking_invoices_path(@booking, org: org) click_on I18n.t(:add_record, model_name: Payment.model_name.human) diff --git a/spec/models/notification_spec.rb b/spec/models/notification_spec.rb index 3878e169..dfb1ca9d 100644 --- a/spec/models/notification_spec.rb +++ b/spec/models/notification_spec.rb @@ -6,6 +6,7 @@ # # id :bigint not null, primary key # addressed_to :integer default("manager"), not null +# bcc :string # body :text # cc :string default([]), is an Array # locale :string default(NULL), not null diff --git a/yarn.lock b/yarn.lock index 2c755138..7a5421d1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1404,9 +1404,9 @@ eslint-visitor-keys "^3.3.0" "@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": - version "4.9.1" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.9.1.tgz#449dfa81a57a1d755b09aa58d826c1262e4283b4" - integrity sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA== + version "4.10.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" + integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== "@eslint/eslintrc@^2.1.2": version "2.1.2" @@ -1423,17 +1423,17 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.51.0": - version "8.51.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.51.0.tgz#6d419c240cfb2b66da37df230f7e7eef801c32fa" - integrity sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg== +"@eslint/js@8.52.0": + version "8.52.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.52.0.tgz#78fe5f117840f69dc4a353adf9b9cd926353378c" + integrity sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA== -"@humanwhocodes/config-array@^0.11.11": - version "0.11.11" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.11.tgz#88a04c570dbbc7dd943e4712429c3df09bc32844" - integrity sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA== +"@humanwhocodes/config-array@^0.11.13": + version "0.11.13" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz#075dc9684f40a531d9b26b0822153c1e832ee297" + integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ== dependencies: - "@humanwhocodes/object-schema" "^1.2.1" + "@humanwhocodes/object-schema" "^2.0.1" debug "^4.1.1" minimatch "^3.0.5" @@ -1442,10 +1442,10 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@humanwhocodes/object-schema@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044" + integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw== "@jest/schemas@^29.6.3": version "29.6.3" @@ -1499,9 +1499,9 @@ integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.19" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811" - integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== + version "0.3.20" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== dependencies: "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" @@ -1601,60 +1601,60 @@ integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== "@types/body-parser@*": - version "1.19.3" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.3.tgz#fb558014374f7d9e56c8f34bab2042a3a07d25cd" - integrity sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ== + version "1.19.4" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.4.tgz#78ad68f1f79eb851aa3634db0c7f57f6f601b462" + integrity sha512-N7UDG0/xiPQa2D/XrVJXjkWbpqHCd2sBaB32ggRF2l83RhPfamgKGF8gwwqyksS95qUS5ZYF9aF+lLPRlwI2UA== dependencies: "@types/connect" "*" "@types/node" "*" "@types/bonjour@^3.5.9": - version "3.5.11" - resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.11.tgz#fbaa46a1529ea5c5e46cde36e4be6a880db55b84" - integrity sha512-isGhjmBtLIxdHBDl2xGwUzEM8AOyOvWsADWq7rqirdi/ZQoHnLWErHvsThcEzTX8juDRiZtzp2Qkv5bgNh6mAg== + version "3.5.12" + resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.12.tgz#49badafb988e6c433ca675a5fd769b93b7649fc8" + integrity sha512-ky0kWSqXVxSqgqJvPIkgFkcn4C8MnRog308Ou8xBBIVo39OmUFy+jqNe0nPwLCDFxUpmT9EvT91YzOJgkDRcFg== dependencies: "@types/node" "*" "@types/connect-history-api-fallback@^1.3.5": - version "1.5.1" - resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.1.tgz#6e5e3602d93bda975cebc3449e1a318340af9e20" - integrity sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw== + version "1.5.2" + resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.2.tgz#acf51e088b3bb6507f7b093bd2b0de20940179cc" + integrity sha512-gX2j9x+NzSh4zOhnRPSdPPmTepS4DfxES0AvIFv3jGv5QyeAJf6u6dY5/BAoAJU9Qq1uTvwOku8SSC2GnCRl6Q== dependencies: "@types/express-serve-static-core" "*" "@types/node" "*" "@types/connect@*": - version "3.4.36" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.36.tgz#e511558c15a39cb29bd5357eebb57bd1459cd1ab" - integrity sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w== + version "3.4.37" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.37.tgz#c66a96689fd3127c8772eb3e9e5c6028ec1a9af5" + integrity sha512-zBUSRqkfZ59OcwXon4HVxhx5oWCJmc0OtBTK05M+p0dYjgN6iTwIL2T/WbsQZrEsdnwaF9cWQ+azOnpPvIqY3Q== dependencies: "@types/node" "*" "@types/eslint-scope@^3.7.3": - version "3.7.5" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.5.tgz#e28b09dbb1d9d35fdfa8a884225f00440dfc5a3e" - integrity sha512-JNvhIEyxVW6EoMIFIvj93ZOywYFatlpu9deeH6eSx6PE3WHYvHaQtmHmQeNw7aA81bYGBPPQqdtBm6b1SsQMmA== + version "3.7.6" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.6.tgz#585578b368ed170e67de8aae7b93f54a1b2fdc26" + integrity sha512-zfM4ipmxVKWdxtDaJ3MP3pBurDXOCoyjvlpE3u6Qzrmw4BPbfm4/ambIeTk/r/J0iq/+2/xp0Fmt+gFvXJY2PQ== dependencies: "@types/eslint" "*" "@types/estree" "*" "@types/eslint@*", "@types/eslint@^8.37.0": - version "8.44.4" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.44.4.tgz#28eaff82e1ca0a96554ec5bb0188f10ae1a74c2f" - integrity sha512-lOzjyfY/D9QR4hY9oblZ76B90MYTB3RrQ4z2vBIJKj9ROCRqdkYl2gSUx1x1a4IWPjKJZLL4Aw1Zfay7eMnmnA== + version "8.44.6" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.44.6.tgz#60e564551966dd255f4c01c459f0b4fb87068603" + integrity sha512-P6bY56TVmX8y9J87jHNgQh43h6VVU+6H7oN7hgvivV81K2XY8qJZ5vqPy/HdUoVIelii2kChYVzQanlswPWVFw== dependencies: "@types/estree" "*" "@types/json-schema" "*" "@types/estree@*", "@types/estree@^1.0.0": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.2.tgz#ff02bc3dc8317cd668dfec247b750ba1f1d62453" - integrity sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA== + version "1.0.3" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.3.tgz#2be19e759a3dd18c79f9f436bd7363556c1a73dd" + integrity sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ== "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": - version "4.17.37" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.37.tgz#7e4b7b59da9142138a2aaa7621f5abedce8c7320" - integrity sha512-ZohaCYTgGFcOP7u6aJOhY9uIZQgZ2vxC2yWoArY+FeDXlqeH66ZVBjgvg+RLVAS/DWNq4Ap9ZXu1+SUQiiWYMg== + version "4.17.39" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.39.tgz#2107afc0a4b035e6cb00accac3bdf2d76ae408c8" + integrity sha512-BiEUfAiGCOllomsRAZOiMFP7LAnrifHpt56pc4Z7l9K6ACyN06Ns1JLMBxwkfLOjJRlSf06NwWsT7yzfpaVpyQ== dependencies: "@types/node" "*" "@types/qs" "*" @@ -1662,9 +1662,9 @@ "@types/send" "*" "@types/express@*", "@types/express@^4.17.13": - version "4.17.19" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.19.tgz#6ff9b4851fda132c5d3dcd2f89fdb6a7a0031ced" - integrity sha512-UtOfBtzN9OvpZPPbnnYunfjM7XCI4jyk1NvnFhTVz5krYAnW4o5DCoIekvms+8ApqhB4+9wSge1kBijdfTSmfg== + version "4.17.20" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.20.tgz#e7c9b40276d29e38a4e3564d7a3d65911e2aa433" + integrity sha512-rOaqlkgEvOW495xErXMsmyX3WKBInbhG5eqojXYi3cGUaLoRDlXa5d52fkfWZT963AZ3v2eZ4MbKE6WpDAGVsw== dependencies: "@types/body-parser" "*" "@types/express-serve-static-core" "^4.17.33" @@ -1672,103 +1672,110 @@ "@types/serve-static" "*" "@types/http-errors@*": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.2.tgz#a86e00bbde8950364f8e7846687259ffcd96e8c2" - integrity sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg== + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.3.tgz#c54e61f79b3947d040f150abd58f71efb422ff62" + integrity sha512-pP0P/9BnCj1OVvQR2lF41EkDG/lWWnDyA203b/4Fmi2eTyORnBtcDoKDwjWQthELrBvWkMOrvSOnZ8OVlW6tXA== "@types/http-proxy@^1.17.8": - version "1.17.12" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.12.tgz#86e849e9eeae0362548803c37a0a1afc616bd96b" - integrity sha512-kQtujO08dVtQ2wXAuSFfk9ASy3sug4+ogFR8Kd8UgP8PEuc1/G/8yjYRmp//PcDNJEUKOza/MrQu15bouEUCiw== + version "1.17.13" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.13.tgz#dd3a4da550580eb0557d4c7128a2ff1d1a38d465" + integrity sha512-GkhdWcMNiR5QSQRYnJ+/oXzu0+7JJEPC8vkWXK351BkhjraZF+1W13CUYARUvX9+NqIU2n6YHA4iwywsc/M6Sw== dependencies: "@types/node" "*" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" - integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + version "2.0.5" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#fdfdd69fa16d530047d9963635bd77c71a08c068" + integrity sha512-zONci81DZYCZjiLe0r6equvZut0b+dBRPBN5kBDjsONnutYNtJMoWQ9uR2RkL1gLG9NMTzvf+29e5RFfPbeKhQ== "@types/istanbul-lib-report@*": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#412e0725ef41cde73bfa03e0e833eaff41e0fd63" - integrity sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ== + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.2.tgz#394798d5f727402eb5ec99eb9618ffcd2b7645a1" + integrity sha512-8toY6FgdltSdONav1XtUHl4LN1yTmLza+EuDazb/fEmRNCwjyqNVIQWs2IfC74IqjHkREs/nQ2FWq5kZU9IC0w== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz#edc8e421991a3b4df875036d381fc0a5a982f549" - integrity sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A== + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.3.tgz#0313e2608e6d6955d195f55361ddeebd4b74c6e7" + integrity sha512-1nESsePMBlf0RPRffLZi5ujYh7IH1BWL4y9pr+Bn3cJBdxz+RTP8bUFljLz9HvzhhOSWKdyBZ4DIivdL6rvgZg== dependencies: "@types/istanbul-lib-report" "*" "@types/jquery@*": - version "3.5.22" - resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.5.22.tgz#893273736f5695a520986c019c873b75b157f26a" - integrity sha512-ISQFeUK5GwRftLK4PVvKTWEVCxZ2BpaqBz0TWkIq5w4vGojxZP9+XkqgcPjxoqmPeew+HLyWthCBvK7GdF5NYA== + version "3.5.25" + resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.5.25.tgz#c817c71d414855f7d71f46da39f43e6b9579b0b9" + integrity sha512-gykx2c+OZf5nx2tv/5fDQqmvGgTiXshELy5jf9IgXPtVfSBl57IUYByN4osbwMXwJijWGOEYQABzGaFZE79A0Q== dependencies: "@types/sizzle" "*" "@types/json-schema@*", "@types/json-schema@^7.0.12", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": - version "7.0.13" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.13.tgz#02c24f4363176d2d18fc8b70b9f3c54aba178a85" - integrity sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ== + version "7.0.14" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.14.tgz#74a97a5573980802f32c8e47b663530ab3b6b7d1" + integrity sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw== "@types/mime@*": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.2.tgz#c1ae807f13d308ee7511a5b81c74f327028e66e8" - integrity sha512-Wj+fqpTLtTbG7c0tH47dkahefpLKEbB+xAZuLq7b4/IDHPl/n6VoXcyUQ2bypFlbSwvCr0y+bD4euTTqTJsPxQ== + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.3.tgz#886674659ce55fe7c6c06ec5ca7c0eb276a08f91" + integrity sha512-i8MBln35l856k5iOhKk2XJ4SeAWg75mLIpZB4v6imOagKL6twsukBZGDMNhdOVk7yRFTMPpfILocMos59Q1otQ== "@types/mime@^1": - version "1.3.3" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.3.tgz#bbe64987e0eb05de150c305005055c7ad784a9ce" - integrity sha512-Ys+/St+2VF4+xuY6+kDIXGxbNRO0mesVg0bbxEfB97Od1Vjpjx9KD1qxs64Gcb3CWPirk9Xe+PT4YiiHQ9T+eg== + version "1.3.4" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.4.tgz#a4ed836e069491414bab92c31fdea9e557aca0d9" + integrity sha512-1Gjee59G25MrQGk8bsNvC6fxNiRgUlGn2wlhGf95a59DrprnnHk80FIMMFG9XHMdrfsuA119ht06QPDXA1Z7tw== + +"@types/node-forge@^1.3.0": + version "1.3.8" + resolved "https://registry.yarnpkg.com/@types/node-forge/-/node-forge-1.3.8.tgz#044ad98354ff309a031a55a40ad122f3be1ac2bb" + integrity sha512-vGXshY9vim9CJjrpcS5raqSjEfKlJcWy2HNdgUasR66fAnVEYarrf1ULV4nfvpC1nZq/moA9qyqBcu83x+Jlrg== + dependencies: + "@types/node" "*" "@types/node@*": - version "20.8.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.6.tgz#0dbd4ebcc82ad0128df05d0e6f57e05359ee47fa" - integrity sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ== + version "20.8.9" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.9.tgz#646390b4fab269abce59c308fc286dcd818a2b08" + integrity sha512-UzykFsT3FhHb1h7yD4CA4YhBHq545JC0YnEz41xkipN88eKQtL6rSgocL5tbAP6Ola9Izm/Aw4Ora8He4x0BHg== dependencies: - undici-types "~5.25.1" + undici-types "~5.26.4" "@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.1.tgz#27f7559836ad796cea31acb63163b203756a5b4e" + integrity sha512-3YmXzzPAdOTVljVMkTMBdBEvlOLg2cDQaDhnnhT3nT9uDbnJzjWhKlzb+desT12Y7tGqaN6d+AbozcKzyL36Ng== "@types/prop-types@*": - version "15.7.8" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.8.tgz#805eae6e8f41bd19e88917d2ea200dc992f405d3" - integrity sha512-kMpQpfZKSCBqltAJwskgePRaYRFukDkm1oItcAbC3gNELR20XIBcN9VRgg4+m8DKsTfkWeA4m4Imp4DDuWy7FQ== + version "15.7.9" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.9.tgz#b6f785caa7ea1fe4414d9df42ee0ab67f23d8a6d" + integrity sha512-n1yyPsugYNSmHgxDFjicaI2+gCNjsBck8UX9kuofAKlc0h1bL+20oSF72KeNaW2DUlesbEVCFgyV2dPGTiY42g== "@types/qs@*": - version "6.9.8" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.8.tgz#f2a7de3c107b89b441e071d5472e6b726b4adf45" - integrity sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg== + version "6.9.9" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.9.tgz#66f7b26288f6799d279edf13da7ccd40d2fa9197" + integrity sha512-wYLxw35euwqGvTDx6zfY1vokBFnsK0HNrzc6xNHchxfO2hpuRg74GbkEW7e3sSmPvj0TjCDT1VCa6OtHXnubsg== "@types/range-parser@*": - version "1.2.5" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.5.tgz#38bd1733ae299620771bd414837ade2e57757498" - integrity sha512-xrO9OoVPqFuYyR/loIHjnbvvyRZREYKLjxV4+dY6v3FQR3stQ9ZxIGkaclF7YhI9hfjpuTbu14hZEy94qKLtOA== + version "1.2.6" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.6.tgz#7cb33992049fd7340d5b10c0098e104184dfcd2a" + integrity sha512-+0autS93xyXizIYiyL02FCY8N+KkKPhILhcUSA276HxzreZ16kl+cmwvV2qAM/PuCCwPXzOXOWhiPcw20uSFcA== "@types/react-dom@^18.0.5": - version "18.2.13" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.13.tgz#89cd7f9ec8b28c8b6f0392b9591671fb4a9e96b7" - integrity sha512-eJIUv7rPP+EC45uNYp/ThhSpE16k22VJUknt5OLoH9tbXoi8bMhwLf5xRuWMywamNbWzhrSmU7IBJfPup1+3fw== + version "18.2.14" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.14.tgz#c01ba40e5bb57fc1dc41569bb3ccdb19eab1c539" + integrity sha512-V835xgdSVmyQmI1KLV2BEIUgqEuinxp9O4G6g3FqO/SqLac049E53aysv0oEFD2kHfejeKU+ZqL2bcFWj9gLAQ== dependencies: "@types/react" "*" "@types/react-transition-group@^4.4.6": - version "4.4.7" - resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.7.tgz#bf69f269d74aa78b99097673ca6dd6824a68ef1c" - integrity sha512-ICCyBl5mvyqYp8Qeq9B5G/fyBSRC0zx3XM3sCC6KkcMsNeAHqXBKkmat4GqdJET5jtYUpZXrxI5flve5qhi2Eg== + version "4.4.8" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.8.tgz#46f87d80512959cac793ecc610a93d80ef241ccf" + integrity sha512-QmQ22q+Pb+HQSn04NL3HtrqHwYMf4h3QKArOy5F8U5nEVMaihBs3SR10WiOM1iwPz5jIo8x/u11al+iEGZZrvg== dependencies: "@types/react" "*" "@types/react@*", "@types/react@>=16.9.11", "@types/react@^18.2.22": - version "18.2.28" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.28.tgz#86877465c0fcf751659a36c769ecedfcfacee332" - integrity sha512-ad4aa/RaaJS3hyGz0BGegdnSRXQBkd1CCYDCdNjBPg90UUpLgo+WlJqb9fMYUxtehmzF3PJaTWqRZjko6BRzBg== + version "18.2.33" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.33.tgz#055356243dc4350a9ee6c6a2c07c5cae12e38877" + integrity sha512-v+I7S+hu3PIBoVkKGpSYYpiBT1ijqEzWpzQD62/jm4K74hPpSP7FF9BnKG6+fg2+62weJYkkBWDJlZt5JO/9hg== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -1780,92 +1787,92 @@ integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== "@types/scheduler@*": - version "0.16.4" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.4.tgz#fedc3e5b15c26dc18faae96bf1317487cb3658cf" - integrity sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ== + version "0.16.5" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.5.tgz#4751153abbf8d6199babb345a52e1eb4167d64af" + integrity sha512-s/FPdYRmZR8SjLWGMCuax7r3qCWQw9QKHzXVukAuuIJkXkDRwp+Pu5LMIVFi0Fxbav35WURicYr8u1QsoybnQw== "@types/semver@^7.5.0": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.3.tgz#9a726e116beb26c24f1ccd6850201e1246122e04" - integrity sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw== + version "7.5.4" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.4.tgz#0a41252ad431c473158b22f9bfb9a63df7541cff" + integrity sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ== "@types/send@*": - version "0.17.2" - resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.2.tgz#af78a4495e3c2b79bfbdac3955fdd50e03cc98f2" - integrity sha512-aAG6yRf6r0wQ29bkS+x97BIs64ZLxeE/ARwyS6wrldMm3C1MdKwCcnnEwMC1slI8wuxJOpiUH9MioC0A0i+GJw== + version "0.17.3" + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.3.tgz#81b2ea5a3a18aad357405af2d643ccbe5a09020b" + integrity sha512-/7fKxvKUoETxjFUsuFlPB9YndePpxxRAOfGC/yJdc9kTjTeP5kRCTzfnE8kPUKCeyiyIZu0YQ76s50hCedI1ug== dependencies: "@types/mime" "^1" "@types/node" "*" "@types/serve-index@^1.9.1": - version "1.9.2" - resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.2.tgz#cb26e775678a8526b73a5d980a147518740aaecd" - integrity sha512-asaEIoc6J+DbBKXtO7p2shWUpKacZOoMBEGBgPG91P8xhO53ohzHWGCs4ScZo5pQMf5ukQzVT9fhX1WzpHihig== + version "1.9.3" + resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.3.tgz#af9403916eb6fbf7d6ec6f47b2a4c46eb3222cc9" + integrity sha512-4KG+yMEuvDPRrYq5fyVm/I2uqAJSAwZK9VSa+Zf+zUq9/oxSSvy3kkIqyL+jjStv6UCVi8/Aho0NHtB1Fwosrg== dependencies: "@types/express" "*" "@types/serve-static@*", "@types/serve-static@^1.13.10": - version "1.15.3" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.3.tgz#2cfacfd1fd4520bbc3e292cca432d5e8e2e3ee61" - integrity sha512-yVRvFsEMrv7s0lGhzrggJjNOSmZCdgCjw9xWrPr/kNNLp6FaDfMC1KaYl3TSJ0c58bECwNBMoQrZJ8hA8E1eFg== + version "1.15.4" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.4.tgz#44b5895a68ca637f06c229119e1c774ca88f81b2" + integrity sha512-aqqNfs1XTF0HDrFdlY//+SGUxmdSUbjeRXb5iaZc3x0/vMbYmdw9qvOgHWOyyLFxSSRnUuP5+724zBgfw8/WAw== dependencies: "@types/http-errors" "*" "@types/mime" "*" "@types/node" "*" "@types/sizzle@*": - version "2.3.4" - resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.4.tgz#cd6531924f60834fa4a1b8081f9eecf9bb1117f0" - integrity sha512-jA2llq2zNkg8HrALI7DtWzhALcVH0l7i89yhY3iBdOz6cBPeACoFq+fkQrjHA39t1hnSFOboZ7A/AY5MMZSlag== + version "2.3.5" + resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.5.tgz#d93dd29cdcd5801d90be968073b09a6b370780e4" + integrity sha512-tAe4Q+OLFOA/AMD+0lq8ovp8t3ysxAOeaScnfNdZpUxaGl51ZMDEITxkvFl1STudQ58mz6gzVGl9VhMKhwRnZQ== "@types/sockjs@^0.3.33": - version "0.3.34" - resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.34.tgz#43e10e549b36d2ba2589278f00f81b5d7ccda167" - integrity sha512-R+n7qBFnm/6jinlteC9DBL5dGiDGjWAvjo4viUanpnc/dG1y7uDoacXPIQ/PQEg1fI912SMHIa014ZjRpvDw4g== + version "0.3.35" + resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.35.tgz#f4a568c73d2a8071944bd6ffdca0d4e66810cd21" + integrity sha512-tIF57KB+ZvOBpAQwSaACfEu7htponHXaFzP7RfKYgsOS0NoYnn+9+jzp7bbq4fWerizI3dTB4NfAZoyeQKWJLw== dependencies: "@types/node" "*" "@types/tinymce@^4.6.6": - version "4.6.6" - resolved "https://registry.yarnpkg.com/@types/tinymce/-/tinymce-4.6.6.tgz#68a200f4d60171c4018acc7adabbd11736adf1de" - integrity sha512-qtQPkrT+PXrgiSB/3gTBNoziui2VazERgvX0RX0f33uNZauqy3Ef0IX0BgJUs9qN443ThS52DiwyewGa18AQvQ== + version "4.6.7" + resolved "https://registry.yarnpkg.com/@types/tinymce/-/tinymce-4.6.7.tgz#376bdb3ac818ff48bcb430d390fcf46e0cbd3e75" + integrity sha512-43xyVGLnGOmJyZ+vii7ODH+GbdYpm3fSS2TnPHRmxxgDo7m8bNflZc7jeHk0yp2q7foP7mAuqi/31JpwQk9srw== dependencies: "@types/jquery" "*" "@types/warning@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/warning/-/warning-3.0.1.tgz#a62d1d2b7f34376da84ee0afe0145152e62b9699" - integrity sha512-ywJmriP+nvjBKNBEMaNZgj2irZHoxcKeYcyMLbqhYKbDVn8yCIULy2Ol/tvIb37O3IBeZj3RU4tXqQTtGwoAMg== + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/warning/-/warning-3.0.2.tgz#264f1f93a68f5dcb598db9764e40f14e13b0e630" + integrity sha512-S/2+OjBIcBl8Kur23YLe0hG1e7J5m2bHfB4UuMNoLZjIFhQWhTf1FeS+WFoXHUC6QsCEfk4pftj4J1KIKC1glA== "@types/ws@^8.5.5": - version "8.5.7" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.7.tgz#1ca585074fe5d2c81dec7a3d451f244a2a6d83cb" - integrity sha512-6UrLjiDUvn40CMrAubXuIVtj2PEfKDffJS7ychvnPU44j+KVeXmdHHTgqcM/dxLUTHxlXHiFM8Skmb8ozGdTnQ== + version "8.5.8" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.8.tgz#13efec7bd439d0bdf2af93030804a94f163b1430" + integrity sha512-flUksGIQCnJd6sZ1l5dqCEG/ksaoAg/eUwiLAGTJQcfgvZJKF++Ta4bJA6A5aPSJmsr+xlseHn4KLgVlNnvPTg== dependencies: "@types/node" "*" "@types/yargs-parser@*": - version "21.0.1" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.1.tgz#07773d7160494d56aa882d7531aac7319ea67c3b" - integrity sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ== + version "21.0.2" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.2.tgz#7bd04c5da378496ef1695a1008bf8f71847a8b8b" + integrity sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw== "@types/yargs@^17.0.8": - version "17.0.28" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.28.tgz#d106e4301fbacde3d1796ab27374dd16588ec851" - integrity sha512-N3e3fkS86hNhtk6BEnc0rj3zcehaxx8QWhCROJkqpl5Zaoi7nAic3jH8q94jVD3zu5LGk+PUB6KAiDmimYOEQw== + version "17.0.29" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.29.tgz#06aabc72497b798c643c812a8b561537fea760cf" + integrity sha512-nacjqA3ee9zRF/++a3FUY1suHTFKZeHba2n8WeDw9cCVdmzmHpIxyzOJBcpHvvEmS8E9KqWlSnWHUkOrkhWcvA== dependencies: "@types/yargs-parser" "*" "@typescript-eslint/eslint-plugin@^6.7.2": - version "6.7.5" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.5.tgz#f4024b9f63593d0c2b5bd6e4ca027e6f30934d4f" - integrity sha512-JhtAwTRhOUcP96D0Y6KYnwig/MRQbOoLGXTON2+LlyB/N35SP9j1boai2zzwXb7ypKELXMx3DVk9UTaEq1vHEw== + version "6.9.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.9.0.tgz#fdb6f3821c0167e3356e9d89c80e8230b2e401f4" + integrity sha512-lgX7F0azQwRPB7t7WAyeHWVfW1YJ9NIgd9mvGhfQpRY56X6AVf8mwM8Wol+0z4liE7XX3QOt8MN1rUKCfSjRIA== dependencies: "@eslint-community/regexpp" "^4.5.1" - "@typescript-eslint/scope-manager" "6.7.5" - "@typescript-eslint/type-utils" "6.7.5" - "@typescript-eslint/utils" "6.7.5" - "@typescript-eslint/visitor-keys" "6.7.5" + "@typescript-eslint/scope-manager" "6.9.0" + "@typescript-eslint/type-utils" "6.9.0" + "@typescript-eslint/utils" "6.9.0" + "@typescript-eslint/visitor-keys" "6.9.0" debug "^4.3.4" graphemer "^1.4.0" ignore "^5.2.4" @@ -1874,73 +1881,78 @@ ts-api-utils "^1.0.1" "@typescript-eslint/parser@^6.7.2": - version "6.7.5" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.7.5.tgz#8d7ca3d1fbd9d5a58cc4d30b2aa797a760137886" - integrity sha512-bIZVSGx2UME/lmhLcjdVc7ePBwn7CLqKarUBL4me1C5feOd663liTGjMBGVcGr+BhnSLeP4SgwdvNnnkbIdkCw== - dependencies: - "@typescript-eslint/scope-manager" "6.7.5" - "@typescript-eslint/types" "6.7.5" - "@typescript-eslint/typescript-estree" "6.7.5" - "@typescript-eslint/visitor-keys" "6.7.5" + version "6.9.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.9.0.tgz#2b402cadeadd3f211c25820e5433413347b27391" + integrity sha512-GZmjMh4AJ/5gaH4XF2eXA8tMnHWP+Pm1mjQR2QN4Iz+j/zO04b9TOvJYOX2sCNIQHtRStKTxRY1FX7LhpJT4Gw== + dependencies: + "@typescript-eslint/scope-manager" "6.9.0" + "@typescript-eslint/types" "6.9.0" + "@typescript-eslint/typescript-estree" "6.9.0" + "@typescript-eslint/visitor-keys" "6.9.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@6.7.5": - version "6.7.5" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.7.5.tgz#1cf33b991043886cd67f4f3600b8e122fc14e711" - integrity sha512-GAlk3eQIwWOJeb9F7MKQ6Jbah/vx1zETSDw8likab/eFcqkjSD7BI75SDAeC5N2L0MmConMoPvTsmkrg71+B1A== +"@typescript-eslint/scope-manager@6.9.0": + version "6.9.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.9.0.tgz#2626e9a7fe0e004c3e25f3b986c75f584431134e" + integrity sha512-1R8A9Mc39n4pCCz9o79qRO31HGNDvC7UhPhv26TovDsWPBDx+Sg3rOZdCELIA3ZmNoWAuxaMOT7aWtGRSYkQxw== dependencies: - "@typescript-eslint/types" "6.7.5" - "@typescript-eslint/visitor-keys" "6.7.5" + "@typescript-eslint/types" "6.9.0" + "@typescript-eslint/visitor-keys" "6.9.0" -"@typescript-eslint/type-utils@6.7.5": - version "6.7.5" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.7.5.tgz#0a65949ec16588d8956f6d967f7d9c84ddb2d72a" - integrity sha512-Gs0qos5wqxnQrvpYv+pf3XfcRXW6jiAn9zE/K+DlmYf6FcpxeNYN0AIETaPR7rHO4K2UY+D0CIbDP9Ut0U4m1g== +"@typescript-eslint/type-utils@6.9.0": + version "6.9.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.9.0.tgz#23923c8c9677c2ad41457cf8e10a5f2946be1b04" + integrity sha512-XXeahmfbpuhVbhSOROIzJ+b13krFmgtc4GlEuu1WBT+RpyGPIA4Y/eGnXzjbDj5gZLzpAXO/sj+IF/x2GtTMjQ== dependencies: - "@typescript-eslint/typescript-estree" "6.7.5" - "@typescript-eslint/utils" "6.7.5" + "@typescript-eslint/typescript-estree" "6.9.0" + "@typescript-eslint/utils" "6.9.0" debug "^4.3.4" ts-api-utils "^1.0.1" -"@typescript-eslint/types@6.7.5": - version "6.7.5" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.7.5.tgz#4571320fb9cf669de9a95d9849f922c3af809790" - integrity sha512-WboQBlOXtdj1tDFPyIthpKrUb+kZf2VroLZhxKa/VlwLlLyqv/PwUNgL30BlTVZV1Wu4Asu2mMYPqarSO4L5ZQ== +"@typescript-eslint/types@6.9.0": + version "6.9.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.9.0.tgz#86a0cbe7ac46c0761429f928467ff3d92f841098" + integrity sha512-+KB0lbkpxBkBSiVCuQvduqMJy+I1FyDbdwSpM3IoBS7APl4Bu15lStPjgBIdykdRqQNYqYNMa8Kuidax6phaEw== -"@typescript-eslint/typescript-estree@6.7.5": - version "6.7.5" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.5.tgz#4578de1a26e9f24950f029a4f00d1bfe41f15a39" - integrity sha512-NhJiJ4KdtwBIxrKl0BqG1Ur+uw7FiOnOThcYx9DpOGJ/Abc9z2xNzLeirCG02Ig3vkvrc2qFLmYSSsaITbKjlg== +"@typescript-eslint/typescript-estree@6.9.0": + version "6.9.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.0.tgz#d0601b245be873d8fe49f3737f93f8662c8693d4" + integrity sha512-NJM2BnJFZBEAbCfBP00zONKXvMqihZCrmwCaik0UhLr0vAgb6oguXxLX1k00oQyD+vZZ+CJn3kocvv2yxm4awQ== dependencies: - "@typescript-eslint/types" "6.7.5" - "@typescript-eslint/visitor-keys" "6.7.5" + "@typescript-eslint/types" "6.9.0" + "@typescript-eslint/visitor-keys" "6.9.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" semver "^7.5.4" ts-api-utils "^1.0.1" -"@typescript-eslint/utils@6.7.5": - version "6.7.5" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.7.5.tgz#ab847b53d6b65e029314b8247c2336843dba81ab" - integrity sha512-pfRRrH20thJbzPPlPc4j0UNGvH1PjPlhlCMq4Yx7EGjV7lvEeGX0U6MJYe8+SyFutWgSHsdbJ3BXzZccYggezA== +"@typescript-eslint/utils@6.9.0": + version "6.9.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.9.0.tgz#5bdac8604fca4823f090e4268e681c84d3597c9f" + integrity sha512-5Wf+Jsqya7WcCO8me504FBigeQKVLAMPmUzYgDbWchINNh1KJbxCgVya3EQ2MjvJMVeXl3pofRmprqX6mfQkjQ== dependencies: "@eslint-community/eslint-utils" "^4.4.0" "@types/json-schema" "^7.0.12" "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "6.7.5" - "@typescript-eslint/types" "6.7.5" - "@typescript-eslint/typescript-estree" "6.7.5" + "@typescript-eslint/scope-manager" "6.9.0" + "@typescript-eslint/types" "6.9.0" + "@typescript-eslint/typescript-estree" "6.9.0" semver "^7.5.4" -"@typescript-eslint/visitor-keys@6.7.5": - version "6.7.5" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.5.tgz#84c68d6ceb5b12d5246b918b84f2b79affd6c2f1" - integrity sha512-3MaWdDZtLlsexZzDSdQWsFQ9l9nL8B80Z4fImSpyllFC/KLqWQRdEcB+gGGO+N3Q2uL40EsG66wZLsohPxNXvg== +"@typescript-eslint/visitor-keys@6.9.0": + version "6.9.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.0.tgz#cc69421c10c4ac997ed34f453027245988164e80" + integrity sha512-dGtAfqjV6RFOtIP8I0B4ZTBRrlTT8NHHlZZSchQx3qReaoDeXhYM++M4So2AgFK9ZB0emRPA6JI1HkafzA2Ibg== dependencies: - "@typescript-eslint/types" "6.7.5" + "@typescript-eslint/types" "6.9.0" eslint-visitor-keys "^3.4.1" +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + "@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": version "1.11.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24" @@ -2106,14 +2118,14 @@ acorn-jsx@^5.3.2: integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn-walk@^8.0.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" - integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + version "8.3.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.0.tgz#2097665af50fd0cf7a2dfccd2b9368964e66540f" + integrity sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA== acorn@^8.0.4, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: - version "8.10.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" - integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== + version "8.11.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b" + integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== ajv-formats@^2.1.1: version "2.1.1" @@ -2299,9 +2311,9 @@ available-typed-arrays@^1.0.5: integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== axios@^1.2.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.5.1.tgz#11fbaa11fc35f431193a9564109c88c1f27b585f" - integrity sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A== + version "1.6.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.0.tgz#f1e5292f26b2fd5c2e66876adc5b06cdbd7d2102" + integrity sha512-EZ1DYihju9pwVB+jg67ogm+Tmqc6JmhamRN6I4Zt8DfZu5lbcQGw3ozH9lFejSJgs/ibaef3A9PMXPLeefFGJg== dependencies: follow-redirects "^1.15.0" form-data "^4.0.0" @@ -2334,12 +2346,12 @@ babel-plugin-polyfill-corejs2@^0.4.6: semver "^6.3.1" babel-plugin-polyfill-corejs3@^0.8.5: - version "0.8.5" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.5.tgz#a75fa1b0c3fc5bd6837f9ec465c0f48031b8cab1" - integrity sha512-Q6CdATeAvbScWPNLB8lzSO7fgUVBkQt6zLgNlfyeCr/EQaEQR+bWiBYYPYAFyE528BMjRhL+1QBMOI4jc/c5TA== + version "0.8.6" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz#25c2d20002da91fe328ff89095c85a391d6856cf" + integrity sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ== dependencies: "@babel/helper-define-polyfill-provider" "^0.4.3" - core-js-compat "^3.32.2" + core-js-compat "^3.33.1" babel-plugin-polyfill-regenerator@^0.5.3: version "0.5.3" @@ -2480,13 +2492,14 @@ bytes@3.1.2: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" callsites@^3.0.0: version "3.1.0" @@ -2504,9 +2517,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001538, caniuse-lite@^1.0.30001541: - version "1.0.30001549" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001549.tgz#7d1a3dce7ea78c06ed72c32c2743ea364b3615aa" - integrity sha512-qRp48dPYSCYaP+KurZLhDYdVE+yEyht/3NlmcJgVQ2VMGt6JL36ndQ/7rgspdZsJuxDPFIo/OzBT2+GmIJ53BA== + version "1.0.30001554" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001554.tgz#ba80d88dff9acbc0cd4b7535fc30e0191c5e2e2a" + integrity sha512-A2E3U//MBwbJVzebddm1YfNp7Nud5Ip+IPn4BozBmn4KqVX7AvluoIDFWjsv5OkGnKUXQVmMSoMKLa3ScCblcQ== chalk@^2.4.2: version "2.4.2" @@ -2705,10 +2718,10 @@ cookie@0.5.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== -core-js-compat@^3.31.0, core-js-compat@^3.32.2: - version "3.33.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.0.tgz#24aa230b228406450b2277b7c8bfebae932df966" - integrity sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw== +core-js-compat@^3.31.0, core-js-compat@^3.33.1: + version "3.33.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.1.tgz#debe80464107d75419e00c2ee29f35982118ff84" + integrity sha512-6pYKNOgD/j/bkC5xS5IIg6bncid3rfrI42oBH1SQJbsmYPKF7rhzcFzYCcxYMmNQQ0rCEB8WqpW7QHndOggaeQ== dependencies: browserslist "^4.22.1" @@ -2957,7 +2970,7 @@ default-gateway@^6.0.3: dependencies: execa "^5.0.0" -define-data-property@^1.0.1: +define-data-property@^1.0.1, define-data-property@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== @@ -3097,9 +3110,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.4.535: - version "1.4.554" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.554.tgz#04e09c2ee31dc0f1546174033809b54cc372740b" - integrity sha512-Q0umzPJjfBrrj8unkONTgbKQXzXRrH7sVV7D9ea2yBV3Oaogz991yhbpfvo2LMNkJItmruXTEzVpP9cp7vaIiQ== + version "1.4.568" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.568.tgz#6ab444e120dd7fd9c3789eac54d3132b6cfcd0f9" + integrity sha512-3TCOv8+BY6Ltpt1/CmGBMups2IdKOyfEmz4J8yIS4xLSeMm0Rf+psSaxLuswG9qMKt+XbNbmADybtXGpTFlbDg== emojis-list@^2.0.0: version "2.1.0" @@ -3142,25 +3155,25 @@ error-ex@^1.3.1: is-arrayish "^0.2.1" es-abstract@^1.22.1: - version "1.22.2" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.2.tgz#90f7282d91d0ad577f505e423e52d4c1d93c1b8a" - integrity sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA== + version "1.22.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.3.tgz#48e79f5573198de6dee3589195727f4f74bc4f32" + integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA== dependencies: array-buffer-byte-length "^1.0.0" arraybuffer.prototype.slice "^1.0.2" available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + call-bind "^1.0.5" es-set-tostringtag "^2.0.1" es-to-primitive "^1.2.1" function.prototype.name "^1.1.6" - get-intrinsic "^1.2.1" + get-intrinsic "^1.2.2" get-symbol-description "^1.0.0" globalthis "^1.0.3" gopd "^1.0.1" - has "^1.0.3" has-property-descriptors "^1.0.0" has-proto "^1.0.1" has-symbols "^1.0.3" + hasown "^2.0.0" internal-slot "^1.0.5" is-array-buffer "^3.0.2" is-callable "^1.2.7" @@ -3170,7 +3183,7 @@ es-abstract@^1.22.1: is-string "^1.0.7" is-typed-array "^1.1.12" is-weakref "^1.0.2" - object-inspect "^1.12.3" + object-inspect "^1.13.1" object-keys "^1.1.1" object.assign "^4.1.4" regexp.prototype.flags "^1.5.1" @@ -3184,7 +3197,7 @@ es-abstract@^1.22.1: typed-array-byte-offset "^1.0.0" typed-array-length "^1.0.4" unbox-primitive "^1.0.2" - which-typed-array "^1.1.11" + which-typed-array "^1.1.13" es-iterator-helpers@^1.0.12: version "1.0.15" @@ -3212,20 +3225,20 @@ es-module-lexer@^1.2.1: integrity sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q== es-set-tostringtag@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" - integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + version "2.0.2" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz#11f7cc9f63376930a5f20be4915834f4bc74f9c9" + integrity sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q== dependencies: - get-intrinsic "^1.1.3" - has "^1.0.3" + get-intrinsic "^1.2.2" has-tostringtag "^1.0.0" + hasown "^2.0.0" es-shim-unscopables@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" - integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + version "1.0.2" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" + integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== dependencies: - has "^1.0.3" + hasown "^2.0.0" es-to-primitive@^1.2.1: version "1.2.1" @@ -3324,17 +3337,18 @@ eslint-webpack-plugin@^4.0.0: schema-utils "^4.0.0" eslint@^8.49.0: - version "8.51.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.51.0.tgz#4a82dae60d209ac89a5cff1604fea978ba4950f3" - integrity sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA== + version "8.52.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.52.0.tgz#d0cd4a1fac06427a61ef9242b9353f36ea7062fc" + integrity sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.6.1" "@eslint/eslintrc" "^2.1.2" - "@eslint/js" "8.51.0" - "@humanwhocodes/config-array" "^0.11.11" + "@eslint/js" "8.52.0" + "@humanwhocodes/config-array" "^0.11.13" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.2" @@ -3675,7 +3689,7 @@ fsevents@~2.3.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== -function-bind@^1.1.1: +function-bind@^1.1.1, function-bind@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== @@ -3700,15 +3714,15 @@ gensync@^1.0.0-beta.2: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" - integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" + integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== dependencies: - function-bind "^1.1.1" - has "^1.0.3" + function-bind "^1.1.2" has-proto "^1.0.1" has-symbols "^1.0.3" + hasown "^2.0.0" get-stream@^6.0.0, get-stream@^6.0.1: version "6.0.1" @@ -3835,11 +3849,11 @@ has-flag@^4.0.0: integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has-property-descriptors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" - integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" + integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== dependencies: - get-intrinsic "^1.1.1" + get-intrinsic "^1.2.2" has-proto@^1.0.1: version "1.0.1" @@ -3858,10 +3872,12 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" -has@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.4.tgz#2eb2860e000011dae4f1406a86fe80e530fb2ec6" - integrity sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ== +hasown@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== + dependencies: + function-bind "^1.1.2" hoist-non-react-statics@^3.3.1: version "3.3.2" @@ -3954,9 +3970,9 @@ human-signals@^4.3.0: integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== i18next@^23.5.1: - version "23.5.1" - resolved "https://registry.yarnpkg.com/i18next/-/i18next-23.5.1.tgz#7f7c35ffaa907618d9489f106d5006b09fbca3d3" - integrity sha512-JelYzcaCoFDaa+Ysbfz2JsGAKkrHiMG6S61+HLBUEIPaF40WMwW9hCPymlQGrP+wWawKxKPuSuD71WZscCsWHg== + version "23.6.0" + resolved "https://registry.yarnpkg.com/i18next/-/i18next-23.6.0.tgz#c6e996cfd3fef0bf60be3b7c581c35338dba5a71" + integrity sha512-z0Cxr0MGkt+kli306WS4nNNM++9cgt2b2VCMprY92j+AIab/oclgPxdwtTZVLP1zn5t5uo8M6uLsZmYrcjr3HA== dependencies: "@babel/runtime" "^7.22.5" @@ -4022,12 +4038,12 @@ inherits@2.0.3: integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== internal-slot@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" - integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== + version "1.0.6" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.6.tgz#37e756098c4911c5e912b8edbf71ed3aa116f930" + integrity sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg== dependencies: - get-intrinsic "^1.2.0" - has "^1.0.3" + get-intrinsic "^1.2.2" + hasown "^2.0.0" side-channel "^1.0.4" interpret@^3.1.1: @@ -4101,11 +4117,11 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== is-core-module@^2.13.0: - version "2.13.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" - integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== dependencies: - has "^1.0.3" + hasown "^2.0.0" is-date-object@^1.0.1, is-date-object@^1.0.5: version "1.0.5" @@ -4779,10 +4795,10 @@ object-assign@^4.0.1, object-assign@^4.1.1: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== -object-inspect@^1.12.3, object-inspect@^1.9.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.0.tgz#42695d3879e1cd5bda6df5062164d80c996e23e2" - integrity sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g== +object-inspect@^1.13.1, object-inspect@^1.9.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== object-keys@^1.1.1: version "1.1.1" @@ -5669,9 +5685,9 @@ raw-body@2.5.1: unpipe "1.0.0" react-bootstrap@^2.3.1: - version "2.9.0" - resolved "https://registry.yarnpkg.com/react-bootstrap/-/react-bootstrap-2.9.0.tgz#10493a3bb7c0429fee886f5571b195ece6c436f0" - integrity sha512-dGh6fGjqR9MBzPOp2KbXJznt1Zy6SWepXYUdxMT18Zu/wJ73HCU8JNZe9dfzjmVssZYsJH9N3HHE4wAtQvNz7g== + version "2.9.1" + resolved "https://registry.yarnpkg.com/react-bootstrap/-/react-bootstrap-2.9.1.tgz#c1ab48ae2b2cfe6d5ac957c2042eb36fcafdb1d2" + integrity sha512-ezgmh/ARCYp18LbZEqPp0ppvy+ytCmycDORqc8vXSKYV3cer4VH7OReV8uMOoKXmYzivJTxgzGHalGrHamryHA== dependencies: "@babel/runtime" "^7.22.5" "@restart/hooks" "^0.4.9" @@ -5700,9 +5716,9 @@ react-hook-form@^7.46.2: integrity sha512-F/TroLjTICipmHeFlMrLtNLceO2xr1jU3CyiNla5zdwsGUGu2UOxxR4UyJgLlhMwLW/Wzp4cpJ7CPfgJIeKdSg== react-i18next@^13.0.0: - version "13.3.0" - resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-13.3.0.tgz#8e39c0101f654db7eb971f159bb55067a78925c3" - integrity sha512-FlR9xjYHSPIJfQspEmkN0yOlxgRyNuiJKJ8gCaZH08UJ7SZHG+VrptEPcpEMEchjNoCOZdKcvJ3PnmHEZhkeXg== + version "13.3.1" + resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-13.3.1.tgz#9b072bf4dd4cafb028e92315a8a1415f8034bdca" + integrity sha512-JAtYREK879JXaN9GdzfBI4yJeo/XyLeXWUsRABvYXiFUakhZJ40l+kaTo+i+A/3cKIED41kS/HAbZ5BzFtq/Og== dependencies: "@babel/runtime" "^7.22.5" html-parse-stringify "^3.0.1" @@ -5722,11 +5738,6 @@ react-swipeable@^7.0.0: resolved "https://registry.yarnpkg.com/react-swipeable/-/react-swipeable-7.0.1.tgz#cd299f5986c5e4a7ee979839658c228f660e1e0c" integrity sha512-RKB17JdQzvECfnVj9yDZsiYn3vH0eyva/ZbrCZXZR0qp66PBRhtg4F9yJcJTWYT5Adadi+x4NoG53BxKHwIYLQ== -react-tiny-popover@^7.2.4: - version "7.2.4" - resolved "https://registry.yarnpkg.com/react-tiny-popover/-/react-tiny-popover-7.2.4.tgz#b11fe9b43d1fc8ac46e760419346afd41d6111ee" - integrity sha512-T7ZSwXcUtPXCog3Bux9+TjoTvUeMi/+zI0Yv/TkIznZCWUg0XTt2797G0IiT5mTVeJeLivUzdOmKA1hOQdMfOQ== - react-transition-group@^4.4.5: version "4.4.5" resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1" @@ -5989,9 +6000,9 @@ sass-loader@^13.3.2: neo-async "^2.6.2" sass@^1.68.0: - version "1.69.3" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.69.3.tgz#f8a0c488697e6419519834a13335e7b65a609c11" - integrity sha512-X99+a2iGdXkdWn1akFPs0ZmelUzyAQfvqYc2P/MPTrJRuIRoTffGzT9W9nFqG00S+c8hXzVmgxhUuHFdrwxkhQ== + version "1.69.5" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.69.5.tgz#23e18d1c757a35f2e52cc81871060b9ad653dfde" + integrity sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" @@ -6029,10 +6040,11 @@ select-hose@^2.0.0: integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== selfsigned@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.1.1.tgz#18a7613d714c0cd3385c48af0075abf3f266af61" - integrity sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ== + version "2.4.1" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0" + integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== dependencies: + "@types/node-forge" "^1.3.0" node-forge "^1" semver@^6.3.1: @@ -6096,6 +6108,16 @@ serve-static@1.15.0: parseurl "~1.3.3" send "0.18.0" +set-function-length@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" + integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== + dependencies: + define-data-property "^1.1.1" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + set-function-name@^2.0.0, set-function-name@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" @@ -6420,9 +6442,9 @@ thunky@^1.0.2: integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== tinymce@^6.6.2: - version "6.7.0" - resolved "https://registry.yarnpkg.com/tinymce/-/tinymce-6.7.0.tgz#0ec245502cdefbfa0ff9042b423ac9a01e781423" - integrity sha512-Wf2RSobIXQ7XNw3/v4z1lPGiH3Pjsmc/6/7fG28aIS6uVWj/7IhvOPuwfJJDeOx0o0D3nSnoLHgR2KU8JAdE+w== + version "6.7.2" + resolved "https://registry.yarnpkg.com/tinymce/-/tinymce-6.7.2.tgz#39b077d26c171cb41341b2eef126e7811bb78697" + integrity sha512-6h/02jHmXyghekFzmzccZxUUEFtlPEKHxOd+gd49bjno3ybavZInPIaDd/pp2GeEwsFm20oGgJCL7UiebXm9dw== titleize@^3.0.0: version "3.0.0" @@ -6559,10 +6581,10 @@ uncontrollable@^8.0.1: resolved "https://registry.yarnpkg.com/uncontrollable/-/uncontrollable-8.0.4.tgz#a0a8307f638795162fafd0550f4a1efa0f8c5eb6" integrity sha512-ulRWYWHvscPFc0QQXvyJjY6LIXU56f0h8pQFvhxiKk5V1fcI8gp9Ht9leVAhrVjzqMw0BgjspBINx9r6oyJUvQ== -undici-types@~5.25.1: - version "5.25.3" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.25.3.tgz#e044115914c85f0bcbb229f346ab739f064998c3" - integrity sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA== +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" @@ -6858,13 +6880,13 @@ which-collection@^1.0.1: is-weakmap "^2.0.1" is-weakset "^2.0.1" -which-typed-array@^1.1.11, which-typed-array@^1.1.9: - version "1.1.11" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" - integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== +which-typed-array@^1.1.11, which-typed-array@^1.1.13, which-typed-array@^1.1.9: + version "1.1.13" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" + integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== dependencies: available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + call-bind "^1.0.4" for-each "^0.3.3" gopd "^1.0.1" has-tostringtag "^1.0.0"