From 2ab379d4d5fbedf3fa589d68577f4a1908730077 Mon Sep 17 00:00:00 2001 From: Andrea Ranaldi Date: Tue, 4 May 2021 08:49:53 +0200 Subject: [PATCH] Ver 2.1.1 (#26) * Utenti caricati asincroni per la creazione dei ticket * vari fix --- CHANGELOG.md | 6 + Gemfile.lock | 24 +- app/controllers/application_controller.rb | 10 +- app/controllers/editor/facts_controller.rb | 6 +- app/controllers/editor/tickets_controller.rb | 58 +++-- app/controllers/editor/users_controller.rb | 19 +- app/javascript/controllers/slim_controller.js | 10 +- app/models/fact.rb | 2 +- app/models/happening.rb | 4 +- app/views/editor/facts/_fact_menu.html.haml | 2 +- app/views/editor/facts/_form.html.haml | 3 + app/views/editor/happenings/_form.html.haml | 5 +- app/views/editor/happenings/show.html.haml | 9 +- app/views/editor/tickets/_form.html.haml | 54 ++-- app/views/editor/tickets/_ticket.html.haml | 6 +- app/views/editor/tickets/edit.html.haml | 2 +- .../{index.html.haml => list.html.haml} | 0 app/views/editor/tickets/new.html.haml | 2 +- app/views/editor/users/list.json.jbuilder | 3 + app/views/errors/_404.html.haml | 0 build/config.gypi | 81 ++++++ config/routes.rb | 11 +- package.json | 2 +- publiccode.yml | 2 +- yarn.lock | 236 ++++++++---------- 25 files changed, 341 insertions(+), 216 deletions(-) rename app/views/editor/tickets/{index.html.haml => list.html.haml} (100%) create mode 100644 app/views/editor/users/list.json.jbuilder create mode 100644 app/views/errors/_404.html.haml create mode 100644 build/config.gypi diff --git a/CHANGELOG.md b/CHANGELOG.md index a65b1be..ac63fe7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [2.1.1] +### changed +- fixed fact destroy +- fixed happening destroy +- fixed happening creations + ## [2.1.0] ### Added - Users' ticket manage for editor diff --git a/Gemfile.lock b/Gemfile.lock index 02bdadc..7646727 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -67,7 +67,7 @@ GEM ast (2.4.2) bcrypt (3.1.16) bindex (0.8.1) - bootsnap (1.7.3) + bootsnap (1.7.4) msgpack (~> 1.0) builder (3.2.4) byebug (11.1.3) @@ -118,7 +118,7 @@ GEM database_cleaner-core (~> 2.0.0) database_cleaner-core (2.0.1) deep_merge (1.2.1) - devise (4.7.3) + devise (4.8.0) bcrypt (~> 3.0) orm_adapter (~> 0.1) railties (>= 4.1.0) @@ -138,10 +138,10 @@ GEM dry-equalizer (0.3.0) dry-inflector (0.2.0) dry-initializer (3.0.4) - dry-logic (1.1.0) + dry-logic (1.2.0) concurrent-ruby (~> 1.0) dry-core (~> 0.5, >= 0.5) - dry-schema (1.6.1) + dry-schema (1.6.2) concurrent-ruby (~> 1.0) dry-configurable (~> 0.8, >= 0.8.3) dry-core (~> 0.5, >= 0.5) @@ -170,7 +170,7 @@ GEM ffi (1.15.0) globalid (0.4.2) activesupport (>= 4.2.0) - hamlit (2.14.6) + hamlit (2.15.0) temple (>= 0.8.2) thor tilt @@ -199,7 +199,7 @@ GEM method_source (1.0.0) mini_magick (4.11.0) mini_mime (1.0.3) - mini_portile2 (2.5.0) + mini_portile2 (2.5.1) minitest (5.14.4) msgpack (1.4.2) net-scp (3.0.0) @@ -210,9 +210,9 @@ GEM mini_portile2 (~> 2.5.0) racc (~> 1.4) orm_adapter (0.5.0) - pagy (4.2.0) + pagy (4.5.1) parallel (1.20.1) - parser (3.0.1.0) + parser (3.0.1.1) ast (~> 2.4.1) pg (1.2.3) public_suffix (4.0.6) @@ -261,7 +261,7 @@ GEM actionpack (>= 5.0) railties (>= 5.0) rexml (3.2.5) - rubocop (1.12.1) + rubocop (1.13.0) parallel (~> 1.10) parser (>= 3.0.0.0) rainbow (>= 2.2.2, < 4.0) @@ -270,8 +270,8 @@ GEM rubocop-ast (>= 1.2.0, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 1.4.0, < 3.0) - rubocop-ast (1.4.1) - parser (>= 2.7.1.5) + rubocop-ast (1.5.0) + parser (>= 3.0.1.1) rubocop-rails (2.9.1) activesupport (>= 4.2.0) rack (>= 1.1) @@ -329,7 +329,7 @@ GEM nokogiri (~> 1.6) rubyzip (>= 1.3.0) selenium-webdriver (>= 3.0, < 4.0) - webpacker (5.2.1) + webpacker (5.3.0) activesupport (>= 5.2) rack-proxy (>= 0.6.1) railties (>= 5.2) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index bc1bc57..770a92b 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -6,21 +6,21 @@ class ApplicationController < ActionController::Base before_action :authenticate_user! - rescue_from ActiveRecord::RecordNotFound do - record_not_found! - end + #rescue_from ActiveRecord::RecordNotFound do + # record_not_found! + #end private # Render 404 page and stop the work # @return [nil] def record_not_found! - render partial: 'errors/404', status: 404 && return + render partial: 'errors/404', status: 404 and return end # Render 401 page and stop the work # @return [nil] def access_denied! - render 'errors/401', status: :unauthorized + render 'errors/401', status: :unauthorized and return end end diff --git a/app/controllers/editor/facts_controller.rb b/app/controllers/editor/facts_controller.rb index 2c2d671..0acd293 100644 --- a/app/controllers/editor/facts_controller.rb +++ b/app/controllers/editor/facts_controller.rb @@ -31,7 +31,7 @@ def create @fact = Fact.new(fact_params) if @fact.save @status = { success: 'Evento creato' } - render action: :show + redirect_to editor_fact_path(@fact) else @status = { error: 'ERRORE - Evento non creato. Verifica gli errori.' } render action: :new @@ -51,9 +51,9 @@ def update # DELETE /editor/facts/:id def destroy - if @editor_fact.destroy + if @fact.destroy @status = { success: 'Evento eliminato' } - render action: :index + redirect_to editor_facts_path else @status = { error: 'ERRORE - Evento non eliminato. Verifica gli errori.' } render action: :edit diff --git a/app/controllers/editor/tickets_controller.rb b/app/controllers/editor/tickets_controller.rb index 7995e39..afe7436 100644 --- a/app/controllers/editor/tickets_controller.rb +++ b/app/controllers/editor/tickets_controller.rb @@ -3,17 +3,34 @@ # This controller manage {Ticket} model for editors class Editor::TicketsController < Editor::ApplicationController require 'csv' - before_action :set_fact - before_action :set_happening + before_action :check_happening, only: %i[create update] + #before_action :set_fact_ids + #before_action :set_happening before_action :set_ticket, only: %i[show edit update destroy] - # GET /editor/facts/:fact_id/happenings/:happening_id/tickets + # GET /editor/tickets def index - @text = ["users.username ilike '%:string%'", { string: params[:text] }] if params[:text].present? + end + + # GET /editor/tickets/list + def list_by_happening + @happening = Happening.find_by(id: params[:id], fact_id: fact_ids) + @text = ["users.username ilike :string", { string: "%#{filter_params[:text]}%" }] if filter_params[:text].present? + @pagy, @tickets = pagy( + @happening.tickets.includes(:user).where(@text), + items: 6 + ) + render action: :list + end + + def list_by_user + @user = User.find(params[:id]) + @text = ["facts.title ilike :string", { string: "%#{filter_params[:text]}%" }] if filter_params[:text].present? @pagy, @tickets = pagy( - @happening.tickets.joins(:user).where(@text), + @user.tickets.includes(happening: [:fact]).where(@text).where(happening: {fact_id: fact_ids}), items: 6 ) + render action: :list end # GET /editor/facts/:fact_id/happenings/:happening_id/tickets/export @@ -28,7 +45,7 @@ def export # GET /editor/facts/:fact_id/happenings/:happening_id/tickets/new def new - @ticket = @happening.tickets.new + @ticket = Ticket.new(happening_id: happening_id(filter_params[:happening_id])) @users = User.pluck :username, :id end @@ -39,11 +56,11 @@ def edit # POST /editor/facts/:fact_id/happenings/:happening_id/tickets/ def create - @ticket = @happening.tickets.new(ticket_params) + @ticket = Ticket.new(ticket_params) @ticket.by_editor = true if @ticket.save flash[:success] = 'Prenotazione salvata' - redirect_to editor_fact_happening_tickets_path(@fact, @happening) + redirect_to tickets_editor_fact_happening_path(@ticket.happening.fact, @ticket.happening) else @users = User.pluck :username, :id @status = { error: 'Creatione prenotazione fallita' } @@ -53,8 +70,7 @@ def create # PATCH/PUT /editor/facts/:fact_id/happenings/:happening_id/tickets/:id def update - @ticket.by_editor = true - if @ticket.update(ticket_params) + if @ticket.update(ticket_params.merge(by_editor: true)) flash[:success] = 'Prenotazione salvata' render partial: 'ticket', locals: { ticket: @ticket, happening: @happening, fact: @fact } else @@ -72,24 +88,34 @@ def destroy end private + + def check_happening + access_denied! unless fact_ids.include?(Happening.find(ticket_params[:happening_id]).fact_id) + end # set @fact before any action - def set_fact - @fact = current_user.facts.find(params[:fact_id]) + def fact_ids + current_user.facts.pluck(:id) end # Set @happening before any action - def set_happening - @happening = @fact.happenings.find(params[:happening_id]) + def happening_id(value) + Happening.find_by(id: value, fact_id: fact_ids).id end # Set ticket when needed def set_ticket - @ticket = @happening.tickets.find(params[:id]) + @ticket = Ticket.includes(:happening).find(params[:id]) + access_denied! unless fact_ids.include?(@ticket.happening.fact_id) end # Filter params for set a ticket def ticket_params - params.require(:ticket).permit(:happenings_id, :user_id, :seats) + params.require(:ticket).permit(:happening_id, :user_id, :seats) + end + + # Filter params for search an {Happening} + def filter_params + params.fetch(:filter, {}).permit(:text, :user_id, :happening_id) end end diff --git a/app/controllers/editor/users_controller.rb b/app/controllers/editor/users_controller.rb index d1ce455..8fd1e1d 100644 --- a/app/controllers/editor/users_controller.rb +++ b/app/controllers/editor/users_controller.rb @@ -8,8 +8,11 @@ def index; end # GET /editor/users/list def list + options = {} + options[:admin] = true if filter_params[:admin].present? + options[:editor] = true if filter_params[:editor].present? @text = ['username ilike :text or email ilike :text', { text: "%#{filter_params[:text]}%" }] if filter_params[:text].present? - @pagy, @users = pagy(User.where(@text)) + @pagy, @users = pagy(User.where(@text).where(options)) end # GET /editor/users/:id @@ -18,10 +21,14 @@ def show; end # GET /editor/users/:id/tickets def tickets @text = ['facts.title ilike :string', { string: "%#{filter_params[:text]}%" }] if filter_params[:text].present? - @pagy, @tickets = pagy( - @user.tickets.joins(happening: [:fact]).where(happening: { fact: @current_user.facts }).where(@text), - items: 6 - ) + if current_user.admin? + @pagy, @tickets = pagy( @user.tickets.joins(happening: [:fact]).where(@text), items: 6) + else + @pagy, @tickets = pagy( + @user.tickets.joins(happening: [:fact]).where(happening: { fact: @current_user.facts }).where(@text), + items: 6 + ) + end end private @@ -33,6 +40,6 @@ def set_user # Filter params for search a {Fact} def filter_params - params.fetch(:filter, {}).permit(:text) + params.fetch(:filter, {}).permit(:text, :admin, :editor) end end diff --git a/app/javascript/controllers/slim_controller.js b/app/javascript/controllers/slim_controller.js index c8e5dad..a713669 100644 --- a/app/javascript/controllers/slim_controller.js +++ b/app/javascript/controllers/slim_controller.js @@ -23,12 +23,20 @@ export default class extends Controller { new SlimSelect({ select: element }) } + user(element) { + this.ajax(element, '/editor/users/list.json?') + } + editor(element) { this.ajax(element, '/admin/users/list?filter[editor]=1&') } + get_data(element) { + [{text: element.getAttribute("data-text"), value: element.getAttribute("data-value")}] + } + ajax(element, url) { - new SlimSelect({ + const slim = new SlimSelect({ select: element, placeholder: 'Seleziona un utente', searchingText: 'Sto cercando...', diff --git a/app/models/fact.rb b/app/models/fact.rb index 2f34cd4..c78bd14 100644 --- a/app/models/fact.rb +++ b/app/models/fact.rb @@ -37,7 +37,7 @@ class Fact < ApplicationRecord has_rich_text :body has_one_attached :image belongs_to :group - has_many :happenings + has_many :happenings, dependent: :destroy has_many :tickets, through: :happenings validates :title, presence: true validates :start_on, presence: true diff --git a/app/models/happening.rb b/app/models/happening.rb index 3284f8b..5ca58b9 100644 --- a/app/models/happening.rb +++ b/app/models/happening.rb @@ -37,7 +37,7 @@ # @return [Array] list of [Fact] with stop_on minor than Time.zone.today, ordered by start_on desc class Happening < ApplicationRecord belongs_to :fact, counter_cache: true - has_many :tickets + has_many :tickets, dependent: :destroy validates :fact, presence: true validates :start_at, presence: true validates :start_sale_at, presence: true @@ -74,7 +74,7 @@ def code # save multiple copies of the elements def add_repetitions (1..repeat_for.to_i).each do |n| - next unless repeat_for.include?(start_at.+(n.days).wday.to_s) + next unless repeat_in.include?(start_at.+(n.days).wday.to_s) fact.happenings.create( detail: detail, diff --git a/app/views/editor/facts/_fact_menu.html.haml b/app/views/editor/facts/_fact_menu.html.haml index dee1da7..f2868db 100644 --- a/app/views/editor/facts/_fact_menu.html.haml +++ b/app/views/editor/facts/_fact_menu.html.haml @@ -13,6 +13,6 @@ = f.radio_button :type, 'history', selected: true, data: {action: "form#sendForm"} %span= t('history', scope: 'site.happening.scope') %a.panel-block{href: new_editor_fact_happening_path(@fact), data: {turbo_frame: 'happenings'}}= fas_icon 'plus', text: 'Aggiungi date' - %a.panel-block{href: editor_facts_path}= fas_icon 'chevron-left', text: 'Indietro' + %a.panel-block{href: editor_facts_path, data: {turbo_frame: 'yield'}}= fas_icon 'chevron-left', text: 'Indietro' %figure.image= image_tag(fact.image.variant(resize_to_limit: [318,318]).processed) diff --git a/app/views/editor/facts/_form.html.haml b/app/views/editor/facts/_form.html.haml index 34dd728..6e78ce9 100644 --- a/app/views/editor/facts/_form.html.haml +++ b/app/views/editor/facts/_form.html.haml @@ -78,3 +78,6 @@ - else %a.button.is-link{href: list_editor_facts_path, data: {turbo_frame: 'facts'}}= fas_icon 'chevron-left', text: 'Indietro' = form.button fas_icon('save', text: 'Salva'), class: 'button is-success' +- if fact.persisted? + %br + .has-text-centered= link_to fas_icon('trash', text: 'Elimina evento'), editor_fact_path(fact), class: 'button is-warning', data: {confirm: 'Attenzione l`evento, le date e tutte le prenotazioni saranno eliminate, confermi?', method: :delete, turbo_frame: 'yield'} diff --git a/app/views/editor/happenings/_form.html.haml b/app/views/editor/happenings/_form.html.haml index 44675e8..3a90b25 100644 --- a/app/views/editor/happenings/_form.html.haml +++ b/app/views/editor/happenings/_form.html.haml @@ -71,7 +71,10 @@ .has-text-centered - if happening.persisted? - %a.button.is-link{href: editor_fact_happening_tickets_path(fact, happening), data: {turbo_frame: 'tickets'}}= fas_icon 'chevron-left', text: 'Indietro' + %a.button.is-link{href: tickets_editor_fact_happening_path(fact, happening), data: {turbo_frame: 'tickets'}}= fas_icon 'chevron-left', text: 'Indietro' -else %a.button.is-link{href: editor_fact_happenings_path(fact), data: {turbo_frame: 'happenings'}}= fas_icon 'chevron-left', text: 'Indietro' = form.button fas_icon('save', text: 'Salva'), class: 'button is-success' +- if happening.persisted? + %br + .has-text-centered= link_to fas_icon('trash', text: 'Elimina data'), editor_fact_happening_path(happening.fact, happening), class: 'button is-warning', data: {confirm: 'Attenzione la data e tutte le prenotazioni saranno eliminate, confermi?', method: :delete} diff --git a/app/views/editor/happenings/show.html.haml b/app/views/editor/happenings/show.html.haml index 6a77d49..ec75ce9 100644 --- a/app/views/editor/happenings/show.html.haml +++ b/app/views/editor/happenings/show.html.haml @@ -6,15 +6,16 @@ %aside.column.is-3 %nav.panel %p.panel-heading= t 'site.editor.ticket.search' - = form_with scope: 'filter', url: editor_fact_happening_tickets_path(@fact,@happening), method: :get, data: {turbo_frame: 'tickets', controller: 'form', form_target: 'sender'} do |f| + = form_with scope: 'filter', url: list_editor_tickets_path, method: :get, data: {turbo_frame: 'tickets', controller: 'form', form_target: 'sender'} do |f| + = f.hidden_field :happening_id, value: @happening.id .panel-block %p.control.has-icons-left = f.text_field :text, placeholder: 'Nome', class: 'input', data: {action: 'keyup->form#delayedSendForm'} %span.icon.is-left %i.fas.fa-search - %a.panel-block{href: export_editor_fact_happening_tickets_path(@fact, @happening, format: :csv)}= fas_icon 'file-csv', text: t('site.editor.ticket.export_pdf') + %a.panel-block{href: export_editor_tickets_path(@fact, @happening, format: :csv)}= fas_icon 'file-csv', text: t('site.editor.ticket.export_csv') %a.panel-block{href: edit_editor_fact_happening_path(@fact, @happening), data: {turbo_frame: 'tickets'}}= fas_icon 'edit', text: 'Modifica ingresso' - %a.panel-block{href: new_editor_fact_happening_ticket_path(@fact, @happening), data: {turbo_frame: 'tickets'}}= fas_icon 'plus', text: 'Aggiungi prenotazione' + %a.panel-block{href: new_editor_ticket_path(filter: {happening_id: @happening.id}), data: {turbo_frame: 'tickets'}}= fas_icon 'plus', text: 'Aggiungi prenotazione' %a.panel-block{href: editor_fact_path(@fact)}= fas_icon 'chevron-left', text: 'Indietro' %figure.image= image_tag(@fact.image.variant(resize_to_limit: [318,318]).processed) .column @@ -24,4 +25,4 @@ Ingresso = @happening.code = render 'box' - %turbo-frame#tickets{src: editor_fact_happening_tickets_path(@fact,@happening)} + %turbo-frame#tickets{src: tickets_editor_fact_happening_path(@fact, @happening)} diff --git a/app/views/editor/tickets/_form.html.haml b/app/views/editor/tickets/_form.html.haml index bf4dd59..1534873 100644 --- a/app/views/editor/tickets/_form.html.haml +++ b/app/views/editor/tickets/_form.html.haml @@ -1,23 +1,33 @@ .box.mb-2 - = form_with model: [:editor, fact, happening, ticket] do |f| - %fieldset - .columns - .column - .field - = f.label :user_id - .control.has-icons-left - %span.select.is-fullwidth= f.select :user_id, users, {} - %span.icon.is-left= fas_icon 'user' - %p.help.is-danger= ticket.errors.messages[:user].join(' - ') - - .column - .field - = f.label :seats - .control.has-icons-left - = f.number_field :seats, min: 1, max: happening.max_seats - happening.seats_count, class: 'input' - %span.icon.is-left= fas_icon 'chair' - %p.help.is-danger= ticket.errors.messages[:seats].join(' - ') - .column.is-narrow - .field - %br - = f.button fas_icon('save', text: 'Salva'), class: 'button is-success' + .columns + .column + = form_with model: [:editor, ticket] do |f| + %fieldset + .columns + = f.hidden_field :happening_id + .column + .field + = f.label :user_id + .control + - if ticket.persisted? + %span.select.is-fullwidth= f.select :user_id, [[ticket.user.username, ticket.user.id]],{},disabled: true + - else + %span.select.is-fullwidth= f.select :user_id, [], {}, {data: {controller: 'slim', target: 'slim.user'}} + %p.help.is-danger= ticket.errors.messages[:user].join(' - ') + .column + .field + = f.label :seats + .control.has-icons-left + = f.number_field :seats, min: 1, class: 'input' + %span.icon.is-left= fas_icon 'chair' + %p.help.is-danger= ticket.errors.messages[:seats].join(' - ') + .column.is-narrow + .field + %br + = f.button fas_icon('save', text: 'Salva'), class: 'button is-success' + - if ticket.persisted? + .column.is-narrow + = form_with model: [:editor, ticket], method: :delete do |f| + %fieldset + %label - + .control= f.button fas_icon('trash'), class: 'button is-warning', data: {confirm: 'Attenzione: vuoi veramente annullare la prenotazione?'} diff --git a/app/views/editor/tickets/_ticket.html.haml b/app/views/editor/tickets/_ticket.html.haml index 31fb85c..5c2a858 100644 --- a/app/views/editor/tickets/_ticket.html.haml +++ b/app/views/editor/tickets/_ticket.html.haml @@ -1,13 +1,13 @@ = turbo_frame_tag ticket do - %a.box.is-hoverable.mb-2{href: edit_editor_fact_happening_ticket_path(ticket.happening.fact,ticket.happening,ticket)} + %a.box.is-hoverable.mb-2{href: edit_editor_ticket_path(ticket)} .columns.is-mobile.is-gapless - .column.is-narrow.is - .figure.image.is-boxed-left-image= image_tag ticket.happening.fact.image.variant(resize_to_limit: [150, 68]).processed .column %span.title.is-size-5 %i.fas.fa-calendar-day = ticket.user.username + %span.subtitle.is-size-6= l ticket.updated_at, format: :detailed + .subtitle.is-size-6= ticket.happening.fact.title .column.is-narrow.has-text-right %span.subtitle.is-size-6 = ticket.seats diff --git a/app/views/editor/tickets/edit.html.haml b/app/views/editor/tickets/edit.html.haml index 5fd7efb..60505e9 100644 --- a/app/views/editor/tickets/edit.html.haml +++ b/app/views/editor/tickets/edit.html.haml @@ -1,3 +1,3 @@ %turbo-frame#yield = turbo_frame_tag @ticket do - = render 'form', ticket: @ticket, happening: @happening, fact: @fact, users: @users + = render 'form', ticket: @ticket diff --git a/app/views/editor/tickets/index.html.haml b/app/views/editor/tickets/list.html.haml similarity index 100% rename from app/views/editor/tickets/index.html.haml rename to app/views/editor/tickets/list.html.haml diff --git a/app/views/editor/tickets/new.html.haml b/app/views/editor/tickets/new.html.haml index 8ad7ec3..5b7961f 100644 --- a/app/views/editor/tickets/new.html.haml +++ b/app/views/editor/tickets/new.html.haml @@ -1,4 +1,4 @@ %turbo-frame#yield %turbo-frame#tickets %h5.title.is-size-5.has-text-centered Nuova prenotazione - = render 'form', ticket: @ticket, happening: @happening, fact: @fact, users: @users + = render 'form', ticket: @ticket diff --git a/app/views/editor/users/list.json.jbuilder b/app/views/editor/users/list.json.jbuilder new file mode 100644 index 0000000..cabdb6c --- /dev/null +++ b/app/views/editor/users/list.json.jbuilder @@ -0,0 +1,3 @@ +# frozen_string_literal: true + +json.users @users, :username, :id diff --git a/app/views/errors/_404.html.haml b/app/views/errors/_404.html.haml new file mode 100644 index 0000000..e69de29 diff --git a/build/config.gypi b/build/config.gypi new file mode 100644 index 0000000..080bd2a --- /dev/null +++ b/build/config.gypi @@ -0,0 +1,81 @@ +# Do not edit. File was generated by node-gyp's "configure" step +{ + "target_defaults": { + "cflags": [], + "default_configuration": "Release", + "defines": [], + "include_dirs": [], + "libraries": [] + }, + "variables": { + "asan": 0, + "coverage": "false", + "dcheck_always_on": 0, + "debug_nghttp2": "false", + "debug_node": "false", + "enable_lto": "false", + "enable_pgo_generate": "false", + "enable_pgo_use": "false", + "error_on_warn": "false", + "force_dynamic_crt": 0, + "host_arch": "x64", + "icu_gyp_path": "tools/icu/icu-system.gyp", + "icu_small": "false", + "icu_ver_major": "69", + "is_debug": 0, + "llvm_version": "0.0", + "napi_build_version": "8", + "node_byteorder": "little", + "node_debug_lib": "false", + "node_enable_d8": "false", + "node_install_npm": "false", + "node_module_version": 93, + "node_no_browser_globals": "false", + "node_prefix": "/usr", + "node_release_urlbase": "", + "node_section_ordering_info": "", + "node_shared": "false", + "node_shared_brotli": "false", + "node_shared_cares": "false", + "node_shared_http_parser": "false", + "node_shared_libuv": "true", + "node_shared_nghttp2": "true", + "node_shared_nghttp3": "false", + "node_shared_ngtcp2": "false", + "node_shared_openssl": "true", + "node_shared_zlib": "true", + "node_tag": "", + "node_target_type": "executable", + "node_use_bundled_v8": "true", + "node_use_dtrace": "false", + "node_use_etw": "false", + "node_use_node_code_cache": "true", + "node_use_node_snapshot": "true", + "node_use_openssl": "true", + "node_use_v8_platform": "true", + "node_with_ltcg": "false", + "node_without_node_options": "false", + "openssl_fips": "", + "openssl_is_fips": "false", + "openssl_quic": "false", + "ossfuzz": "false", + "shlib_suffix": "so.93", + "target_arch": "x64", + "v8_enable_31bit_smis_on_64bit_arch": 0, + "v8_enable_gdbjit": 0, + "v8_enable_i18n_support": 1, + "v8_enable_inspector": 1, + "v8_enable_lite_mode": 0, + "v8_enable_object_print": 1, + "v8_enable_pointer_compression": 0, + "v8_no_strict_aliasing": 1, + "v8_optimized_debug": 1, + "v8_promise_internal_field_count": 1, + "v8_random_seed": 0, + "v8_trace_maps": 0, + "v8_use_siphash": 1, + "want_separate_host_toolset": 0, + "nodedir": "/home/andrea/.cache/node-gyp/16.0.0", + "standalone_static_library": 1 + } +} diff --git a/config/routes.rb b/config/routes.rb index f021d02..1d07f24 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -19,15 +19,16 @@ resources :facts do get :list, on: :collection resources :happenings do - resources :tickets, except: %i[show] do - get :list, on: :collection - get :export, on: :collection - end + get :tickets, on: :member, to: 'tickets#list_by_happening' end end + resources :tickets do + get :list, on: :collection + get :export, on: :collection + end resources :users, only: %i[index show] do get :list, on: :collection - get :tickets, on: :member + get :tickets, on: :member, to: 'tickets#list_by_user' end end diff --git a/package.json b/package.json index bfe25ad..a530a9b 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "slim-select": "^1.26.0", "smart-timeout": "^2.5.0", "stimulus": "^1.1.1", - "trix": "^1.2.3" + "trix": "^1.3.1" }, "version": "0.1.0", "devDependencies": { diff --git a/publiccode.yml b/publiccode.yml index 64da5f4..e3d1e7a 100644 --- a/publiccode.yml +++ b/publiccode.yml @@ -82,7 +82,7 @@ platforms: roadmap: 'https://github.com/isprambiente/Partecipo/projects' releaseDate: '2021-03-23' softwareType: standalone/web -softwareVersion: 2.1.0 +softwareVersion: 2.1.1 url: 'https://github.com/isprambiente/Partecipo.git' usedBy: - ISPRA diff --git a/yarn.lock b/yarn.lock index 18e9f05..a5c3b12 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,25 +9,25 @@ dependencies: "@babel/highlight" "^7.12.13" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.13.12", "@babel/compat-data@^7.13.15", "@babel/compat-data@^7.13.8": +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.13.15", "@babel/compat-data@^7.13.8": version "7.13.15" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.13.15.tgz#7e8eea42d0b64fda2b375b22d06c605222e848f4" integrity sha512-ltnibHKR1VnrU4ymHyQ/CXtNXI6yZC0oJThyW78Hft8XndANwi+9H+UIklBDraIjFEJzw8wmcM427oDd9KS5wA== "@babel/core@^7.11.1": - version "7.13.15" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.13.15.tgz#a6d40917df027487b54312202a06812c4f7792d0" - integrity sha512-6GXmNYeNjS2Uz+uls5jalOemgIhnTMeaXo+yBUA72kC2uX/8VW6XyhVIo2L8/q0goKQA3EVKx0KOQpVKSeWadQ== + version "7.13.16" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.13.16.tgz#7756ab24396cc9675f1c3fcd5b79fcce192ea96a" + integrity sha512-sXHpixBiWWFti0AV2Zq7avpTasr6sIAu7Y396c608541qAU2ui4a193m0KSQmfPSKFZLnQ3cvlKDOm3XkuXm3Q== dependencies: "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.13.9" - "@babel/helper-compilation-targets" "^7.13.13" + "@babel/generator" "^7.13.16" + "@babel/helper-compilation-targets" "^7.13.16" "@babel/helper-module-transforms" "^7.13.14" - "@babel/helpers" "^7.13.10" - "@babel/parser" "^7.13.15" + "@babel/helpers" "^7.13.16" + "@babel/parser" "^7.13.16" "@babel/template" "^7.12.13" "@babel/traverse" "^7.13.15" - "@babel/types" "^7.13.14" + "@babel/types" "^7.13.16" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -35,12 +35,12 @@ semver "^6.3.0" source-map "^0.5.0" -"@babel/generator@^7.13.9": - version "7.13.9" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.9.tgz#3a7aa96f9efb8e2be42d38d80e2ceb4c64d8de39" - integrity sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw== +"@babel/generator@^7.13.16": + version "7.13.16" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.16.tgz#0befc287031a201d84cdfc173b46b320ae472d14" + integrity sha512-grBBR75UnKOcUWMp8WoDxNsWCFl//XCK6HWTrBQKTr5SV9f5g0pNOjdyzi/DTBv12S9GnYPInIXQBTky7OXEMg== dependencies: - "@babel/types" "^7.13.0" + "@babel/types" "^7.13.16" jsesc "^2.5.1" source-map "^0.5.0" @@ -59,12 +59,12 @@ "@babel/helper-explode-assignable-expression" "^7.12.13" "@babel/types" "^7.12.13" -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.13.13", "@babel/helper-compilation-targets@^7.13.8": - version "7.13.13" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz#2b2972a0926474853f41e4adbc69338f520600e5" - integrity sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ== +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.13.13", "@babel/helper-compilation-targets@^7.13.16", "@babel/helper-compilation-targets@^7.13.8": + version "7.13.16" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz#6e91dccf15e3f43e5556dffe32d860109887563c" + integrity sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA== dependencies: - "@babel/compat-data" "^7.13.12" + "@babel/compat-data" "^7.13.15" "@babel/helper-validator-option" "^7.12.17" browserslist "^4.14.5" semver "^6.3.0" @@ -126,12 +126,12 @@ "@babel/types" "^7.12.13" "@babel/helper-hoist-variables@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz#5d5882e855b5c5eda91e0cadc26c6e7a2c8593d8" - integrity sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g== + version "7.13.16" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.16.tgz#1b1651249e94b51f8f0d33439843e33e39775b30" + integrity sha512-1eMtTrXtrwscjcAeO4BVK+vvkxaLJSPFz1w1KLawz6HLNi9bPFGBNwwDyVfiu1Tv/vRRFYfoGaKhmAQPGPn5Wg== dependencies: - "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.0" + "@babel/traverse" "^7.13.15" + "@babel/types" "^7.13.16" "@babel/helper-member-expression-to-functions@^7.13.0", "@babel/helper-member-expression-to-functions@^7.13.12": version "7.13.12" @@ -233,14 +233,14 @@ "@babel/traverse" "^7.13.0" "@babel/types" "^7.13.0" -"@babel/helpers@^7.13.10": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.13.10.tgz#fd8e2ba7488533cdeac45cc158e9ebca5e3c7df8" - integrity sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ== +"@babel/helpers@^7.13.16": + version "7.13.17" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.13.17.tgz#b497c7a00e9719d5b613b8982bda6ed3ee94caf6" + integrity sha512-Eal4Gce4kGijo1/TGJdqp3WuhllaMLSrW6XcL0ulyUAQOuxHcCafZE8KHg9857gcTehsm/v7RcOx2+jp0Ryjsg== dependencies: "@babel/template" "^7.12.13" - "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.0" + "@babel/traverse" "^7.13.17" + "@babel/types" "^7.13.17" "@babel/highlight@^7.12.13": version "7.13.10" @@ -251,10 +251,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.12.13", "@babel/parser@^7.13.15", "@babel/parser@^7.3.1": - version "7.13.15" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.15.tgz#8e66775fb523599acb6a289e12929fa5ab0954d8" - integrity sha512-b9COtcAlVEQljy/9fbcMHpG+UIW9ReF+gpaxDHTlZd0c6/UU9ng8zdySAW9sRTzpvcdCHn6bUcbuYUgGzLAWVQ== +"@babel/parser@^7.12.13", "@babel/parser@^7.13.16", "@babel/parser@^7.3.1": + version "7.13.16" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.16.tgz#0f18179b0448e6939b1f3f5c4c355a3a9bcdfd37" + integrity sha512-6bAg36mCwuqLO0hbR+z7PHuqWiCeP7Dzg73OpQwsAB1Eb8HnGEz5xYBzCfbu+YjoaJsJs+qheDxVAuqbt3ILEw== "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.13.12": version "7.13.12" @@ -482,11 +482,11 @@ "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-transform-block-scoping@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz#f36e55076d06f41dfd78557ea039c1b581642e61" - integrity sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ== + version "7.13.16" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.13.16.tgz#a9c0f10794855c63b1d629914c7dcfeddd185892" + integrity sha512-ad3PHUxGnfWF4Efd3qFuznEtZKoBp0spS+DgqzVzRPV7urEBvPLue3y2j80w4Jf2YLzZHj8TOv/Lmvdmh3b2xg== dependencies: - "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-transform-classes@^7.13.0": version "7.13.0" @@ -509,9 +509,9 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-transform-destructuring@^7.10.1", "@babel/plugin-transform-destructuring@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz#c5dce270014d4e1ebb1d806116694c12b7028963" - integrity sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA== + version "7.13.17" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.17.tgz#678d96576638c19d5b36b332504d3fd6e06dea27" + integrity sha512-UAUqiLv+uRLO+xuBKKMEpC+t7YRNVRqBsWWq1yKXbBZBje/t3IXCiSinZhjn/DC3qzBfICeYd2EFGEbHsh5RLA== dependencies: "@babel/helper-plugin-utils" "^7.13.0" @@ -805,9 +805,9 @@ esutils "^2.0.2" "@babel/runtime@^7.11.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.10.tgz#47d42a57b6095f4468da440388fdbad8bebf0d7d" - integrity sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw== + version "7.13.17" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.17.tgz#8966d1fc9593bf848602f0662d6b4d0069e3a7ec" + integrity sha512-NCdgJEelPTSh+FEFylhnP1ylq848l1z9t9N0j1Lfbcw0+KXGjsTvUmkxy+voLLXB5SOKMbLLx4jxYliGrYQseA== dependencies: regenerator-runtime "^0.13.4" @@ -820,27 +820,26 @@ "@babel/parser" "^7.12.13" "@babel/types" "^7.12.13" -"@babel/traverse@^7.13.0", "@babel/traverse@^7.13.13", "@babel/traverse@^7.13.15", "@babel/traverse@^7.2.3": - version "7.13.15" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.13.15.tgz#c38bf7679334ddd4028e8e1f7b3aa5019f0dada7" - integrity sha512-/mpZMNvj6bce59Qzl09fHEs8Bt8NnpEDQYleHUPZQ3wXUMvXi+HJPLars68oAbmp839fGoOkv2pSL2z9ajCIaQ== +"@babel/traverse@^7.13.0", "@babel/traverse@^7.13.13", "@babel/traverse@^7.13.15", "@babel/traverse@^7.13.17", "@babel/traverse@^7.2.3": + version "7.13.17" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.13.17.tgz#c85415e0c7d50ac053d758baec98b28b2ecfeea3" + integrity sha512-BMnZn0R+X6ayqm3C3To7o1j7Q020gWdqdyP50KEoVqaCO2c/Im7sYZSmVgvefp8TTMQ+9CtwuBp0Z1CZ8V3Pvg== dependencies: "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.13.9" + "@babel/generator" "^7.13.16" "@babel/helper-function-name" "^7.12.13" "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/parser" "^7.13.15" - "@babel/types" "^7.13.14" + "@babel/parser" "^7.13.16" + "@babel/types" "^7.13.17" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.14", "@babel/types@^7.4.4": - version "7.13.14" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.14.tgz#c35a4abb15c7cd45a2746d78ab328e362cbace0d" - integrity sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ== +"@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.14", "@babel/types@^7.13.16", "@babel/types@^7.13.17", "@babel/types@^7.4.4": + version "7.13.17" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.17.tgz#48010a115c9fba7588b4437dd68c9469012b38b4" + integrity sha512-RawydLgxbOPDlTLJNtoIypwdmAy//uQIzlKt2+iBiJaRlVuI6QLUxVAyWGNfOzp8Yu4L4lLIacoCyTNtpb4wiA== dependencies: "@babel/helper-validator-identifier" "^7.12.11" - lodash "^4.17.19" to-fast-properties "^2.0.0" "@csstools/convert-colors@^1.4.0": @@ -888,9 +887,9 @@ "@rails/actioncable" "^6.1.0" "@hotwired/turbo@^7.0.0-beta.4": - version "7.0.0-beta.4" - resolved "https://registry.yarnpkg.com/@hotwired/turbo/-/turbo-7.0.0-beta.4.tgz#be6d7014902d45121f56358d360e0810bad4c19e" - integrity sha512-koox7UeA2Na0tLBPesxNO3nk/gtezRxF33NHKbAx+zv5s2k1Xh/orB5xNr5dAckoUj3Pdpytnw41WH4QB1jYBg== + version "7.0.0-beta.5" + resolved "https://registry.yarnpkg.com/@hotwired/turbo/-/turbo-7.0.0-beta.5.tgz#3167e8e882b9075c5b3b2e2f32432cca2862c61c" + integrity sha512-z10dI2U/StkMSmnfJUsyez6jrhnitgzjyw2CxE3LnAAzW/TBhvsMYKsVG7Xu337r3gh0r6UwIFWyvvtm3in6gg== "@npmcli/move-file@^1.0.1": version "1.1.2" @@ -1011,9 +1010,9 @@ integrity sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA== "@types/node@*": - version "14.14.37" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.37.tgz#a3dd8da4eb84a996c36e331df98d82abd76b516e" - integrity sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw== + version "15.0.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-15.0.0.tgz#557dd0da4a6dca1407481df3bbacae0cd6f68042" + integrity sha512-YN1d+ae2MCb4U0mMa+Zlb5lWTdpFShbAj5nmte6lel27waMMBfivrm0prC16p/Di3DyTrmerrYUT8/145HXxVw== "@types/parse-json@^4.0.0": version "4.0.0" @@ -1743,16 +1742,16 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.3, browserslist@^4.6.4: - version "4.16.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.3.tgz#340aa46940d7db878748567c5dea24a48ddf3717" - integrity sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw== +browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.4, browserslist@^4.6.4: + version "4.16.5" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.5.tgz#952825440bca8913c62d0021334cbe928ef062ae" + integrity sha512-C2HAjrM1AI/djrpAUU/tr4pml1DqLIzJKSLDBXBrNErl9ZCCTXdhwxdJjYc16953+mBWf7Lw+uUJgpgb8cN71A== dependencies: - caniuse-lite "^1.0.30001181" - colorette "^1.2.1" - electron-to-chromium "^1.3.649" + caniuse-lite "^1.0.30001214" + colorette "^1.2.2" + electron-to-chromium "^1.3.719" escalade "^3.1.1" - node-releases "^1.1.70" + node-releases "^1.1.71" buffer-from@^1.0.0: version "1.1.1" @@ -1944,10 +1943,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001181: - version "1.0.30001208" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001208.tgz#a999014a35cebd4f98c405930a057a0d75352eb9" - integrity sha512-OE5UE4+nBOro8Dyvv0lfx+SRtfVIOM9uhKqFmJeUbGriqhhStgp1A0OyBpgy3OUF8AhYCT+PVwPC1gMl2ZcQMA== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001214: + version "1.0.30001216" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001216.tgz#47418a082a4f952d14d8964ae739e25efb2060a9" + integrity sha512-1uU+ww/n5WCJRwUcc9UH/W6925Se5aNnem/G5QaSDga2HzvjYMs8vRbekGUN/PnTZ7ezTHcxxTEb9fgiMYwH6Q== capture-stack-trace@^1.0.0: version "1.0.1" @@ -2161,7 +2160,7 @@ color@^3.0.0: color-convert "^1.9.1" color-string "^1.5.4" -colorette@^1.2.1: +colorette@^1.2.1, colorette@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== @@ -2313,11 +2312,11 @@ copy-descriptor@^0.1.0: integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= core-js-compat@^3.9.0, core-js-compat@^3.9.1: - version "3.10.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.10.1.tgz#62183a3a77ceeffcc420d907a3e6fc67d9b27f1c" - integrity sha512-ZHQTdTPkqvw2CeHiZC970NNJcnwzT6YIueDMASKt+p3WbZsLXOcoD392SkcWhkC0wBBHhlfhqGKKsNCQUozYtg== + version "3.11.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.11.0.tgz#635683f43480a0b41e3f6be3b1c648dadb8b4390" + integrity sha512-3wsN9YZJohOSDCjVB0GequOyHax8zFiogSX3XWLE28M1Ew7dTU57tgHjIylSBKSIouwmLBp3g61sKMz/q3xEGA== dependencies: - browserslist "^4.16.3" + browserslist "^4.16.4" semver "7.0.0" core-js@^2.4.0: @@ -2326,9 +2325,9 @@ core-js@^2.4.0: integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== core-js@^3.6.5: - version "3.10.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.10.1.tgz#e683963978b6806dcc6c0a4a8bd4ab0bdaf3f21a" - integrity sha512-pwCxEXnj27XG47mu7SXAwhLP3L5CrlvCB91ANUkIz40P27kUcvNfSdvyZJ9CLHiVoKSp+TTChMQMSKQEH/IQxA== + version "3.11.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.11.0.tgz#05dac6aa70c0a4ad842261f8957b961d36eb8926" + integrity sha512-bd79DPpx+1Ilh9+30aT5O1sgpQd4Ttg8oqkqi51ZzhedMM1omD2e6IOF48Z/DzDCZ2svp49tN/3vneTK6ZBkXw== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" @@ -2925,10 +2924,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.3.649: - version "1.3.712" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.712.tgz#ae467ffe5f95961c6d41ceefe858fc36eb53b38f" - integrity sha512-3kRVibBeCM4vsgoHHGKHmPocLqtFAGTrebXxxtgKs87hNUzXrX2NuS3jnBys7IozCnw7viQlozxKkmty2KNfrw== +electron-to-chromium@^1.3.719: + version "1.3.720" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.720.tgz#f5d66df8754d993006b7b2ded15ff7738c58bd94" + integrity sha512-B6zLTxxaOFP4WZm6DrvgRk8kLFYWNhQ5TrHMC0l5WtkMXhU5UbnvWoTfeEwqOruUSlNMhVLfYak7REX6oC5Yfw== elliptic@^6.5.3: version "6.5.4" @@ -3401,9 +3400,9 @@ flush-write-stream@^1.0.0: readable-stream "^2.3.6" follow-redirects@^1.0.0: - version "1.13.3" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.3.tgz#e5598ad50174c1bc4e872301e82ac2cd97f90267" - integrity sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA== + version "1.14.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.0.tgz#f5d260f95c5f8c105894491feee5dc8993b402fe" + integrity sha512-0vRwd7RKQBTt+mgu87mtYeofLFZpTas2S9zY+jIeuLJMNvudIgF52nr19q40HOwH5RrhWIPuj9puybzSJiRrVg== for-in@^1.0.2: version "1.0.2" @@ -4229,9 +4228,9 @@ is-color-stop@^1.0.0: rgba-regex "^1.0.0" is-core-module@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" - integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== + version "2.3.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.3.0.tgz#d341652e3408bca69c4671b79a0954a3d349f887" + integrity sha512-xSphU2KG9867tsYdLD4RWQ1VqdFl4HTO9Thf3I/3dLEfr0dbPTWKsuCKrgqMljg4nPE+Gq0VCnzT3gr0CyBmsw== dependencies: has "^1.0.3" @@ -4709,11 +4708,6 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" -lodash._reinterpolate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" - integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= - lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" @@ -4739,21 +4733,6 @@ lodash.memoize@^4.1.2: resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= -lodash.template@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" - integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.templatesettings "^4.0.0" - -lodash.templatesettings@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" - integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.toarray@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" @@ -4764,7 +4743,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -"lodash@4.6.1 || ^4.16.1", lodash@^4.0.0, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.5, lodash@^4.3.0, lodash@~4.17.10: +"lodash@4.6.1 || ^4.16.1", lodash@^4.0.0, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.5, lodash@^4.3.0, lodash@~4.17.10: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -5218,7 +5197,7 @@ node-libs-browser@^2.2.1: util "^0.11.0" vm-browserify "^1.0.1" -node-releases@^1.1.70: +node-releases@^1.1.71: version "1.1.71" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb" integrity sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg== @@ -5395,9 +5374,9 @@ object-copy@^0.1.0: kind-of "^3.0.3" object-inspect@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" - integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== + version "1.10.2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.2.tgz#b6385a3e2b7cae0b5eafcf90cddf85d128767f30" + integrity sha512-gz58rdPpadwztRrPjZE9DZLOABUpTGdcANUgOwBFO1C+HZZhePoP83M65WGDmbpwFYJSWqavbl4SgDn4k8RYTA== object-is@^1.0.1: version "1.1.5" @@ -6058,11 +6037,10 @@ postcss-import@^12.0.1: resolve "^1.1.7" postcss-initial@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.2.tgz#f018563694b3c16ae8eaabe3c585ac6319637b2d" - integrity sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA== + version "3.0.4" + resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.4.tgz#9d32069a10531fe2ecafa0b6ac750ee0bc7efc53" + integrity sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg== dependencies: - lodash.template "^4.5.0" postcss "^7.0.2" postcss-lab-function@^2.0.1: @@ -6440,13 +6418,11 @@ postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: uniq "^1.0.1" postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: - version "6.0.4" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3" - integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw== + version "6.0.5" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.5.tgz#042d74e137db83e6f294712096cb413f5aa612c4" + integrity sha512-aFYPoYmXbZ1V6HZaSvat08M97A8HqO6Pjz+PiNpw/DhuRrC72XWAdp3hL6wusDCN31sSmcZyMGa2hZEuX+Xfhg== dependencies: cssesc "^3.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" util-deprecate "^1.0.2" postcss-svgo@^4.0.3: @@ -7806,9 +7782,9 @@ terser@^4.1.2: source-map-support "~0.5.12" terser@^5.3.4: - version "5.6.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.6.1.tgz#a48eeac5300c0a09b36854bf90d9c26fb201973c" - integrity sha512-yv9YLFQQ+3ZqgWCUk+pvNJwgUTdlIxUk1WTN+RnaFJe2L7ipG2csPT0ra2XRm7Cs8cxN7QXmK1rFzEwYEQkzXw== + version "5.7.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.7.0.tgz#a761eeec206bc87b605ab13029876ead938ae693" + integrity sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g== dependencies: commander "^2.20.0" source-map "~0.7.2" @@ -7919,7 +7895,7 @@ trim-newlines@^1.0.0: resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= -trix@^1.2.3: +trix@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/trix/-/trix-1.3.1.tgz#ccce8d9e72bf0fe70c8c019ff558c70266f8d857" integrity sha512-BbH6mb6gk+AV4f2as38mP6Ucc1LE3OD6XxkZnAgPIduWXYtvg2mI3cZhIZSLqmMh9OITEpOBCCk88IVmyjU7bA==