From 4c55db66a4101a5461da84a639f1935aa4426f3a Mon Sep 17 00:00:00 2001 From: alejocruzrcc Date: Thu, 19 Sep 2024 20:21:15 -0500 Subject: [PATCH] Actualiza --- .rubocop.yml | 68 +++++++ Gemfile.lock | 27 ++- app/javascript/application.js | 31 ++- app/javascript/controllers/index.js | 3 + config/initializers/msip.rb | 8 +- db/structure.sql | 17 ++ .../control_acceso_campos_controller_test.rb | 6 +- .../control_acceso_actos_controller_test.rb | 141 +++++++++++++ yarn.lock | 190 +++++++++--------- 9 files changed, 368 insertions(+), 123 deletions(-) create mode 100644 .rubocop.yml create mode 100644 test/controllers/sivel2_gen/control_acceso_actos_controller_test.rb diff --git a/.rubocop.yml b/.rubocop.yml new file mode 100644 index 00000000..cd1bdf67 --- /dev/null +++ b/.rubocop.yml @@ -0,0 +1,68 @@ +require: + - rubocop-minitest + - rubocop-rails + +inherit_gem: + rubocop-shopify: rubocop.yml + +Style/FrozenStringLiteralComment: + Enabled: true + # SafeAutoCorrect: false + +Minitest/AssertPredicate: + Enabled: false + # 1. Hace más largo el assert porque transforma `assert caso.valid?` en + # `assert_predicate caso, :valid?` + # 2. EMHO no facilita legibilidad + # 3. No es homogéneo, no transforma `assert_not caso.valid?` + # La ventaja de assert_predicate es que presenta mejor + # mensaje de error cuando la aserción falla. + +Minitest/MultipleAssertions: + Enabled: false + +Rails/ApplicationRecord: + Enabled: false + +Rails/LexicallyScopedActionFilter: + Enabled: false + +Rails/SquishedSQLHeredocs: + Enabled: false + +Rails/OutputSafety: + Exclude: + - lib/msip/engine.rb + - app/helpers/msip/* + +Rails/Exit: + Exclude: + - lib/generators/msip/* + +Rails/Output: + Exclude: + - lib/generators/msip/* + +# En generadores Rails.root es nil +Rails/FilePath: + Exclude: + - lib/msip/engine.rb + +Lint/RedundantStringCoercion: + Exclude: + - lib/msip/engine.rb + +Rails/RenderInline: + Enabled: false + +Naming/AsciiIdentifiers: + Enabled: false + +Metrics/ParameterLists: + Enabled: false + +AllCops: + NewCops: enable + SuggestExtensions: false + + diff --git a/Gemfile.lock b/Gemfile.lock index 13c1c6f0..c6f331e8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -26,7 +26,7 @@ GIT GIT remote: https://gitlab.com/pasosdeJesus/apo214.git - revision: 29af106b4eaa77f0eecc0a6764fcecf0c9270edf + revision: c0047aa4146769c145d7b716f86288c5a677fe0c branch: main specs: apo214 (2.2.0.beta4) @@ -35,7 +35,7 @@ GIT GIT remote: https://gitlab.com/pasosdeJesus/heb412_gen.git - revision: 721bffbad28fc9570fcc8137ca8677b4f90689eb + revision: 731c20a491c622123f7b7990d7c5103b2a8a7ff9 branch: main specs: heb412_gen (2.3.0.alfa2) @@ -46,7 +46,7 @@ GIT GIT remote: https://gitlab.com/pasosdeJesus/mr519_gen.git - revision: 1f252269fe870dd2794a0a1ced0a090581834e37 + revision: 8dd29640445450ea9958ad9a6e3fb067299854ad branch: main specs: mr519_gen (2.3.0.alfa2) @@ -55,7 +55,7 @@ GIT GIT remote: https://gitlab.com/pasosdeJesus/msip.git - revision: 0f3194d499e681b342e3c015befd6d85c4758acf + revision: 12574b5c700a9af702969fa0e42264d3e1daa9ca branch: main specs: msip (2.3.0.alfa2) @@ -75,7 +75,7 @@ GIT GIT remote: https://gitlab.com/pasosdeJesus/sivel2_gen.git - revision: df1cdd240c272f09ee7ab5ec72aca14dc388f8ca + revision: 92ae33e3d1705f87737f85b10122ad885792bd9f branch: main specs: sivel2_gen (2.3.0.alfa2) @@ -221,9 +221,9 @@ GEM devise-i18n (1.12.1) devise (>= 4.9.0) docile (1.4.1) - dotenv (3.1.2) - dotenv-rails (3.1.2) - dotenv (= 3.1.2) + dotenv (3.1.4) + dotenv-rails (3.1.4) + dotenv (= 3.1.4) railties (>= 6.1) drb (2.2.1) erd (0.8.2) @@ -252,7 +252,7 @@ GEM i18n (1.14.6) concurrent-ruby (~> 1.0) io-console (0.7.2) - irb (1.14.0) + irb (1.14.1) rdoc (>= 4.0.0) reline (>= 0.4.2) jbuilder (2.13.0) @@ -324,7 +324,7 @@ GEM psych (5.1.2) stringio public_suffix (6.0.1) - puma (6.4.2) + puma (6.4.3) nio4r (~> 2.0) racc (1.8.1) rack (2.2.9) @@ -429,9 +429,8 @@ GEM timeout (0.4.1) ttfunk (1.8.0) bigdecimal (~> 3.1) - turbo-rails (2.0.7) + turbo-rails (2.0.10) actionpack (>= 6.0.0) - activejob (>= 6.0.0) railties (>= 6.0.0) twitter_cldr (6.12.1) camertron-eprun @@ -450,7 +449,7 @@ GEM activemodel (>= 6.0.0) bindex (>= 0.4.0) railties (>= 6.0.0) - webrick (1.8.1) + webrick (1.8.2) websocket-driver (0.7.6) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) @@ -530,4 +529,4 @@ DEPENDENCIES will_paginate BUNDLED WITH - 2.5.18 + 2.5.20 diff --git a/app/javascript/application.js b/app/javascript/application.js index 1fa758b0..e7826620 100644 --- a/app/javascript/application.js +++ b/app/javascript/application.js @@ -13,17 +13,25 @@ import 'popper.js' // Dialogos emergentes usados por bootstrap import * as bootstrap from 'bootstrap' // Maquetacion y elementos de diseño import 'chosen-js/chosen.jquery'; // Cuadros de seleccion potenciados -import Msip__Motor from "./controllers/msip/motor" -window.Msip__Motor = Msip__Motor -Msip__Motor.iniciar() // Este se ejecuta una vez cuando se está cargando la aplicación tal vez antes que la página completa o los recursos - import L from 'leaflet' window.L = L import 'leaflet.markercluster' +import Msip__Motor from "./controllers/msip/motor" +window.Msip__Motor = Msip__Motor +Msip__Motor.iniciar() +import Mr519Gen__Motor from "./controllers/mr519_gen/motor" +window.Mr519Gen__Motor = Mr519Gen__Motor +Mr519Gen__Motor.iniciar() +import Heb412Gen__Motor from "./controllers/heb412_gen/motor" +window.Heb412Gen__Motor = Heb412Gen__Motor +Heb412Gen__Motor.iniciar() +import Apo214__Motor from "./controllers/apo214/motor" +window.Apo214__Motor = Apo214__Motor +Apo214__Motor.iniciar() import Sivel2Gen__Motor from "./controllers/sivel2_gen/motor" window.Sivel2Gen__Motor = Sivel2Gen__Motor -Sivel2Gen__Motor.iniciar() // Este cargará leaflet en window.L +Sivel2Gen__Motor.iniciar() // Apexcharts import ApexCharts from 'apexcharts' @@ -60,6 +68,9 @@ let promesaRecursosSprocketsYDocumento = new Promise((resolver, rechazar) => { promesaRecursosSprocketsYDocumento.then((mensaje) => { + // Este se ejecuta cada vez que se carga una página que no está en + // cache y tipicamente después de que se ha cargado la página completa + // y los recursos console.log(mensaje) var root = window; @@ -70,7 +81,10 @@ promesaRecursosSprocketsYDocumento.then((mensaje) => { apo214_prepara_eventos_comunes(root); sivel2_gen_prepara_eventos_unicos(root); - Msip__Motor.ejecutarAlCargarDocumentoYRecursos() // Este se ejecuta cada vez que se carga una página que no está en cache y tipicamente después de que se ha cargado la página completa y los recursos + Msip__Motor.ejecutarAlCargarDocumentoYRecursos() + Mr519Gen__Motor.ejecutarAlCargarDocumentoYRecursos() + Heb412Gen__Motor.ejecutarAlCargarDocumentoYRecursos() + Apo214__Motor.ejecutarAlCargarDocumentoYRecursos() Sivel2Gen__Motor.ejecutarAlCargarDocumentoYRecursos() var p = new URL(document.URL).pathname.split('/') @@ -94,8 +108,11 @@ document.addEventListener('turbo:load', (e) => { console.log('Escuchador turbo:load') - msip_ejecutarAlCargarPagina(window) // Establece puntomontaje + msip_ejecutarAlCargarPagina(window) // Establece root.puntomontaje Msip__Motor.ejecutarAlCargarPagina() + Mr519Gen__Motor.ejecutarAlCargarPagina() + Heb412Gen__Motor.ejecutarAlCargarPagina() + Apo214__Motor.ejecutarAlCargarPagina() Sivel2Gen__Motor.ejecutarAlCargarPagina() }) diff --git a/app/javascript/controllers/index.js b/app/javascript/controllers/index.js index 3749245b..ea67ab40 100644 --- a/app/javascript/controllers/index.js +++ b/app/javascript/controllers/index.js @@ -31,6 +31,9 @@ application.register("msip--geodep", Msip__GeodepController) import Msip__SindocautController from "./msip/sindocaut_controller" application.register("msip--sindocaut", Msip__SindocautController) +import Sivel2Gen__ContarAutomaticoController from "./sivel2_gen/contar_automatico_controller" +application.register("sivel2-gen--contar-automatico", Sivel2Gen__ContarAutomaticoController) + import Sivel2Gen__EdadController from "./sivel2_gen/edad_controller" application.register("sivel2-gen--edad", Sivel2Gen__EdadController) diff --git a/config/initializers/msip.rb b/config/initializers/msip.rb index 297bf4eb..f423a450 100644 --- a/config/initializers/msip.rb +++ b/config/initializers/msip.rb @@ -13,10 +13,10 @@ config.descripcion = "Sistema de Información de Violencia Política en Línea" - config.codigofuente = "https://gitlab.com/pasosdeJesus/sivel2/-/tree/v2.2" - config.urlcontribuyentes = "https://gitlab.com/pasosdeJesus/sivel2/-/graphs/v2.2" - config.urllicencia = "https://gitlab.com/pasosdeJesus/sivel2/-/blob/v2.2/LICENCIA.md" - config.urlcreditos = "https://gitlab.com/pasosdeJesus/sivel2/-/blob/v2.2/CREDITOS.md" + config.codigofuente = "https://gitlab.com/pasosdeJesus/sivel2/-/tree/main" + config.urlcontribuyentes = "https://gitlab.com/pasosdeJesus/sivel2/-/graphs/main" + config.urllicencia = "https://gitlab.com/pasosdeJesus/sivel2/-/blob/main/LICENCIA.md" + config.urlcreditos = "https://gitlab.com/pasosdeJesus/sivel2/-/blob/main/CREDITOS.md" config.agradecimientoDios = "

El mayor agradecimiento al Dios trino, el de la Biblia, a quien dedicamos este trabajo y a quien oramos para que no sea usado por estructuras armadas diff --git a/db/structure.sql b/db/structure.sql index 7dcfddae..f1206635 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -8267,6 +8267,14 @@ ALTER TABLE ONLY public.sivel2_gen_categoria ADD CONSTRAINT categoria_contada_en_fkey FOREIGN KEY (contadaen) REFERENCES public.sivel2_gen_categoria(id); +-- +-- Name: sivel2_gen_categoria categoria_contadaen_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.sivel2_gen_categoria + ADD CONSTRAINT categoria_contadaen_fkey FOREIGN KEY (contadaen) REFERENCES public.sivel2_gen_categoria(id); + + -- -- Name: sivel2_gen_contextovictima_victima contextovictima_victima_contextovictima_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - -- @@ -9275,6 +9283,14 @@ ALTER TABLE ONLY public.msip_persona ADD CONSTRAINT persona_tdocumento_id_fkey FOREIGN KEY (tdocumento_id) REFERENCES public.msip_tdocumento(id); +-- +-- Name: sivel2_gen_presponsable presponsable_papa_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.sivel2_gen_presponsable + ADD CONSTRAINT presponsable_papa_fkey FOREIGN KEY (papa_id) REFERENCES public.sivel2_gen_presponsable(id); + + -- -- Name: sivel2_gen_caso_presponsable presuntos_responsables_caso_id_caso_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - -- @@ -9663,6 +9679,7 @@ INSERT INTO "schema_migrations" (version) VALUES ('20221102145906'), ('20221102144613'), ('20221025025402'), +('20221024222000'), ('20221024221557'), ('20221024000000'), ('20221005165307'), diff --git a/test/controllers/mr519_gen/control_acceso_campos_controller_test.rb b/test/controllers/mr519_gen/control_acceso_campos_controller_test.rb index 0401257b..a3cf8b63 100644 --- a/test/controllers/mr519_gen/control_acceso_campos_controller_test.rb +++ b/test/controllers/mr519_gen/control_acceso_campos_controller_test.rb @@ -29,7 +29,7 @@ class ControlAccesoCamposControllerTest < ActionDispatch::IntegrationTest test "sin autenticar no debe acceder a campos/new" do assert_raise CanCan::AccessDenied do - get mr519_gen.new_campo_path + post mr519_gen.crear_campo_path(index: 0), params: nil end end @@ -49,7 +49,7 @@ class ControlAccesoCamposControllerTest < ActionDispatch::IntegrationTest current_usuario = ::Usuario.find(PRUEBA_USUARIO_OP) sign_in current_usuario assert_raise CanCan::AccessDenied do - get mr519_gen.new_campo_path + post mr519_gen.crear_campo_path(index: 0), params: nil end end @@ -70,7 +70,7 @@ class ControlAccesoCamposControllerTest < ActionDispatch::IntegrationTest current_usuario = ::Usuario.find(PRUEBA_USUARIO_AN) sign_in current_usuario assert_raise CanCan::AccessDenied do - get mr519_gen.new_campo_path + post mr519_gen.crear_campo_path(index: 0), params: nil end end diff --git a/test/controllers/sivel2_gen/control_acceso_actos_controller_test.rb b/test/controllers/sivel2_gen/control_acceso_actos_controller_test.rb new file mode 100644 index 00000000..22af136b --- /dev/null +++ b/test/controllers/sivel2_gen/control_acceso_actos_controller_test.rb @@ -0,0 +1,141 @@ +require 'test_helper' + +module Sivel2Gen + class ControlAccesoActosControllerTest < ActionDispatch::IntegrationTest + + include Rails.application.routes.url_helpers + include Devise::Test::IntegrationHelpers + + setup do + if ENV['CONFIG_HOSTS'] != 'www.example.com' + raise 'CONFIG_HOSTS debe ser www.example.com' + end + @caso = Sivel2Gen::Caso.create!(PRUEBA_CASO) + @casoacto = Sivel2Gen::Caso.create(PRUEBA_CASO) + @pr = Sivel2Gen::Presponsable.find(39) # Polo estatal + @cat = Sivel2Gen::Categoria.find(10) # Ejecución extrajudicial + @persona = Msip::Persona.create( + PRUEBA_PERSONA + ) + @victima = Sivel2Gen::Victima.create!( + caso_id: @casoacto.id, + persona_id: @persona.id + ) + + @params = { + caso: { + fecha_localizada: '18/sep/2024', + id: @casoacto.id, + caso_presponsable_attributes: { + '0' => { + presponsable_id: @pr.id, + categoria_ids: [@cat.id] + } + }, + victima_attributes: { + '0' => { + persona_attributes: { + id: @persona.id, + } + } + } + }, + caso_acto_presponsable_id: [@pr.id], + caso_acto_categoria_id: [@cat.id], + caso_acto_persona_id: [@persona.id] + } + @raiz = Rails.application.config.relative_url_root + end + + # No autenticado + # Consulta pública de casos para usuarios no autenticados + ################ + + test "sin autenticar no puede agrega acto con turbo" do + assert @casoacto.valid? + assert_raises(CanCan::AccessDenied) do + post sivel2_gen.crear_acto_path(@casoacto.id), params: @params, as: :turbo_stream + end + end + + test "sin autenticar no puede eliminar acto con turbo" do + assert @casoacto.valid? + acto = Sivel2Gen::Acto.create( + caso_id: @casoacto.id, + persona_id: @persona.id, + categoria_id: @cat.id, + presponsable_id: @pr.id + ) + assert_raises(CanCan::AccessDenied) do + delete sivel2_gen.eliminar_acto_path(id: acto.id, index: 0) + end + @caso.destroy + end + + # Autenticado como operador sin grupo + ##################################### + + test "Operados sin grupo no puede agrega acto con turbo" do + current_usuario = ::Usuario.find(PRUEBA_USUARIO_OP) + sign_in current_usuario + assert @casoacto.valid? + assert_raises(CanCan::AccessDenied) do + post sivel2_gen.crear_acto_path(@casoacto.id), params: @params, as: :turbo_stream + end + @casoacto.destroy + end + + test "Operador sin grupo no puede eliminar acto con turbo" do + current_usuario = ::Usuario.find(PRUEBA_USUARIO_OP) + sign_in current_usuario + assert @casoacto.valid? + acto = Sivel2Gen::Acto.create( + caso_id: @casoacto.id, + persona_id: @persona.id, + categoria_id: @cat.id, + presponsable_id: @pr.id + ) + assert_raises(CanCan::AccessDenied) do + delete sivel2_gen.eliminar_acto_path(id: acto.id, index: 0) + end + @caso.destroy + end + + # Autenticado como operador con grupo Analista de Casos + ####################################################### + test "Analista puede agregar, crear y eliminar acto con turbo" do + current_usuario = ::Usuario.find(PRUEBA_USUARIO_AN) + sign_in current_usuario + assert @casoacto.valid? + + #crea acto + assert_difference('Sivel2Gen::Acto.count', 1) do + post sivel2_gen.crear_acto_path(@casoacto.id), params: @params, as: :turbo_stream + end + assert_response :success + assert_match /turbo-stream/, @response.body + + # Buscar el acto recién creado + acto_creado = Sivel2Gen::Acto.where( + presponsable_id: + @params[:caso_acto_presponsable_id].first, + categoria_id: + @params[:caso_acto_categoria_id].first, + persona_id: + @params[:caso_acto_persona_id].first, + caso_id: @casoacto.id + ).first + + # Asegurarse de que el acto fue creado correctamente + assert_not_nil acto_creado + + # Eliminar acto + assert_difference('Sivel2Gen::Acto.count', -1) do + delete sivel2_gen.eliminar_acto_path(@casoacto.id, acto_creado.id), + as: :turbo_stream + end + assert_response :success + end + + end +end diff --git a/yarn.lock b/yarn.lock index 15bc90ae..8d9ed840 100644 --- a/yarn.lock +++ b/yarn.lock @@ -44,12 +44,12 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.25.0", "@babel/generator@^7.25.4", "@babel/generator@^7.7.2": - version "7.25.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.5.tgz#b31cf05b3fe8c32d206b6dad03bb0aacbde73450" - integrity sha512-abd43wyLfbWoxC6ahM8xTkqLpGB2iWBVyuKC9/srhFunCd1SDNrV1s72bBpK4hLj8KLzHBBcOblvLQZBNw9r3w== +"@babel/generator@^7.25.0", "@babel/generator@^7.25.6", "@babel/generator@^7.7.2": + version "7.25.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.6.tgz#0df1ad8cb32fe4d2b01d8bf437f153d19342a87c" + integrity sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw== dependencies: - "@babel/types" "^7.25.4" + "@babel/types" "^7.25.6" "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" jsesc "^2.5.1" @@ -119,12 +119,12 @@ integrity sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q== "@babel/helpers@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.25.0.tgz#e69beb7841cb93a6505531ede34f34e6a073650a" - integrity sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw== + version "7.25.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.25.6.tgz#57ee60141829ba2e102f30711ffe3afab357cc60" + integrity sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q== dependencies: "@babel/template" "^7.25.0" - "@babel/types" "^7.25.0" + "@babel/types" "^7.25.6" "@babel/highlight@^7.24.7": version "7.24.7" @@ -136,12 +136,12 @@ js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.25.0", "@babel/parser@^7.25.4": - version "7.25.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.4.tgz#af4f2df7d02440286b7de57b1c21acfb2a6f257a" - integrity sha512-nq+eWrOgdtu3jG5Os4TQP3x3cLA8hR8TvJNjD8vnPa20WGycimcparWnLK4jJhElTK6SDyuJo1weMKO/5LpmLA== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.25.0", "@babel/parser@^7.25.6": + version "7.25.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.6.tgz#85660c5ef388cbbf6e3d2a694ee97a38f18afe2f" + integrity sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q== dependencies: - "@babel/types" "^7.25.4" + "@babel/types" "^7.25.6" "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -172,11 +172,11 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-import-attributes@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz#b4f9ea95a79e6912480c4b626739f86a076624ca" - integrity sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A== + version "7.25.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.6.tgz#6d4c78f042db0e82fd6436cd65fec5dc78ad2bde" + integrity sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.8" "@babel/plugin-syntax-import-meta@^7.10.4": version "7.10.4" @@ -308,9 +308,9 @@ "@babel/plugin-transform-react-pure-annotations" "^7.24.7" "@babel/runtime@^7.12.5": - version "7.25.4" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.4.tgz#6ef37d678428306e7d75f054d5b1bdb8cf8aa8ee" - integrity sha512-DSgLeL/FNcpXuzav5wfYvHCGvynXkJbn3Zvc3823AEe9nPwW9IK4UoCSS5yGymmQzN0pCPvivtgS6/8U2kkm1w== + version "7.25.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.6.tgz#9afc3289f7184d8d7f98b099884c26317b9264d2" + integrity sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ== dependencies: regenerator-runtime "^0.14.0" @@ -324,22 +324,22 @@ "@babel/types" "^7.25.0" "@babel/traverse@^7.24.7", "@babel/traverse@^7.25.2", "@babel/traverse@^7.7.2": - version "7.25.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.4.tgz#648678046990f2957407e3086e97044f13c3e18e" - integrity sha512-VJ4XsrD+nOvlXyLzmLzUs/0qjFS4sK30te5yEFlvbbUNEgKaVb2BHZUpAL+ttLPQAHNrsI3zZisbfha5Cvr8vg== + version "7.25.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.6.tgz#04fad980e444f182ecf1520504941940a90fea41" + integrity sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ== dependencies: "@babel/code-frame" "^7.24.7" - "@babel/generator" "^7.25.4" - "@babel/parser" "^7.25.4" + "@babel/generator" "^7.25.6" + "@babel/parser" "^7.25.6" "@babel/template" "^7.25.0" - "@babel/types" "^7.25.4" + "@babel/types" "^7.25.6" debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.24.7", "@babel/types@^7.25.0", "@babel/types@^7.25.2", "@babel/types@^7.25.4", "@babel/types@^7.3.3": - version "7.25.4" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.4.tgz#6bcb46c72fdf1012a209d016c07f769e10adcb5f" - integrity sha512-zQ1ijeeCXVEh+aNL0RlmkPkG8HUiDcU2pzQQFjtbntgAczRASFzj4H+6+bV+dy1ntKR14I/DypeuRG1uma98iQ== +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.24.7", "@babel/types@^7.25.0", "@babel/types@^7.25.2", "@babel/types@^7.25.6", "@babel/types@^7.3.3": + version "7.25.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.6.tgz#893942ddb858f32ae7a004ec9d3a76b3463ef8e6" + integrity sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw== dependencies: "@babel/helper-string-parser" "^7.24.8" "@babel/helper-validator-identifier" "^7.24.7" @@ -827,9 +827,9 @@ integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== "@types/node@*": - version "22.5.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.5.0.tgz#10f01fe9465166b4cab72e75f60d8b99d019f958" - integrity sha512-DkFrJOe+rfdHTqqMg0bSNlGlQ85hSoh2TPzZyhHsXnMtligRWpxUySiyw8FY14ITt24HVCiQPWxS3KO/QlGmWg== + version "22.7.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.7.4.tgz#e35d6f48dca3255ce44256ddc05dee1c23353fcc" + integrity sha512-y+NPi1rFzDs1NdQHHToqeiX2TIS79SWEAw9GYhkkx8bD0ChpfqC+n2j5OXOCpzfojBEBt6DnEnnG9MY0zk1XLg== dependencies: undici-types "~6.19.2" @@ -979,9 +979,9 @@ anymatch@^3.0.3: picomatch "^2.0.4" apexcharts@^3.29.0: - version "3.52.0" - resolved "https://registry.yarnpkg.com/apexcharts/-/apexcharts-3.52.0.tgz#55c19bda05e4be5305d28862d1e4ff5b0ec5d0f2" - integrity sha512-7dg0ADKs8AA89iYMZMe2sFDG0XK5PfqllKV9N+i3hKHm3vEtdhwz8AlXGm+/b0nJ6jKiaXsqci5LfVxNhtB+dA== + version "3.53.0" + resolved "https://registry.yarnpkg.com/apexcharts/-/apexcharts-3.53.0.tgz#9ea2b4d837d9faf2c0bff79d228db48e75b2220a" + integrity sha512-QESZHZY3w9LPQ64PGh1gEdfjYjJ5Jp+Dfy0D/CLjsLOPTpXzdxwlNMqRj+vPbTcP0nAHgjWv1maDqcEq6u5olw== dependencies: "@yr/monotone-cubic-spline" "^1.0.3" svg.draggable.js "^2.2.2" @@ -1117,12 +1117,12 @@ browser-split@0.0.0: integrity sha512-CNXO3AXAS1H/kOGQkPjucm1161/XoF3aVkMfujqwk85XN/D/MkQMvoB81lXyX/2rerZS+hPAYYRR3mAW05awjQ== browserslist@^4.23.1: - version "4.23.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.3.tgz#debb029d3c93ebc97ffbc8d9cbb03403e227c800" - integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA== + version "4.24.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.0.tgz#a1325fe4bc80b64fda169629fc01b3d6cecd38d4" + integrity sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A== dependencies: - caniuse-lite "^1.0.30001646" - electron-to-chromium "^1.5.4" + caniuse-lite "^1.0.30001663" + electron-to-chromium "^1.5.28" node-releases "^2.0.18" update-browserslist-db "^1.1.0" @@ -1153,10 +1153,10 @@ camelcase@^6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001646: - version "1.0.30001653" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001653.tgz#b8af452f8f33b1c77f122780a4aecebea0caca56" - integrity sha512-XGWQVB8wFQ2+9NZwZ10GxTYC5hk0Fa+q8cSkr0tgvMhYhMHP/QC+WTgrePMDBWiWc/pV+1ik82Al20XOK25Gcw== +caniuse-lite@^1.0.30001663: + version "1.0.30001664" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001664.tgz#d588d75c9682d3301956b05a3749652a80677df4" + integrity sha512-AmE7k4dXiNKQipgn7a2xg558IRqPN3jMQY/rOsbxDhrd0tyChwbITBfiwtnqz8bi2M5mIWbxAYBvk7W7QBUS2g== chalk@^2.4.2: version "2.4.2" @@ -1191,9 +1191,9 @@ ci-info@^3.2.0: integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== cjs-module-lexer@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.4.0.tgz#677de7ed7efff67cc40c9bf1897fea79d41b5215" - integrity sha512-N1NGmowPlGBLsOZLPvm48StN04V4YvQRL0i6b7ctrVY3epjP/ct7hFLOItz6pDIvRjwpfPxi52a2UWV2ziir8g== + version "1.4.1" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz#707413784dbb3a72aa11c2f2b042a0bef4004170" + integrity sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA== class-list@~0.1.0: version "0.1.1" @@ -1340,11 +1340,11 @@ data-urls@^2.0.0: whatwg-url "^8.0.0" debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: - version "4.3.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.6.tgz#2ab2c38fbaffebf8aa95fdfe6d88438c7a13c52b" - integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg== + version "4.3.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== dependencies: - ms "2.1.2" + ms "^2.1.3" decimal.js@^10.2.1: version "10.4.3" @@ -1383,10 +1383,10 @@ domexception@^2.0.1: dependencies: webidl-conversions "^5.0.0" -electron-to-chromium@^1.5.4: - version "1.5.13" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz#1abf0410c5344b2b829b7247e031f02810d442e6" - integrity sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q== +electron-to-chromium@^1.5.28: + version "1.5.29" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.29.tgz#aa592a3caa95d07cc26a66563accf99fa573a1ee" + integrity sha512-PF8n2AlIhCKXQ+gTpiJi0VhcHDb69kYX4MtCiivctc2QD3XuNZ/XIOlbGzt7WAjjEev0TtaH6Cu3arZExm5DOw== emittery@^0.8.1: version "0.8.1" @@ -1439,10 +1439,10 @@ esbuild@^0.19.4: "@esbuild/win32-ia32" "0.19.12" "@esbuild/win32-x64" "0.19.12" -escalade@^3.1.1, escalade@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" - integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== +escalade@^3.1.1, escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== escape-string-regexp@^1.0.5: version "1.0.5" @@ -1521,14 +1521,14 @@ fast-json-stable-stringify@^2.0.0: integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fast-uri@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.1.tgz#cddd2eecfc83a71c1be2cc2ef2061331be8a7134" - integrity sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw== + version "3.0.2" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.2.tgz#d78b298cf70fd3b752fd951175a3da6a7b48f024" + integrity sha512-GR6f0hD7XXyNJa25Tb9BuIdN0tdr+0BMi6/CJPH3wJO1JjNG3n/VsSw38AwRdKZABm8lGbPfakLRkYzx2V9row== fast-xml-parser@^4.1.3: - version "4.4.1" - resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz#86dbf3f18edf8739326447bcaac31b4ae7f6514f" - integrity sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw== + version "4.5.0" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.5.0.tgz#2882b7d01a6825dfdf909638f2de0256351def37" + integrity sha512-/PlTQCI96+fZMAOLMZK4CWG1ItCbfZ/0jx7UIJFChPNrx7tcEgerUgWbeieCM9MfHInUDyK8DWYZ+YrywDJuTg== dependencies: strnum "^1.0.5" @@ -2450,10 +2450,10 @@ minimatch@^3.0.4, minimatch@^3.1.1: dependencies: brace-expansion "^1.1.7" -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +ms@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== nanoid@^3.3.7: version "3.3.7" @@ -2493,9 +2493,9 @@ npm-run-path@^4.0.1: path-key "^3.0.0" nwsapi@^2.2.0: - version "2.2.12" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.12.tgz#fb6af5c0ec35b27b4581eb3bbad34ec9e5c696f8" - integrity sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w== + version "2.2.13" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.13.tgz#e56b4e98960e7a040e5474536587e599c4ff4655" + integrity sha512-cTGB9ptp9dY9A5VbMSe7fQBcl/tt22Vcqdq8+eN93rblOuE0aCFu4aZ2vMwct/2t+lFnosm8RkQW1I0Omb1UtQ== observable@~1.3.1: version "1.3.1" @@ -2582,10 +2582,10 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -picocolors@^1.0.0, picocolors@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" - integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== +picocolors@^1.0.0, picocolors@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59" + integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw== picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" @@ -2651,13 +2651,13 @@ postcss-value-parser@^4.1.0: integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== postcss@^8.2.10, postcss@^8.2.15: - version "8.4.41" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.41.tgz#d6104d3ba272d882fe18fc07d15dc2da62fa2681" - integrity sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ== + version "8.4.47" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.47.tgz#5bf6c9a010f3e724c503bf03ef7947dcb0fea365" + integrity sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ== dependencies: nanoid "^3.3.7" - picocolors "^1.0.1" - source-map-js "^1.2.0" + picocolors "^1.1.0" + source-map-js "^1.2.1" pretty-format@^27.5.1: version "27.5.1" @@ -2832,14 +2832,14 @@ sortable@^2.0.0: observable "~1.3.1" sortablejs@^1.14.0: - version "1.15.2" - resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.15.2.tgz#4e9f7bda4718bd1838add9f1866ec77169149809" - integrity sha512-FJF5jgdfvoKn1MAKSdGs33bIqLi3LmsgVTliuX6iITj834F+JRQZN90Z93yql8h0K2t0RwDPBmxwlbZfDcxNZA== + version "1.15.3" + resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.15.3.tgz#033668db5ebfb11167d1249ab88e748f27959e29" + integrity sha512-zdK3/kwwAK1cJgy1rwl1YtNTbRmc8qW/+vgXf75A7NHag5of4pyI6uK86ktmQETyWRH7IGaE73uZOOBcGxgqZg== -source-map-js@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" - integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== +source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== source-map-support@^0.5.6: version "0.5.21" @@ -3103,12 +3103,12 @@ universalify@^0.2.0: integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== update-browserslist-db@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz#7ca61c0d8650766090728046e416a8cde682859e" - integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ== + version "1.1.1" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5" + integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A== dependencies: - escalade "^3.1.2" - picocolors "^1.0.1" + escalade "^3.2.0" + picocolors "^1.1.0" uri-js@^4.2.2: version "4.4.1"