From c9fb67e751af21deca0649f48ee79a304e8477a8 Mon Sep 17 00:00:00 2001 From: Rodrigo Martins Date: Thu, 10 Apr 2025 23:07:21 -0300 Subject: [PATCH] first commit --- .env.example | 12 + .eslintrc.js | 29 + .github/copilot-instructions.md | 61 + .gitignore | 9 + .vite/deps/_metadata.json | 8 + .vite/deps/package.json | 3 + create_user.sql | 0 index.html | 13 + old/list_files.php | 144 + old/process_queue.php | 508 + old/status.php | 81 + old/status_check.php | 34 + old/upload.php | 133 + old/upload_prova.php | 211 + package-lock.json | 13023 ++++++++++++++++ package.json | 121 + postcss.config.js | 7 + .../20250325225406_advx/migration.sql | 14 + .../migrations/20250325233818_/migration.sql | 33 + .../migration.sql | 47 + .../migration.sql | 2 + .../migration.sql | 2 + .../migration.sql | 11 + .../migration.sql | 51 + .../migration.sql | 123 + .../migration.sql | 103 + .../migration.sql | 10 + .../migration.sql | 21 + .../migration.sql | 29 + .../migrations/20250328011301_/migration.sql | 379 + .../migration.sql | 5 + .../migration.sql | 17 + .../migration.sql | 3 + .../migration.sql | 2 + .../migration.sql | 5 + .../migrations/20250329220922_/migration.sql | 31 + .../migrations/20250330224534_/migration.sql | 58 + .../migrations/20250330232401_/migration.sql | 8 + .../migrations/20250330234121_/migration.sql | 26 + .../20250331000000_create_tarefas.sql | 76 + .../20250331000000_create_tarefas_schema.sql | 86 + ...31000004_add_atendimento_status_fields.sql | 18 + .../migrations/20250331001651_/migration.sql | 4 + .../migration.sql | 84 + .../migration.sql | 5 + .../migration.sql | 2 + .../migration.sql | 44 + .../migration.sql | 66 + .../migrations/20250402145614_/migration.sql | 31 + .../migration.sql | 19 + .../migration.sql | 6 + .../migration.sql | 19 + .../migration.sql | 14 + .../migrations/20250403190651_/migration.sql | 59 + .../migrations/20250403220121_/migration.sql | 27 + .../migrations/20250403225241_/migration.sql | 21 + .../migrations/20250404175618_/migration.sql | 263 + .../XXXXXXXXXXXXXX_add_audiencia_report.sql | 11 + ...XXXXXXXXXX_add_dni_filhos_orgao_fields.sql | 5 + .../XXXXXXXXXXXXXX_add_documentos.sql | 13 + .../XXXXXXXXXXXXXX_add_field_limits.sql | 25 + .../XXXXXXXXXXXXXX_add_new_fields_safe.sql | 11 + .../XXXXXXXXXXXXXX_add_partes_processo.sql | 83 + ...XXXXXXXXXXXXXX_add_processos_judiciais.sql | 98 + .../XXXXXXXXXXXXXX_add_rg_estado.sql | 3 + .../XXXXXXXXXXXXXX_fix_date_and_rg_fields.sql | 5 + ...XXXXXXXXXX_fix_date_and_rg_fields_safe.sql | 15 + .../XXXXXXXXXXXXXX_fix_rg_fields.sql | 5 + .../XXXXXXXXXXXXXX_update_processo_fields.sql | 19 + .../[timestamp]_add_audiencia_report.sql | 28 + .../[timestamp]_add_audiencia_report_safe.sql | 24 + .../[timestamp]_add_datajud_field.sql | 5 + .../[timestamp]_add_datajud_update.sql | 12 + .../[timestamp]_add_documentos_tables.ts | 52 + .../migrations/[timestamp]_add_pdf_config.ts | 0 ...[timestamp]_add_process_datajud_fields.sql | 9 + .../[timestamp]_add_template_config.ts | 19 + .../[timestamp]_add_timbrado_config.ts | 22 + .../[timestamp]_add_tribunal_fields.sql | 41 + .../[timestamp]_add_tribunal_fields_safe.sql | 30 + .../[timestamp]_add_valor_pago_parcela.sql | 23 + .../migrations/[timestamp]_create_anexos.sql | 23 + ...imestamp]_create_configuracao_documento.ts | 34 + .../[timestamp]_fix_audiencia_schema.sql | 9 + .../migrations/[timestamp]_fix_migrations.sql | 2 + .../[timestamp]_fix_processo_id_type.sql | 16 + prisma/migrations/[timestamp]_init.sql | 13 + ...mestamp]_make_tribunal_fields_required.sql | 15 + .../[timestamp]_update_audiencias_safe.sql | 43 + ...imestamp]_update_configuracao_documento.ts | 22 + .../[timestamp]_update_processo_tribunais.sql | 18 + prisma/migrations/fix_all_constraints.sql | 35 + prisma/migrations/fix_all_uuid_types.sql | 51 + prisma/migrations/fix_all_uuids.sql | 24 + .../migrations/fix_partes_processo_schema.sql | 30 + .../migrations/fix_processo_id_generation.sql | 2 + prisma/migrations/fix_uuid_types.sql | 44 + prisma/migrations/migration_lock.toml | 3 + prisma/migrations/seed.ts | 29 + prisma/schema.prisma | 1069 ++ prisma/seed.ts | 46 + public/.htaccess | 9 + public/tinymce/langs/pt_BR.js | 232 + public/uploads/Timbrado_2025.pdf | Bin 0 -> 79923 bytes ...umento a4 Papel timbrado dentista azul.png | Bin 0 -> 70969 bytes .../timbrado-1743643506911-timbradomv.png | Bin 0 -> 70969 bytes .../timbrado-1743643653538-timbradomv.png | Bin 0 -> 70969 bytes .../timbrado-1743643839450-timbradomv.png | Bin 0 -> 70969 bytes ...-1743706131923-532750456-Timbrado_2025.pdf | Bin 0 -> 79923 bytes ...o-1744311885048-12655920-Timbrado_2025.pdf | Bin 0 -> 79923 bytes scripts/create_admin_user.ts | 55 + scripts/install-deps.bat | 0 scripts/migrateProcessos.ts | 43 + settings.json | 72 + src/App.tsx | 149 + src/components/AdminRoute.tsx | 28 + src/components/Dashboard.tsx | 6 + src/components/DocumentosPage.tsx | 364 + src/components/ErrorBoundary.tsx | 54 + src/components/LoginPage.tsx | 141 + src/components/PrivateRoute.tsx | 14 + src/components/ProtectedRoute.tsx | 36 + src/components/Sidebar.tsx | 25 + .../atendimentos/AgendamentoCalendario.tsx | 247 + .../atendimentos/AgendamentoForm.tsx | 208 + .../atendimentos/AtendimentoDetalhes.tsx | 211 + .../atendimentos/AtendimentoForm.tsx | 444 + .../atendimentos/AtendimentoModal.tsx | 0 .../atendimentos/AtendimentosPage.tsx | 169 + src/components/calculos/CalculosList.tsx | 274 + .../calculos/DetalhePensaoAlimenticia.tsx | 95 + src/components/calculos/DetalhesCalculo.tsx | 2009 +++ src/components/calculos/NovoCalculo.tsx | 315 + .../calculos/NovoPensaoAlimenticia.tsx | 342 + src/components/clientes/ClienteDetalhes.tsx | 390 + src/components/clientes/ClienteModal.tsx | 611 + src/components/clientes/ClientesList.tsx | 146 + src/components/clientes/ClientesPage.tsx | 66 + src/components/dashboard/AlertasPrazos.tsx | 50 + .../dashboard/AtividadesRecentes.tsx | 45 + src/components/dashboard/Card.tsx | 92 + src/components/dashboard/DashboardLayout.tsx | 53 + src/components/dashboard/KPIsAdvogados.tsx | 66 + src/components/dashboard/TaxaSucessoCard.tsx | 39 + src/components/dashboard/charts/MapaCalor.tsx | 36 + .../charts/PrevisaoReceitasChart.tsx | 39 + .../dashboard/charts/ProcessosCharts.tsx | 18 + .../dashboard/charts/ProcessosEvolucao.tsx | 31 + .../dashboard/charts/TaxaSucessoChart.tsx | 42 + .../dashboard/stats/AtendimentosStats.tsx | 35 + .../dashboard/stats/FinanceiroStats.tsx | 37 + .../dashboard/stats/KPIsFinanceiros.tsx | 44 + .../dashboard/stats/ProcessosStats.tsx | 32 + .../dashboard/stats/TarefasStats.tsx | 61 + .../documentos/ConfiguracaoDocumento.tsx | 344 + src/components/documentos/DocumentoEditor.tsx | 301 + src/components/documentos/DocumentoViewer.tsx | 230 + src/components/documentos/DocumentosPage.tsx | 245 + .../documentos/GerenciarTemplates.tsx | 282 + src/components/documentos/NovoDocumento.tsx | 48 + src/components/forms/FormCheckbox.tsx | 30 + src/components/forms/FormInput.tsx | 43 + src/components/forms/FormSelect.tsx | 52 + src/components/forms/index.ts | 3 + src/components/forms/index.tsx | 71 + src/components/layouts/MainLayout.tsx | 319 + src/components/perfil/PerfilPage.tsx | 437 + src/components/processos/AbaFinanceiro.tsx | 554 + src/components/processos/AbaInformacoes.tsx | 151 + src/components/processos/AbaMovimentacoes.tsx | 88 + src/components/processos/AudienciaModal.tsx | 147 + .../processos/DialogCustaProcessual.tsx | 262 + src/components/processos/DialogHonorario.tsx | 347 + .../processos/MovimentacoesTimeline.tsx | 72 + .../processos/ParteProcessoModal.tsx | 149 + .../processos/ProcessoAdminModal.tsx | 0 src/components/processos/ProcessoCard.tsx | 58 + src/components/processos/ProcessoDetalhes.tsx | 646 + src/components/processos/ProcessoForm.tsx | 152 + src/components/processos/ProcessoInfo.tsx | 54 + src/components/processos/ProcessoModal.tsx | 443 + src/components/processos/ProcessoView.tsx | 169 + src/components/processos/ProcessosList.tsx | 176 + src/components/processos/ProcessosPage.tsx | 74 + .../dialogs/DialogCustaProcessual.tsx | 262 + .../processos/dialogs/DialogHonorario.tsx | 353 + .../processos/dialogs/DialogParcela.tsx | 213 + src/components/processos/dialogs/index.ts | 3 + .../processos/tables/CustasTable.tsx | 53 + .../CustaAdministrativaPanel.tsx | 251 + .../MovimentacaoAdminActions.tsx | 57 + .../MovimentacaoAdministrativaDialog.tsx | 202 + .../ProcessoAdminDetalhes.tsx | 309 + .../ProcessoAdminModal.tsx | 175 + .../ProcessoAdministrativoList.tsx | 100 + src/components/provas/AdminProvas.tsx | 115 + src/components/provas/ClientProvaUpload.tsx | 313 + src/components/provas/ProvaStatus.tsx | 163 + src/components/provas/ProvaUpload.tsx | 223 + src/components/provas/PublicProvaStatus.tsx | 284 + .../provas/PublicVerificarProva.tsx | 315 + src/components/provas/VerificarProva.tsx | 291 + src/components/tarefas/AnexosList.tsx | 94 + src/components/tarefas/ComentariosList.tsx | 86 + src/components/tarefas/SubtarefasList.tsx | 88 + src/components/tarefas/TarefaCard.tsx | 152 + src/components/tarefas/TarefaKanban.tsx | 71 + src/components/tarefas/TarefaModal.tsx | 241 + src/components/tarefas/TarefasList.tsx | 140 + src/components/tarefas/TarefasPage.tsx | 95 + src/components/ui/Button.tsx | 69 + src/components/ui/Card.tsx | 24 + src/components/ui/FormInputs.tsx | 265 + src/components/ui/Tabs.tsx | 135 + src/components/ui/index.ts | 19 + src/components/usuarios/UsuarioForm.tsx | 197 + src/components/usuarios/UsuariosPage.tsx | 155 + src/config/database.ts | 16 + src/context/AuthContext.tsx | 81 + src/context/ProcessoContext.tsx | 70 + src/contexts/AuthContext.tsx | 113 + src/contexts/ThemeContext.tsx | 43 + src/env.d.ts | 9 + src/hooks/useAudiencias.ts | 57 + src/hooks/useAuth.ts | 16 + src/hooks/useClientes.ts | 70 + src/hooks/useComentarios.ts | 23 + src/hooks/useCustasProcessuais.ts | 148 + src/hooks/useDashboardStats.ts | 68 + src/hooks/useDatajud.ts | 38 + src/hooks/useHonorarios.ts | 171 + src/hooks/usePartesProcesso.ts | 71 + src/hooks/useProcessoMovimentacoes.ts | 49 + src/hooks/useProcessos.ts | 80 + src/hooks/useProcessosAdministrativos.ts | 59 + src/hooks/useSubtarefas.ts | 23 + src/hooks/useTarefas.ts | 81 + src/index.css | 284 + src/index.tsx | 10 + src/interfaces/CustaProcessual.ts | 21 + src/lib/api.ts | 26 + src/lib/prisma.ts | 5 + src/middleware/auth.ts | 70 + src/repositories/BaseRepository.ts | 9 + src/repositories/ClienteRepository.ts | 169 + src/repositories/CustaProcessualRepository.ts | 138 + src/repositories/DialogParcela.tsx | 153 + src/repositories/HonorarioRepository.ts | 131 + src/repositories/OrgaoJulgadorRepository.ts | 43 + .../ProcessoAdministrativoRepository.ts | 236 + src/repositories/ProcessoRepository.ts | 248 + src/repositories/UsuarioRepository.ts | 58 + src/server/app.ts | 34 + src/server/authMiddleware.ts | 33 + src/server/config/database.ts | 14 + src/server/index.ts | 1403 ++ src/server/prisma/schema.prisma | 275 + src/server/prismaClient.ts | 9 + src/server/routes/anexos.ts | 69 + src/server/routes/atendimentos.ts | 113 + src/server/routes/calculosJudiciais.ts | 889 ++ src/server/routes/clientes.ts | 35 + src/server/routes/dashboard.ts | 262 + src/server/routes/documentos-modelos.ts | 97 + src/server/routes/documentos.ts | 411 + src/server/routes/indicesMonetarios.ts | 161 + src/server/routes/pensaoAlimenticia.ts | 111 + src/server/routes/processos.ts | 192 + src/server/routes/processosAdministrativos.ts | 176 + src/server/routes/provas.ts | 241 + src/server/routes/tarefas.ts | 191 + src/server/services/BlockchainService.ts | 82 + src/server/services/CalculoJudicialService.ts | 1023 ++ .../services/FallbackMetadataCollector.ts | 45 + src/server/services/FileValidator.ts | 63 + src/server/services/IndiceMonetarioService.ts | 931 ++ src/server/services/MetadataCollector.ts | 246 + src/server/services/PdfService copy.ts | 153 + src/server/services/PdfService.ts | 360 + .../services/PensaoAlimenticiaService.ts | 94 + src/server/services/ProvaService.ts | 297 + src/server/services/ReportGenerator.ts | 994 ++ src/services/AuthService.ts | 51 + src/services/BlockchainService.ts | 73 + src/services/CalendarioService.ts | 22 + src/services/DocumentoService.ts | 109 + src/services/FileValidator.ts | 122 + src/services/NotificacaoService.ts | 26 + src/services/ProcessoService.ts | 63 + src/services/ProvaService.ts | 99 + src/services/ReportGenerator.ts | 96 + src/services/TribunalService.ts | 37 + src/services/api.ts | 68 + src/services/datajud.ts | 26 + src/services/nextcloud.ts | 60 + src/services/upload.ts | 47 + src/types/auth.ts | 14 + src/types/bcryptjs.d.ts | 9 + src/types/datajud.ts | 85 + src/types/entities.ts | 149 + src/types/env.d.ts | 21 + src/types/express.d.ts | 13 + src/types/financeiro.ts | 21 + src/types/processo.ts | 55 + src/types/processoAdministrativo.ts | 37 + src/types/usuario.ts | 27 + src/utils/classNames.ts | 3 + src/utils/constants.ts | 33 + src/utils/constants/datajud.ts | 20 + src/utils/constants/estados.ts | 29 + src/utils/constants/icons.ts | 21 + src/utils/constants/icons.tsx | 35 + src/utils/constants/tribunais.ts | 187 + src/utils/documentTemplates.ts | 202 + src/utils/documentVariables.ts | 43 + src/utils/escritorioConfig.ts | 43 + src/utils/exportPDF.ts | 50 + src/utils/format.ts | 12 + src/utils/formatters.ts | 158 + src/workers/ProvaWorker.ts | 55 + src/workers/startWorker.ts | 11 + ...c5e083dd1ba3ea118a0cffa6420.timestamp.json | 6 + ...8c5e083dd1ba3ea118a0cffa6420_forensic.json | 71 + ...b98a88c5e083dd1ba3ea118a0cffa6420_original | Bin 0 -> 138517 bytes ...8a88c5e083dd1ba3ea118a0cffa6420_report.pdf | Bin 0 -> 188196 bytes ...1cb1c542bdfacff8356ff4b5b20.timestamp.json | 6 + ...71cb1c542bdfacff8356ff4b5b20_forensic.json | 71 + ...f7dcd71cb1c542bdfacff8356ff4b5b20_original | Bin 0 -> 187041 bytes ...dcd71cb1c542bdfacff8356ff4b5b20_report.pdf | Bin 0 -> 297163 bytes ...1043e3cc3bf46f136f6c9184ff1.timestamp.json | 6 + ...51043e3cc3bf46f136f6c9184ff1_forensic.json | 71 + ...dce7451043e3cc3bf46f136f6c9184ff1_original | Bin 0 -> 420395 bytes ...e7451043e3cc3bf46f136f6c9184ff1_report.pdf | Bin 0 -> 1136 bytes ...36ec518fab1ceaf5ecb049a43a8.timestamp.json | 6 + ...936ec518fab1ceaf5ecb049a43a8_forensic.json | 71 + ...f971b936ec518fab1ceaf5ecb049a43a8_original | Bin 0 -> 2293916 bytes ...71b936ec518fab1ceaf5ecb049a43a8_report.pdf | Bin 0 -> 2122185 bytes ...9d0d6afb29484982a0f6989c297.timestamp.json | 6 + ...09d0d6afb29484982a0f6989c297_forensic.json | 71 + ...67e3609d0d6afb29484982a0f6989c297_original | Bin 0 -> 252522 bytes ...e3609d0d6afb29484982a0f6989c297_report.pdf | Bin 0 -> 5502 bytes ...02a9b617e309ff37d1376b6791c.timestamp.json | 6 + ...502a9b617e309ff37d1376b6791c_forensic.json | 71 + ...6cfe0502a9b617e309ff37d1376b6791c_original | Bin 0 -> 435742 bytes ...fe0502a9b617e309ff37d1376b6791c_report.pdf | Bin 0 -> 385726 bytes ...3034c66a14db51affaed155ca50.timestamp.json | 6 + ...b3034c66a14db51affaed155ca50_forensic.json | 71 + ...cf57db3034c66a14db51affaed155ca50_original | Bin 0 -> 106875 bytes ...57db3034c66a14db51affaed155ca50_report.pdf | Bin 0 -> 97426 bytes ...5c512eb477f2c143c8fec6d3e20.timestamp.json | 6 + ...a5c512eb477f2c143c8fec6d3e20_forensic.json | 71 + ...9acf7a5c512eb477f2c143c8fec6d3e20_original | Bin 0 -> 115256 bytes ...cf7a5c512eb477f2c143c8fec6d3e20_report.pdf | Bin 0 -> 96083 bytes ...838faddd45563305a5dcef6309b.timestamp.json | 6 + ...a838faddd45563305a5dcef6309b_forensic.json | 71 + ...c014ea838faddd45563305a5dcef6309b_original | Bin 0 -> 310204 bytes ...14ea838faddd45563305a5dcef6309b_report.pdf | Bin 0 -> 268024 bytes ...866472378235f944fa3d77a98db.timestamp.json | 6 + ...003b0b866472378235f944fa3d77a98db_original | Bin 0 -> 1537576 bytes ...3b0b866472378235f944fa3d77a98db_report.pdf | Bin 0 -> 4962 bytes ...bd789a8072d83af42d4221d9008.timestamp.json | 6 + ...ebd789a8072d83af42d4221d9008_forensic.json | 71 + ...f7012ebd789a8072d83af42d4221d9008_original | Bin 0 -> 218653 bytes ...012ebd789a8072d83af42d4221d9008_report.pdf | Bin 0 -> 147660 bytes ...51e73f5b5d8943005768fd8594e.timestamp.json | 6 + ...651e73f5b5d8943005768fd8594e_forensic.json | 71 + ...cb94a651e73f5b5d8943005768fd8594e_original | Bin 0 -> 56925 bytes ...94a651e73f5b5d8943005768fd8594e_report.pdf | Bin 0 -> 112071 bytes ...80169c8a685c7d43e6e70fe7b6e.timestamp.json | 6 + ...780169c8a685c7d43e6e70fe7b6e_forensic.json | 71 + ...aea0a780169c8a685c7d43e6e70fe7b6e_original | Bin 0 -> 181684 bytes ...a0a780169c8a685c7d43e6e70fe7b6e_report.pdf | Bin 0 -> 324010 bytes ...6dee4067ba39e639ef619863fce.timestamp.json | 6 + ...f6dee4067ba39e639ef619863fce_forensic.json | 71 + ...3ca57f6dee4067ba39e639ef619863fce_original | Bin 0 -> 1307048 bytes ...a57f6dee4067ba39e639ef619863fce_report.pdf | Bin 0 -> 1213174 bytes ...70af728e072519d6dee19d76cbb.timestamp.json | 6 + ...970af728e072519d6dee19d76cbb_forensic.json | 71 + ...728a3970af728e072519d6dee19d76cbb_original | Bin 0 -> 137159 bytes ...8a3970af728e072519d6dee19d76cbb_report.pdf | Bin 0 -> 184498 bytes ...52e9259da686969dd28181c8b48.timestamp.json | 6 + ...052e9259da686969dd28181c8b48_forensic.json | 71 + ...2584c052e9259da686969dd28181c8b48_original | Bin 0 -> 88222 bytes ...84c052e9259da686969dd28181c8b48_report.pdf | Bin 0 -> 170447 bytes ...9a4259f82691dae7e2871414e5e.timestamp.json | 6 + ...89a4259f82691dae7e2871414e5e_forensic.json | 71 + ...8785589a4259f82691dae7e2871414e5e_original | Bin 0 -> 276158 bytes ...85589a4259f82691dae7e2871414e5e_report.pdf | Bin 0 -> 322927 bytes ...e8dcece75cb95823e67cca81bf8.timestamp.json | 6 + ...4e8dcece75cb95823e67cca81bf8_forensic.json | 71 + ...543b14e8dcece75cb95823e67cca81bf8_original | Bin 0 -> 81751 bytes ...3b14e8dcece75cb95823e67cca81bf8_report.pdf | Bin 0 -> 149499 bytes ...e952fae2de2216a8ba22382a70a.timestamp.json | 6 + ...de952fae2de2216a8ba22382a70a_forensic.json | 71 + ...19b63de952fae2de2216a8ba22382a70a_original | Bin 0 -> 981081 bytes ...b63de952fae2de2216a8ba22382a70a_report.pdf | Bin 0 -> 1186595 bytes ...ae81769021b347f526932038782.timestamp.json | 6 + ...bae81769021b347f526932038782_forensic.json | 71 + ...89c4abae81769021b347f526932038782_original | Bin 0 -> 265153 bytes ...c4abae81769021b347f526932038782_report.pdf | Bin 0 -> 186422 bytes ...4e459d8017799d5b92ad13cc94f.timestamp.json | 6 + ...d4e459d8017799d5b92ad13cc94f_forensic.json | 71 + ...c9bedd4e459d8017799d5b92ad13cc94f_original | Bin 0 -> 13384 bytes ...bedd4e459d8017799d5b92ad13cc94f_report.pdf | Bin 0 -> 4754 bytes ...393a5acaa05286d5d0bb2ee9255.timestamp.json | 6 + ...2393a5acaa05286d5d0bb2ee9255_forensic.json | 71 + ...6a0712393a5acaa05286d5d0bb2ee9255_original | Bin 0 -> 1424167 bytes ...0712393a5acaa05286d5d0bb2ee9255_report.pdf | Bin 0 -> 81923 bytes ...4e8f556a3c068943efe1dc2aa2a.timestamp.json | 6 + ...e4e8f556a3c068943efe1dc2aa2a_forensic.json | 71 + ...6dae7e4e8f556a3c068943efe1dc2aa2a_original | Bin 0 -> 18619 bytes ...ae7e4e8f556a3c068943efe1dc2aa2a_report.pdf | Bin 0 -> 16199 bytes ...ed46533fd07a54a1585a260b817.timestamp.json | 6 + ...9ed46533fd07a54a1585a260b817_forensic.json | 71 + ...805869ed46533fd07a54a1585a260b817_original | Bin 0 -> 202428 bytes ...5869ed46533fd07a54a1585a260b817_report.pdf | Bin 0 -> 164900 bytes ...0786b2fc070a8a921de7bb254b4.timestamp.json | 6 + ...f0786b2fc070a8a921de7bb254b4_forensic.json | 71 + ...927c4f0786b2fc070a8a921de7bb254b4_original | Bin 0 -> 845105 bytes ...7c4f0786b2fc070a8a921de7bb254b4_report.pdf | Bin 0 -> 4847 bytes tailwind.config.js | 12 + tsconfig.json | 28 + vite.config.ts | 28 + 423 files changed, 53287 insertions(+) create mode 100644 .env.example create mode 100644 .eslintrc.js create mode 100644 .github/copilot-instructions.md create mode 100644 .gitignore create mode 100644 .vite/deps/_metadata.json create mode 100644 .vite/deps/package.json create mode 100644 create_user.sql create mode 100644 index.html create mode 100644 old/list_files.php create mode 100644 old/process_queue.php create mode 100644 old/status.php create mode 100644 old/status_check.php create mode 100644 old/upload.php create mode 100644 old/upload_prova.php create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 postcss.config.js create mode 100644 prisma/migrations/20250325225406_advx/migration.sql create mode 100644 prisma/migrations/20250325233818_/migration.sql create mode 100644 prisma/migrations/20250326010603_add_dni_filhos_orgao_fields/migration.sql create mode 100644 prisma/migrations/20250326010937_add_rg_estado/migration.sql create mode 100644 prisma/migrations/20250326011822_add_new_fields_safe/migration.sql create mode 100644 prisma/migrations/20250326013104_fix_date_and_rg_fields/migration.sql create mode 100644 prisma/migrations/20250326013839_add_field_limits/migration.sql create mode 100644 prisma/migrations/20250326020036_add_documentos/migration.sql create mode 100644 prisma/migrations/20250326142333_add_orgao_julgador_relation/migration.sql create mode 100644 prisma/migrations/20250326142604_remove_assunto_cnj/migration.sql create mode 100644 prisma/migrations/20250326150246_update_processo_fields/migration.sql create mode 100644 prisma/migrations/20250326152945_add_partes_processo/migration.sql create mode 100644 prisma/migrations/20250328011301_/migration.sql create mode 100644 prisma/migrations/20250328012117_add_percentual_entrada/migration.sql create mode 100644 prisma/migrations/20250328191303_add_tribunal_fields/migration.sql create mode 100644 prisma/migrations/20250328191600_add_tribunal_fields_safe/migration.sql create mode 100644 prisma/migrations/20250328222103_add_datajud_field/migration.sql create mode 100644 prisma/migrations/20250328223034_add_datajud_update/migration.sql create mode 100644 prisma/migrations/20250329220922_/migration.sql create mode 100644 prisma/migrations/20250330224534_/migration.sql create mode 100644 prisma/migrations/20250330232401_/migration.sql create mode 100644 prisma/migrations/20250330234121_/migration.sql create mode 100644 prisma/migrations/20250331000000_create_tarefas.sql create mode 100644 prisma/migrations/20250331000000_create_tarefas_schema.sql create mode 100644 prisma/migrations/20250331000004_add_atendimento_status_fields.sql create mode 100644 prisma/migrations/20250331001651_/migration.sql create mode 100644 prisma/migrations/20250331112550_create_tarefas/migration.sql create mode 100644 prisma/migrations/20250331145129_add_processo_resultado/migration.sql create mode 100644 prisma/migrations/20250331172731_add_data_conclusao_tarefa/migration.sql create mode 100644 prisma/migrations/20250331190725_create_anexos/migration.sql create mode 100644 prisma/migrations/20250402144403_add_documentos_tables/migration.sql create mode 100644 prisma/migrations/20250402145614_/migration.sql create mode 100644 prisma/migrations/20250402201206_create_configuracao_documento/migration.sql create mode 100644 prisma/migrations/20250403012106_update_configuracao_documento/migration.sql create mode 100644 prisma/migrations/20250403182625_add_escritorio_to_config/migration.sql create mode 100644 prisma/migrations/20250403184058_remove_escritorio_relation_from_config/migration.sql create mode 100644 prisma/migrations/20250403190651_/migration.sql create mode 100644 prisma/migrations/20250403220121_/migration.sql create mode 100644 prisma/migrations/20250403225241_/migration.sql create mode 100644 prisma/migrations/20250404175618_/migration.sql create mode 100644 prisma/migrations/XXXXXXXXXXXXXX_add_audiencia_report.sql create mode 100644 prisma/migrations/XXXXXXXXXXXXXX_add_dni_filhos_orgao_fields.sql create mode 100644 prisma/migrations/XXXXXXXXXXXXXX_add_documentos.sql create mode 100644 prisma/migrations/XXXXXXXXXXXXXX_add_field_limits.sql create mode 100644 prisma/migrations/XXXXXXXXXXXXXX_add_new_fields_safe.sql create mode 100644 prisma/migrations/XXXXXXXXXXXXXX_add_partes_processo.sql create mode 100644 prisma/migrations/XXXXXXXXXXXXXX_add_processos_judiciais.sql create mode 100644 prisma/migrations/XXXXXXXXXXXXXX_add_rg_estado.sql create mode 100644 prisma/migrations/XXXXXXXXXXXXXX_fix_date_and_rg_fields.sql create mode 100644 prisma/migrations/XXXXXXXXXXXXXX_fix_date_and_rg_fields_safe.sql create mode 100644 prisma/migrations/XXXXXXXXXXXXXX_fix_rg_fields.sql create mode 100644 prisma/migrations/XXXXXXXXXXXXXX_update_processo_fields.sql create mode 100644 prisma/migrations/[timestamp]_add_audiencia_report.sql create mode 100644 prisma/migrations/[timestamp]_add_audiencia_report_safe.sql create mode 100644 prisma/migrations/[timestamp]_add_datajud_field.sql create mode 100644 prisma/migrations/[timestamp]_add_datajud_update.sql create mode 100644 prisma/migrations/[timestamp]_add_documentos_tables.ts create mode 100644 prisma/migrations/[timestamp]_add_pdf_config.ts create mode 100644 prisma/migrations/[timestamp]_add_process_datajud_fields.sql create mode 100644 prisma/migrations/[timestamp]_add_template_config.ts create mode 100644 prisma/migrations/[timestamp]_add_timbrado_config.ts create mode 100644 prisma/migrations/[timestamp]_add_tribunal_fields.sql create mode 100644 prisma/migrations/[timestamp]_add_tribunal_fields_safe.sql create mode 100644 prisma/migrations/[timestamp]_add_valor_pago_parcela.sql create mode 100644 prisma/migrations/[timestamp]_create_anexos.sql create mode 100644 prisma/migrations/[timestamp]_create_configuracao_documento.ts create mode 100644 prisma/migrations/[timestamp]_fix_audiencia_schema.sql create mode 100644 prisma/migrations/[timestamp]_fix_migrations.sql create mode 100644 prisma/migrations/[timestamp]_fix_processo_id_type.sql create mode 100644 prisma/migrations/[timestamp]_init.sql create mode 100644 prisma/migrations/[timestamp]_make_tribunal_fields_required.sql create mode 100644 prisma/migrations/[timestamp]_update_audiencias_safe.sql create mode 100644 prisma/migrations/[timestamp]_update_configuracao_documento.ts create mode 100644 prisma/migrations/[timestamp]_update_processo_tribunais.sql create mode 100644 prisma/migrations/fix_all_constraints.sql create mode 100644 prisma/migrations/fix_all_uuid_types.sql create mode 100644 prisma/migrations/fix_all_uuids.sql create mode 100644 prisma/migrations/fix_partes_processo_schema.sql create mode 100644 prisma/migrations/fix_processo_id_generation.sql create mode 100644 prisma/migrations/fix_uuid_types.sql create mode 100644 prisma/migrations/migration_lock.toml create mode 100644 prisma/migrations/seed.ts create mode 100644 prisma/schema.prisma create mode 100644 prisma/seed.ts create mode 100644 public/.htaccess create mode 100644 public/tinymce/langs/pt_BR.js create mode 100644 public/uploads/Timbrado_2025.pdf create mode 100644 public/uploads/timbrado-1743643409305-Documento a4 Papel timbrado dentista azul.png create mode 100644 public/uploads/timbrado-1743643506911-timbradomv.png create mode 100644 public/uploads/timbrado-1743643653538-timbradomv.png create mode 100644 public/uploads/timbrado-1743643839450-timbradomv.png create mode 100644 public/uploads/timbrado-1743706131923-532750456-Timbrado_2025.pdf create mode 100644 public/uploads/timbrado-1744311885048-12655920-Timbrado_2025.pdf create mode 100644 scripts/create_admin_user.ts create mode 100644 scripts/install-deps.bat create mode 100644 scripts/migrateProcessos.ts create mode 100644 settings.json create mode 100644 src/App.tsx create mode 100644 src/components/AdminRoute.tsx create mode 100644 src/components/Dashboard.tsx create mode 100644 src/components/DocumentosPage.tsx create mode 100644 src/components/ErrorBoundary.tsx create mode 100644 src/components/LoginPage.tsx create mode 100644 src/components/PrivateRoute.tsx create mode 100644 src/components/ProtectedRoute.tsx create mode 100644 src/components/Sidebar.tsx create mode 100644 src/components/atendimentos/AgendamentoCalendario.tsx create mode 100644 src/components/atendimentos/AgendamentoForm.tsx create mode 100644 src/components/atendimentos/AtendimentoDetalhes.tsx create mode 100644 src/components/atendimentos/AtendimentoForm.tsx create mode 100644 src/components/atendimentos/AtendimentoModal.tsx create mode 100644 src/components/atendimentos/AtendimentosPage.tsx create mode 100644 src/components/calculos/CalculosList.tsx create mode 100644 src/components/calculos/DetalhePensaoAlimenticia.tsx create mode 100644 src/components/calculos/DetalhesCalculo.tsx create mode 100644 src/components/calculos/NovoCalculo.tsx create mode 100644 src/components/calculos/NovoPensaoAlimenticia.tsx create mode 100644 src/components/clientes/ClienteDetalhes.tsx create mode 100644 src/components/clientes/ClienteModal.tsx create mode 100644 src/components/clientes/ClientesList.tsx create mode 100644 src/components/clientes/ClientesPage.tsx create mode 100644 src/components/dashboard/AlertasPrazos.tsx create mode 100644 src/components/dashboard/AtividadesRecentes.tsx create mode 100644 src/components/dashboard/Card.tsx create mode 100644 src/components/dashboard/DashboardLayout.tsx create mode 100644 src/components/dashboard/KPIsAdvogados.tsx create mode 100644 src/components/dashboard/TaxaSucessoCard.tsx create mode 100644 src/components/dashboard/charts/MapaCalor.tsx create mode 100644 src/components/dashboard/charts/PrevisaoReceitasChart.tsx create mode 100644 src/components/dashboard/charts/ProcessosCharts.tsx create mode 100644 src/components/dashboard/charts/ProcessosEvolucao.tsx create mode 100644 src/components/dashboard/charts/TaxaSucessoChart.tsx create mode 100644 src/components/dashboard/stats/AtendimentosStats.tsx create mode 100644 src/components/dashboard/stats/FinanceiroStats.tsx create mode 100644 src/components/dashboard/stats/KPIsFinanceiros.tsx create mode 100644 src/components/dashboard/stats/ProcessosStats.tsx create mode 100644 src/components/dashboard/stats/TarefasStats.tsx create mode 100644 src/components/documentos/ConfiguracaoDocumento.tsx create mode 100644 src/components/documentos/DocumentoEditor.tsx create mode 100644 src/components/documentos/DocumentoViewer.tsx create mode 100644 src/components/documentos/DocumentosPage.tsx create mode 100644 src/components/documentos/GerenciarTemplates.tsx create mode 100644 src/components/documentos/NovoDocumento.tsx create mode 100644 src/components/forms/FormCheckbox.tsx create mode 100644 src/components/forms/FormInput.tsx create mode 100644 src/components/forms/FormSelect.tsx create mode 100644 src/components/forms/index.ts create mode 100644 src/components/forms/index.tsx create mode 100644 src/components/layouts/MainLayout.tsx create mode 100644 src/components/perfil/PerfilPage.tsx create mode 100644 src/components/processos/AbaFinanceiro.tsx create mode 100644 src/components/processos/AbaInformacoes.tsx create mode 100644 src/components/processos/AbaMovimentacoes.tsx create mode 100644 src/components/processos/AudienciaModal.tsx create mode 100644 src/components/processos/DialogCustaProcessual.tsx create mode 100644 src/components/processos/DialogHonorario.tsx create mode 100644 src/components/processos/MovimentacoesTimeline.tsx create mode 100644 src/components/processos/ParteProcessoModal.tsx create mode 100644 src/components/processos/ProcessoAdminModal.tsx create mode 100644 src/components/processos/ProcessoCard.tsx create mode 100644 src/components/processos/ProcessoDetalhes.tsx create mode 100644 src/components/processos/ProcessoForm.tsx create mode 100644 src/components/processos/ProcessoInfo.tsx create mode 100644 src/components/processos/ProcessoModal.tsx create mode 100644 src/components/processos/ProcessoView.tsx create mode 100644 src/components/processos/ProcessosList.tsx create mode 100644 src/components/processos/ProcessosPage.tsx create mode 100644 src/components/processos/dialogs/DialogCustaProcessual.tsx create mode 100644 src/components/processos/dialogs/DialogHonorario.tsx create mode 100644 src/components/processos/dialogs/DialogParcela.tsx create mode 100644 src/components/processos/dialogs/index.ts create mode 100644 src/components/processos/tables/CustasTable.tsx create mode 100644 src/components/processosAdministrativos/CustaAdministrativaPanel.tsx create mode 100644 src/components/processosAdministrativos/MovimentacaoAdminActions.tsx create mode 100644 src/components/processosAdministrativos/MovimentacaoAdministrativaDialog.tsx create mode 100644 src/components/processosAdministrativos/ProcessoAdminDetalhes.tsx create mode 100644 src/components/processosAdministrativos/ProcessoAdminModal.tsx create mode 100644 src/components/processosAdministrativos/ProcessoAdministrativoList.tsx create mode 100644 src/components/provas/AdminProvas.tsx create mode 100644 src/components/provas/ClientProvaUpload.tsx create mode 100644 src/components/provas/ProvaStatus.tsx create mode 100644 src/components/provas/ProvaUpload.tsx create mode 100644 src/components/provas/PublicProvaStatus.tsx create mode 100644 src/components/provas/PublicVerificarProva.tsx create mode 100644 src/components/provas/VerificarProva.tsx create mode 100644 src/components/tarefas/AnexosList.tsx create mode 100644 src/components/tarefas/ComentariosList.tsx create mode 100644 src/components/tarefas/SubtarefasList.tsx create mode 100644 src/components/tarefas/TarefaCard.tsx create mode 100644 src/components/tarefas/TarefaKanban.tsx create mode 100644 src/components/tarefas/TarefaModal.tsx create mode 100644 src/components/tarefas/TarefasList.tsx create mode 100644 src/components/tarefas/TarefasPage.tsx create mode 100644 src/components/ui/Button.tsx create mode 100644 src/components/ui/Card.tsx create mode 100644 src/components/ui/FormInputs.tsx create mode 100644 src/components/ui/Tabs.tsx create mode 100644 src/components/ui/index.ts create mode 100644 src/components/usuarios/UsuarioForm.tsx create mode 100644 src/components/usuarios/UsuariosPage.tsx create mode 100644 src/config/database.ts create mode 100644 src/context/AuthContext.tsx create mode 100644 src/context/ProcessoContext.tsx create mode 100644 src/contexts/AuthContext.tsx create mode 100644 src/contexts/ThemeContext.tsx create mode 100644 src/env.d.ts create mode 100644 src/hooks/useAudiencias.ts create mode 100644 src/hooks/useAuth.ts create mode 100644 src/hooks/useClientes.ts create mode 100644 src/hooks/useComentarios.ts create mode 100644 src/hooks/useCustasProcessuais.ts create mode 100644 src/hooks/useDashboardStats.ts create mode 100644 src/hooks/useDatajud.ts create mode 100644 src/hooks/useHonorarios.ts create mode 100644 src/hooks/usePartesProcesso.ts create mode 100644 src/hooks/useProcessoMovimentacoes.ts create mode 100644 src/hooks/useProcessos.ts create mode 100644 src/hooks/useProcessosAdministrativos.ts create mode 100644 src/hooks/useSubtarefas.ts create mode 100644 src/hooks/useTarefas.ts create mode 100644 src/index.css create mode 100644 src/index.tsx create mode 100644 src/interfaces/CustaProcessual.ts create mode 100644 src/lib/api.ts create mode 100644 src/lib/prisma.ts create mode 100644 src/middleware/auth.ts create mode 100644 src/repositories/BaseRepository.ts create mode 100644 src/repositories/ClienteRepository.ts create mode 100644 src/repositories/CustaProcessualRepository.ts create mode 100644 src/repositories/DialogParcela.tsx create mode 100644 src/repositories/HonorarioRepository.ts create mode 100644 src/repositories/OrgaoJulgadorRepository.ts create mode 100644 src/repositories/ProcessoAdministrativoRepository.ts create mode 100644 src/repositories/ProcessoRepository.ts create mode 100644 src/repositories/UsuarioRepository.ts create mode 100644 src/server/app.ts create mode 100644 src/server/authMiddleware.ts create mode 100644 src/server/config/database.ts create mode 100644 src/server/index.ts create mode 100644 src/server/prisma/schema.prisma create mode 100644 src/server/prismaClient.ts create mode 100644 src/server/routes/anexos.ts create mode 100644 src/server/routes/atendimentos.ts create mode 100644 src/server/routes/calculosJudiciais.ts create mode 100644 src/server/routes/clientes.ts create mode 100644 src/server/routes/dashboard.ts create mode 100644 src/server/routes/documentos-modelos.ts create mode 100644 src/server/routes/documentos.ts create mode 100644 src/server/routes/indicesMonetarios.ts create mode 100644 src/server/routes/pensaoAlimenticia.ts create mode 100644 src/server/routes/processos.ts create mode 100644 src/server/routes/processosAdministrativos.ts create mode 100644 src/server/routes/provas.ts create mode 100644 src/server/routes/tarefas.ts create mode 100644 src/server/services/BlockchainService.ts create mode 100644 src/server/services/CalculoJudicialService.ts create mode 100644 src/server/services/FallbackMetadataCollector.ts create mode 100644 src/server/services/FileValidator.ts create mode 100644 src/server/services/IndiceMonetarioService.ts create mode 100644 src/server/services/MetadataCollector.ts create mode 100644 src/server/services/PdfService copy.ts create mode 100644 src/server/services/PdfService.ts create mode 100644 src/server/services/PensaoAlimenticiaService.ts create mode 100644 src/server/services/ProvaService.ts create mode 100644 src/server/services/ReportGenerator.ts create mode 100644 src/services/AuthService.ts create mode 100644 src/services/BlockchainService.ts create mode 100644 src/services/CalendarioService.ts create mode 100644 src/services/DocumentoService.ts create mode 100644 src/services/FileValidator.ts create mode 100644 src/services/NotificacaoService.ts create mode 100644 src/services/ProcessoService.ts create mode 100644 src/services/ProvaService.ts create mode 100644 src/services/ReportGenerator.ts create mode 100644 src/services/TribunalService.ts create mode 100644 src/services/api.ts create mode 100644 src/services/datajud.ts create mode 100644 src/services/nextcloud.ts create mode 100644 src/services/upload.ts create mode 100644 src/types/auth.ts create mode 100644 src/types/bcryptjs.d.ts create mode 100644 src/types/datajud.ts create mode 100644 src/types/entities.ts create mode 100644 src/types/env.d.ts create mode 100644 src/types/express.d.ts create mode 100644 src/types/financeiro.ts create mode 100644 src/types/processo.ts create mode 100644 src/types/processoAdministrativo.ts create mode 100644 src/types/usuario.ts create mode 100644 src/utils/classNames.ts create mode 100644 src/utils/constants.ts create mode 100644 src/utils/constants/datajud.ts create mode 100644 src/utils/constants/estados.ts create mode 100644 src/utils/constants/icons.ts create mode 100644 src/utils/constants/icons.tsx create mode 100644 src/utils/constants/tribunais.ts create mode 100644 src/utils/documentTemplates.ts create mode 100644 src/utils/documentVariables.ts create mode 100644 src/utils/escritorioConfig.ts create mode 100644 src/utils/exportPDF.ts create mode 100644 src/utils/format.ts create mode 100644 src/utils/formatters.ts create mode 100644 src/workers/ProvaWorker.ts create mode 100644 src/workers/startWorker.ts create mode 100644 storage/provas/0263e0d8652eedb9c46f451f128288fb98a88c5e083dd1ba3ea118a0cffa6420.timestamp.json create mode 100644 storage/provas/0263e0d8652eedb9c46f451f128288fb98a88c5e083dd1ba3ea118a0cffa6420_forensic.json create mode 100644 storage/provas/0263e0d8652eedb9c46f451f128288fb98a88c5e083dd1ba3ea118a0cffa6420_original create mode 100644 storage/provas/0263e0d8652eedb9c46f451f128288fb98a88c5e083dd1ba3ea118a0cffa6420_report.pdf create mode 100644 storage/provas/040484e6e9f3e5afd9ecf2d93d52ff6f7dcd71cb1c542bdfacff8356ff4b5b20.timestamp.json create mode 100644 storage/provas/040484e6e9f3e5afd9ecf2d93d52ff6f7dcd71cb1c542bdfacff8356ff4b5b20_forensic.json create mode 100644 storage/provas/040484e6e9f3e5afd9ecf2d93d52ff6f7dcd71cb1c542bdfacff8356ff4b5b20_original create mode 100644 storage/provas/040484e6e9f3e5afd9ecf2d93d52ff6f7dcd71cb1c542bdfacff8356ff4b5b20_report.pdf create mode 100644 storage/provas/11b89684b21b538b08c8aec573f0f5edce7451043e3cc3bf46f136f6c9184ff1.timestamp.json create mode 100644 storage/provas/11b89684b21b538b08c8aec573f0f5edce7451043e3cc3bf46f136f6c9184ff1_forensic.json create mode 100644 storage/provas/11b89684b21b538b08c8aec573f0f5edce7451043e3cc3bf46f136f6c9184ff1_original create mode 100644 storage/provas/11b89684b21b538b08c8aec573f0f5edce7451043e3cc3bf46f136f6c9184ff1_report.pdf create mode 100644 storage/provas/2a68ec14674edbd98cf1cc2b78dca9df971b936ec518fab1ceaf5ecb049a43a8.timestamp.json create mode 100644 storage/provas/2a68ec14674edbd98cf1cc2b78dca9df971b936ec518fab1ceaf5ecb049a43a8_forensic.json create mode 100644 storage/provas/2a68ec14674edbd98cf1cc2b78dca9df971b936ec518fab1ceaf5ecb049a43a8_original create mode 100644 storage/provas/2a68ec14674edbd98cf1cc2b78dca9df971b936ec518fab1ceaf5ecb049a43a8_report.pdf create mode 100644 storage/provas/2c2e60415fb60af479395bb9e4e351e67e3609d0d6afb29484982a0f6989c297.timestamp.json create mode 100644 storage/provas/2c2e60415fb60af479395bb9e4e351e67e3609d0d6afb29484982a0f6989c297_forensic.json create mode 100644 storage/provas/2c2e60415fb60af479395bb9e4e351e67e3609d0d6afb29484982a0f6989c297_original create mode 100644 storage/provas/2c2e60415fb60af479395bb9e4e351e67e3609d0d6afb29484982a0f6989c297_report.pdf create mode 100644 storage/provas/2eef0033c02bc46b7507d4d526af3f16cfe0502a9b617e309ff37d1376b6791c.timestamp.json create mode 100644 storage/provas/2eef0033c02bc46b7507d4d526af3f16cfe0502a9b617e309ff37d1376b6791c_forensic.json create mode 100644 storage/provas/2eef0033c02bc46b7507d4d526af3f16cfe0502a9b617e309ff37d1376b6791c_original create mode 100644 storage/provas/2eef0033c02bc46b7507d4d526af3f16cfe0502a9b617e309ff37d1376b6791c_report.pdf create mode 100644 storage/provas/2f536b9385d1120f37be055d67f31e8cf57db3034c66a14db51affaed155ca50.timestamp.json create mode 100644 storage/provas/2f536b9385d1120f37be055d67f31e8cf57db3034c66a14db51affaed155ca50_forensic.json create mode 100644 storage/provas/2f536b9385d1120f37be055d67f31e8cf57db3034c66a14db51affaed155ca50_original create mode 100644 storage/provas/2f536b9385d1120f37be055d67f31e8cf57db3034c66a14db51affaed155ca50_report.pdf create mode 100644 storage/provas/304bc25a7074d5630677804d9ad17e49acf7a5c512eb477f2c143c8fec6d3e20.timestamp.json create mode 100644 storage/provas/304bc25a7074d5630677804d9ad17e49acf7a5c512eb477f2c143c8fec6d3e20_forensic.json create mode 100644 storage/provas/304bc25a7074d5630677804d9ad17e49acf7a5c512eb477f2c143c8fec6d3e20_original create mode 100644 storage/provas/304bc25a7074d5630677804d9ad17e49acf7a5c512eb477f2c143c8fec6d3e20_report.pdf create mode 100644 storage/provas/421ac813d742d20a11cd0777dcd8d01c014ea838faddd45563305a5dcef6309b.timestamp.json create mode 100644 storage/provas/421ac813d742d20a11cd0777dcd8d01c014ea838faddd45563305a5dcef6309b_forensic.json create mode 100644 storage/provas/421ac813d742d20a11cd0777dcd8d01c014ea838faddd45563305a5dcef6309b_original create mode 100644 storage/provas/421ac813d742d20a11cd0777dcd8d01c014ea838faddd45563305a5dcef6309b_report.pdf create mode 100644 storage/provas/476b5e51d53267ea1d834910c2b3cfd003b0b866472378235f944fa3d77a98db.timestamp.json create mode 100644 storage/provas/476b5e51d53267ea1d834910c2b3cfd003b0b866472378235f944fa3d77a98db_original create mode 100644 storage/provas/476b5e51d53267ea1d834910c2b3cfd003b0b866472378235f944fa3d77a98db_report.pdf create mode 100644 storage/provas/526b6a67403adcb4503cd525a2b2dc5f7012ebd789a8072d83af42d4221d9008.timestamp.json create mode 100644 storage/provas/526b6a67403adcb4503cd525a2b2dc5f7012ebd789a8072d83af42d4221d9008_forensic.json create mode 100644 storage/provas/526b6a67403adcb4503cd525a2b2dc5f7012ebd789a8072d83af42d4221d9008_original create mode 100644 storage/provas/526b6a67403adcb4503cd525a2b2dc5f7012ebd789a8072d83af42d4221d9008_report.pdf create mode 100644 storage/provas/53777de99a8d492ccddc080708e5c51cb94a651e73f5b5d8943005768fd8594e.timestamp.json create mode 100644 storage/provas/53777de99a8d492ccddc080708e5c51cb94a651e73f5b5d8943005768fd8594e_forensic.json create mode 100644 storage/provas/53777de99a8d492ccddc080708e5c51cb94a651e73f5b5d8943005768fd8594e_original create mode 100644 storage/provas/53777de99a8d492ccddc080708e5c51cb94a651e73f5b5d8943005768fd8594e_report.pdf create mode 100644 storage/provas/56973f0239ba00b70fb900b7bec64c9aea0a780169c8a685c7d43e6e70fe7b6e.timestamp.json create mode 100644 storage/provas/56973f0239ba00b70fb900b7bec64c9aea0a780169c8a685c7d43e6e70fe7b6e_forensic.json create mode 100644 storage/provas/56973f0239ba00b70fb900b7bec64c9aea0a780169c8a685c7d43e6e70fe7b6e_original create mode 100644 storage/provas/56973f0239ba00b70fb900b7bec64c9aea0a780169c8a685c7d43e6e70fe7b6e_report.pdf create mode 100644 storage/provas/6db243e970f66ffccbbc795d9f729943ca57f6dee4067ba39e639ef619863fce.timestamp.json create mode 100644 storage/provas/6db243e970f66ffccbbc795d9f729943ca57f6dee4067ba39e639ef619863fce_forensic.json create mode 100644 storage/provas/6db243e970f66ffccbbc795d9f729943ca57f6dee4067ba39e639ef619863fce_original create mode 100644 storage/provas/6db243e970f66ffccbbc795d9f729943ca57f6dee4067ba39e639ef619863fce_report.pdf create mode 100644 storage/provas/6db8feaddeb87691131bf256312395f728a3970af728e072519d6dee19d76cbb.timestamp.json create mode 100644 storage/provas/6db8feaddeb87691131bf256312395f728a3970af728e072519d6dee19d76cbb_forensic.json create mode 100644 storage/provas/6db8feaddeb87691131bf256312395f728a3970af728e072519d6dee19d76cbb_original create mode 100644 storage/provas/6db8feaddeb87691131bf256312395f728a3970af728e072519d6dee19d76cbb_report.pdf create mode 100644 storage/provas/6ff9a1c29a326654e4fb9e47076a2b22584c052e9259da686969dd28181c8b48.timestamp.json create mode 100644 storage/provas/6ff9a1c29a326654e4fb9e47076a2b22584c052e9259da686969dd28181c8b48_forensic.json create mode 100644 storage/provas/6ff9a1c29a326654e4fb9e47076a2b22584c052e9259da686969dd28181c8b48_original create mode 100644 storage/provas/6ff9a1c29a326654e4fb9e47076a2b22584c052e9259da686969dd28181c8b48_report.pdf create mode 100644 storage/provas/787eb21764d7b5a82b011c758e3f6fd8785589a4259f82691dae7e2871414e5e.timestamp.json create mode 100644 storage/provas/787eb21764d7b5a82b011c758e3f6fd8785589a4259f82691dae7e2871414e5e_forensic.json create mode 100644 storage/provas/787eb21764d7b5a82b011c758e3f6fd8785589a4259f82691dae7e2871414e5e_original create mode 100644 storage/provas/787eb21764d7b5a82b011c758e3f6fd8785589a4259f82691dae7e2871414e5e_report.pdf create mode 100644 storage/provas/8e87a5cbe0a833b1b1e25febf95f7b3543b14e8dcece75cb95823e67cca81bf8.timestamp.json create mode 100644 storage/provas/8e87a5cbe0a833b1b1e25febf95f7b3543b14e8dcece75cb95823e67cca81bf8_forensic.json create mode 100644 storage/provas/8e87a5cbe0a833b1b1e25febf95f7b3543b14e8dcece75cb95823e67cca81bf8_original create mode 100644 storage/provas/8e87a5cbe0a833b1b1e25febf95f7b3543b14e8dcece75cb95823e67cca81bf8_report.pdf create mode 100644 storage/provas/98b845e1a69ff104955b1385c7b421b19b63de952fae2de2216a8ba22382a70a.timestamp.json create mode 100644 storage/provas/98b845e1a69ff104955b1385c7b421b19b63de952fae2de2216a8ba22382a70a_forensic.json create mode 100644 storage/provas/98b845e1a69ff104955b1385c7b421b19b63de952fae2de2216a8ba22382a70a_original create mode 100644 storage/provas/98b845e1a69ff104955b1385c7b421b19b63de952fae2de2216a8ba22382a70a_report.pdf create mode 100644 storage/provas/af2ba4028552b2702182e1778c28f2489c4abae81769021b347f526932038782.timestamp.json create mode 100644 storage/provas/af2ba4028552b2702182e1778c28f2489c4abae81769021b347f526932038782_forensic.json create mode 100644 storage/provas/af2ba4028552b2702182e1778c28f2489c4abae81769021b347f526932038782_original create mode 100644 storage/provas/af2ba4028552b2702182e1778c28f2489c4abae81769021b347f526932038782_report.pdf create mode 100644 storage/provas/c20706fa05a3f40f0ff5c927049d510c9bedd4e459d8017799d5b92ad13cc94f.timestamp.json create mode 100644 storage/provas/c20706fa05a3f40f0ff5c927049d510c9bedd4e459d8017799d5b92ad13cc94f_forensic.json create mode 100644 storage/provas/c20706fa05a3f40f0ff5c927049d510c9bedd4e459d8017799d5b92ad13cc94f_original create mode 100644 storage/provas/c20706fa05a3f40f0ff5c927049d510c9bedd4e459d8017799d5b92ad13cc94f_report.pdf create mode 100644 storage/provas/c69409dc4e54eda97bf1b507ea9da526a0712393a5acaa05286d5d0bb2ee9255.timestamp.json create mode 100644 storage/provas/c69409dc4e54eda97bf1b507ea9da526a0712393a5acaa05286d5d0bb2ee9255_forensic.json create mode 100644 storage/provas/c69409dc4e54eda97bf1b507ea9da526a0712393a5acaa05286d5d0bb2ee9255_original create mode 100644 storage/provas/c69409dc4e54eda97bf1b507ea9da526a0712393a5acaa05286d5d0bb2ee9255_report.pdf create mode 100644 storage/provas/deabbec2bfc992e38f09211a770c7546dae7e4e8f556a3c068943efe1dc2aa2a.timestamp.json create mode 100644 storage/provas/deabbec2bfc992e38f09211a770c7546dae7e4e8f556a3c068943efe1dc2aa2a_forensic.json create mode 100644 storage/provas/deabbec2bfc992e38f09211a770c7546dae7e4e8f556a3c068943efe1dc2aa2a_original create mode 100644 storage/provas/deabbec2bfc992e38f09211a770c7546dae7e4e8f556a3c068943efe1dc2aa2a_report.pdf create mode 100644 storage/provas/eeb6c1c90cebb3e1bf15c58d585efc4805869ed46533fd07a54a1585a260b817.timestamp.json create mode 100644 storage/provas/eeb6c1c90cebb3e1bf15c58d585efc4805869ed46533fd07a54a1585a260b817_forensic.json create mode 100644 storage/provas/eeb6c1c90cebb3e1bf15c58d585efc4805869ed46533fd07a54a1585a260b817_original create mode 100644 storage/provas/eeb6c1c90cebb3e1bf15c58d585efc4805869ed46533fd07a54a1585a260b817_report.pdf create mode 100644 storage/provas/f08d01f0a08c01ed46d56ba930b8d24927c4f0786b2fc070a8a921de7bb254b4.timestamp.json create mode 100644 storage/provas/f08d01f0a08c01ed46d56ba930b8d24927c4f0786b2fc070a8a921de7bb254b4_forensic.json create mode 100644 storage/provas/f08d01f0a08c01ed46d56ba930b8d24927c4f0786b2fc070a8a921de7bb254b4_original create mode 100644 storage/provas/f08d01f0a08c01ed46d56ba930b8d24927c4f0786b2fc070a8a921de7bb254b4_report.pdf create mode 100644 tailwind.config.js create mode 100644 tsconfig.json create mode 100644 vite.config.ts diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..a7caf82 --- /dev/null +++ b/.env.example @@ -0,0 +1,12 @@ +PORT=5000 +BACKEND_URL=http://localhost:5000 +FRONTEND_URL=http://localhost:3000 +CORS_ORIGIN=http://localhost:3000 +NODE_ENV=development +DATABASE_URL="postgresql://user:password@localhost:5432/dbname" +DATAJUD_API_KEY=your_api_key_here + +# Nextcloud WebDAV Configuration +NEXTCLOUD_WEBDAV_URL= +NEXTCLOUD_USERNAME= +NEXTCLOUD_PASSWORD= diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..533031c --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,29 @@ +module.exports = { + parser: '@typescript-eslint/parser', + extends: [ + 'plugin:react/recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:react-hooks/recommended', + 'plugin:prettier/recommended' + ], + parserOptions: { + ecmaVersion: 2020, + sourceType: 'module', + ecmaFeatures: { + jsx: true + } + }, + plugins: ['react', '@typescript-eslint', 'react-hooks'], + rules: { + 'react/react-in-jsx-scope': 'off', + 'react/prop-types': 'off', + '@typescript-eslint/explicit-function-return-type': 'off', + '@typescript-eslint/no-explicit-any': 'off', + 'prettier/prettier': ['error', {}, { usePrettierrc: true }] + }, + settings: { + react: { + version: 'detect' + } + } +}; diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 0000000..41139d2 --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1,61 @@ +Instruções para o GitHub Copilot +Este arquivo fornece instruções específicas para o GitHub Copilot ao trabalhar neste projeto. O objetivo é garantir a geração de código de alta qualidade, evitar erros comuns e otimizar o processo de resolução de problemas. + +Contexto do Projeto + +Objetivo: criar um sistema de gestão de advocacia completo. + + +Instruções Específicas +Banco de Dados: +* **NÃO RESETAR O BANCO DE DADOS EM HIPÓTESE ALGUMA.** +* Ao criar ou modificar scripts que interagem com o banco de dados, priorize a segurança e a integridade dos dados. +* Sempre use prepared statements ou consultas parametrizadas para evitar injeção de SQL. +* Antes de executar qualquer operação de escrita (INSERT, UPDATE, DELETE), verifique se os dados são válidos e se o usuário tem permissão para realizar a ação. +* Ao criar novas tabelas ou colunas, defina tipos de dados apropriados e restrições de integridade (NOT NULL, UNIQUE, etc.). +* Sempre faça backup do banco de dados antes de realizar alterações estruturais significativas. +Prevenção de Erros: +* Priorize a prevenção de erros durante a geração de código. +* Implemente tratamento de erros robusto em todas as funções e rotas. +* Use validação de dados para garantir que os dados de entrada estejam no formato correto. +* Sempre verifique se as variáveis estão definidas antes de usá-las. +* Evite o uso de "magic numbers" ou strings literais diretamente no código. Em vez disso, use constantes ou variáveis com nomes significativos. +* Use linting e formatação de código para garantir a consistência e legibilidade do código. +Resolução de Problemas: +* Ao resolver problemas, foque unicamente na solução do problema em questão. +* Evite criar novos problemas ou efeitos colaterais indesejados. +* Antes de implementar uma solução, analise cuidadosamente o problema e suas possíveis causas. +* Use debuggers e logs para identificar a causa raiz do problema. +* Teste a solução em um ambiente de desenvolvimento antes de aplicá-la em produção. +* Documente a solução e as lições aprendidas para evitar que o problema ocorra novamente. +Segurança: +* Sempre sanitize os dados de entrada para evitar ataques de injeção (SQL, XSS, etc.). +* Use criptografia para proteger dados confidenciais (senhas, chaves de API, etc.). +* Implemente autenticação e autorização adequadas para proteger as rotas e recursos da API. +* Mantenha as dependências atualizadas para corrigir vulnerabilidades de segurança. +* Siga as práticas recomendadas de segurança para Node.js e PostgreSQL. +Exemplos +Exemplo de Comentário: +javascript +Copiar + + // Função para criar um novo usuário no banco de dados. + // Certifique-se de validar os dados antes de inserir no banco. + async function createUser(userData) { + // ... + } +Exemplo de Tratamento de Erro: +javascript +Copiar + + try { + const result = await db.query('SELECT * FROM users WHERE id = $1', [userId]); + return result.rows[0]; + } catch (error) { + console.error('Erro ao buscar usuário:', error); + throw new Error('Falha ao buscar usuário.'); + } +Notas Adicionais +Este arquivo será atualizado conforme necessário para refletir as necessidades e os desafios do projeto. +Por favor, consulte este arquivo regularmente para garantir que você esteja seguindo as diretrizes mais recentes. +Se você tiver alguma dúvida ou sugestão, entre em contato com [seu nome/equipe]. \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..66af2e5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +node_modules +dist +.env +.env.local +.env.*.local +*.log +.DS_Store +coverage +.vscode diff --git a/.vite/deps/_metadata.json b/.vite/deps/_metadata.json new file mode 100644 index 0000000..10a6c13 --- /dev/null +++ b/.vite/deps/_metadata.json @@ -0,0 +1,8 @@ +{ + "hash": "8cb35725", + "configHash": "f0a530a0", + "lockfileHash": "ff4b1e25", + "browserHash": "24e5231a", + "optimized": {}, + "chunks": {} +} \ No newline at end of file diff --git a/.vite/deps/package.json b/.vite/deps/package.json new file mode 100644 index 0000000..3dbc1ca --- /dev/null +++ b/.vite/deps/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/create_user.sql b/create_user.sql new file mode 100644 index 0000000..e69de29 diff --git a/index.html b/index.html new file mode 100644 index 0000000..5b126a1 --- /dev/null +++ b/index.html @@ -0,0 +1,13 @@ + + + + + + + AdvX - Sistema de Advocacia + + +
+ + + diff --git a/old/list_files.php b/old/list_files.php new file mode 100644 index 0000000..4cbbb8c --- /dev/null +++ b/old/list_files.php @@ -0,0 +1,144 @@ + + + + + + Lista de Arquivos Processados + + + + +
+

Lista de Arquivos Processados

+ + + + + + + + + + + + + + + +
Nome do ArquivoData de Modificação
+ + + +
+ +
+ + + + + + + diff --git a/old/process_queue.php b/old/process_queue.php new file mode 100644 index 0000000..809f139 --- /dev/null +++ b/old/process_queue.php @@ -0,0 +1,508 @@ +connect_error) { + log_message("Connection failed: " . $mysqli->connect_error, 'ERROR'); + exit(1); // Sair com erro + } + + // Assegurar que as mensagens de log incluam o ID do processo + $process_id = getmypid(); + log_message("Processo $process_id: Processando arquivo ID " . $row['id'] . ": " . $row['file_path'], 'INFO'); + + try { + $file_path = $row['file_path']; + $queue_id = $row['id']; + $user_agent = $row['user_agent']; + $ip_address = $row['ip_address']; + $host_name = $row['host_name']; + $access_time = $row['access_time'] . ' ' . date("P"); // Adiciona fuso horário + $language = $row['language']; + $referer = $row['referer']; + $protocol = $row['protocol']; + $connection = $row['connection']; + $viewport_width = $row['viewport_width']; + $viewport_height = $row['viewport_height']; + $original_location = $row['original_location']; // Novo campo para localização original + + // Recuperar a porta do cliente + $result_port = $mysqli->query("SELECT port FROM client_ports WHERE queue_id = $queue_id"); + $client_port = $result_port->fetch_assoc()['port'] ?? 'N/A'; + $result_port->free(); + + // Atualizar status para 'processing' + $stmt_update = $mysqli->prepare("UPDATE queue SET status = 'processing' WHERE id = ?"); + $stmt_update->bind_param("i", $queue_id); + $stmt_update->execute(); + $stmt_update->close(); + + log_message("Processo $process_id: Atualizou status para 'processing' para o arquivo ID $queue_id.", 'INFO'); + + // Gerar checksums + $checksums = generate_checksums($file_path); + + // Capturar data e hora + $file_datetime = get_file_datetime($file_path); + + // Registrar timestamp usando OpenTimestamps + $timestamp_result = register_timestamp_opentimestamps($file_path); + $signature_time = date("d/m/Y H:i:s P"); // Inclui fuso horário + + if ($timestamp_result['success']) { + $ots_base64 = $timestamp_result['ots_base64']; + + // Coletar dados do dispositivo + $device_data = [ + 'User Agent' => $user_agent, + 'IP Address' => $ip_address . ':' . $client_port, + 'Host Name' => $host_name, + 'Access Time' => $access_time, + 'Language' => $language, + 'Referer' => $referer, + 'Protocol' => $protocol, + 'Connection' => $connection, + 'Viewport Width' => $viewport_width, + 'Viewport Height' => $viewport_height, + 'Original Location' => $original_location // Adicionado + ]; + + // Gerar PDF + $pdf_path = generate_pdf($file_path, [ + 'name' => basename($file_path), + 'creation_time' => $file_datetime['creation_time'] . ' ' . date("P", filectime($file_path)), + 'modification_time' => $file_datetime['modification_time'] . ' ' . date("P", filemtime($file_path)), + 'upload_time' => $access_time, + 'signature_time' => $signature_time + ], $checksums, $device_data, $ots_base64); + + // Atualizar status para 'completed' + $stmt_complete = $mysqli->prepare("UPDATE queue SET status = 'completed' WHERE id = ?"); + $stmt_complete->bind_param("i", $queue_id); + $stmt_complete->execute(); + $stmt_complete->close(); + + log_message("Processo $process_id: Processamento concluído para arquivo ID $queue_id: $file_path", 'INFO'); + } else { + // Atualizar status para 'error' + $stmt_error = $mysqli->prepare("UPDATE queue SET status = 'error' WHERE id = ?"); + $stmt_error->bind_param("i", $queue_id); + $stmt_error->execute(); + $stmt_error->close(); + + log_message("Processo $process_id: Erro ao processar arquivo ID $queue_id: " . $timestamp_result['message'], 'ERROR'); + } + } catch (Exception $e) { + // Atualizar status para 'error' + $stmt_exception = $mysqli->prepare("UPDATE queue SET status = 'error' WHERE id = ?"); + $stmt_exception->bind_param("i", $queue_id); + $stmt_exception->execute(); + $stmt_exception->close(); + + log_message("Processo $process_id: Exceção ao processar arquivo ID $queue_id: " . $e->getMessage(), 'ERROR'); + } + + $mysqli->close(); + log_message("Processo $process_id: Fechou conexão com o banco de dados para o arquivo ID $queue_id.", 'INFO'); +} + +// Funções auxiliares (generate_checksums, get_file_datetime, register_timestamp_opentimestamps, generate_pdf) +// Mantenha estas funções como estão no seu código original, sem alterações. Certifique-se de que as funções não dependam de conexões globais de banco de dados. + +require_once __DIR__ . '../../vendor/autoload.php'; + +// Função para gerar checksums +function generate_checksums($file_path) { + log_message("Gerando checksums para $file_path", 'INFO'); + $start_time = microtime(true); + + // Carregar o conteúdo do arquivo uma única vez + $file_content = file_get_contents($file_path); + + $checksums = [ + 'sha256' => hash('sha256', $file_content), + 'sha512' => hash('sha512', $file_content), + 'md5' => hash('md5', $file_content) + ]; + + $end_time = microtime(true); + log_message("Checksums gerados em " . round($end_time - $start_time, 4) . " segundos", 'INFO'); + return $checksums; +} + +// Função para capturar data e hora do arquivo +function get_file_datetime($file_path) { + log_message("Obtendo data e hora do arquivo para $file_path", 'INFO'); + $start_time = microtime(true); + $creation_time = date("d/m/Y H:i:s P", filectime($file_path)); + $modification_time = date("d/m/Y H:i:s P", filemtime($file_path)); + $end_time = microtime(true); + log_message("Data e hora obtidas em " . round($end_time - $start_time, 4) . " segundos", 'INFO'); + return [ + 'creation_time' => $creation_time, + 'modification_time' => $modification_time + ]; +} + +// Função para registrar timestamp usando OpenTimestamps +function register_timestamp_opentimestamps($file_path) { + log_message("Registrando timestamp para $file_path", 'INFO'); + $start_time = microtime(true); + + // Definir diretório de cache para OTS + $ots_cache_dir = '/var/www/html/ots_cache'; + if (!is_dir($ots_cache_dir)) { + log_message("Diretório de cache OTS não existe. Criando em $ots_cache_dir", 'INFO'); + if (!mkdir($ots_cache_dir, 0755, true)) { + log_message("Erro ao criar diretório de cache OTS: $ots_cache_dir", 'ERROR'); + return ['success' => false, 'message' => "Erro ao criar diretório de cache OTS: $ots_cache_dir"]; + } + chmod($ots_cache_dir, 0755); // Ajustar permissões + } + + // Definir a variável de ambiente antes de executar o comando + $command_stamp = "OTS_CACHE_DIRECTORY=" . escapeshellarg($ots_cache_dir) . " ots stamp " . escapeshellarg($file_path) . " 2>&1"; + + log_message("Comando para executar: $command_stamp", 'INFO'); + + // Executar o comando + exec($command_stamp, $output_stamp, $return_var_stamp); + + // Verificar o resultado da execução + if ($return_var_stamp !== 0) { + log_message("Erro ao registrar timestamp: " . implode("\n", $output_stamp), 'ERROR'); + return ['success' => false, 'message' => 'Erro ao registrar timestamp: ' . implode("\n", $output_stamp)]; + } + + // Definir o caminho do arquivo .ots gerado + $ots_file = "{$file_path}.ots"; + + // Verificar se o arquivo .ots foi criado + if (!file_exists($ots_file)) { + log_message("Arquivo de timestamp não encontrado: $ots_file", 'ERROR'); + return ['success' => false, 'message' => "Arquivo de timestamp não encontrado: $ots_file"]; + } + + // Codificar o arquivo .ots em base64 + $ots_base64 = base64_encode(file_get_contents($ots_file)); + $end_time = microtime(true); + log_message("Timestamp registrado e codificado em " . round($end_time - $start_time, 4) . " segundos", 'INFO'); + + return ['success' => true, 'ots_base64' => $ots_base64]; +} + +// Função para gerar PDF +function generate_pdf($uploaded_file_path, $document_info, $checksums, $device_data, $ots_base64) { + log_message("Gerando PDF para $uploaded_file_path", 'INFO'); + $start_time = microtime(true); + // Criar uma nova instância do TCPDF + $pdf = new TCPDF(); + + // Configurações iniciais do PDF + $pdf->SetCreator(PDF_CREATOR); + $pdf->SetAuthor('Seu Nome ou Empresa'); + $pdf->SetTitle('Prova de Autenticidade de Documento'); + $pdf->SetSubject('Timestamping e Checksums'); + + // Remover as margens padrão + $pdf->SetMargins(10, 10, 10); + $pdf->SetHeaderMargin(0); + $pdf->SetFooterMargin(0); + + // Desativar cabeçalhos e rodapés automáticos + $pdf->setPrintHeader(false); + $pdf->setPrintFooter(false); + + // Configurar a fonte padrão uma vez + $pdf->SetFont('helvetica', '', 10); + + // Verificar o tipo de arquivo para incorporar no PDF + $file_info = pathinfo($uploaded_file_path); + $extension = strtolower($file_info['extension']); + + // Configurar o diretório temporário para o ImageMagick + $temp_dir = '/tmp/imagick'; + if (!is_dir($temp_dir)) { + mkdir($temp_dir, 0777, true); + } + chmod($temp_dir, 0777); // Garantir permissões totais + + // Configurar o diretório temporário para as imagens + $tmp_dir = '/tmp/image'; + if (!is_dir($tmp_dir)) { + mkdir($tmp_dir, 0777, true); + } + chmod($tmp_dir, 0777); // Garantir permissões totais + + // Criar uma única instância de Imagick + $imagick = new Imagick(); + // Configurar o ambiente para otimização + putenv('MAGICK_TMPDIR=' . $temp_dir); // Defina um diretório temporário adequado + $imagick->setResourceLimit(Imagick::RESOURCETYPE_MEMORY, 512); // Ajuste conforme necessário + $imagick->setResourceLimit(Imagick::RESOURCETYPE_MAP, 512); + $imagick->setResourceLimit(Imagick::RESOURCETYPE_THREAD, 2); + + try { + if (in_array($extension, ['jpg', 'jpeg', 'png', 'gif'])) { + log_message("Processando imagem $uploaded_file_path", 'INFO'); + + // Reduzir a resolução para 1200x900, mantendo a proporção + log_message("Reduzindo resolução da imagem para melhor qualidade e menor tamanho", 'INFO'); + $imagick->readImage($uploaded_file_path); + $imagick->resizeImage(1200, 900, Imagick::FILTER_LANCZOS, 1, true); + + // Configurar a compressão usando PNG para melhor qualidade sem perder transparência + if ($extension === 'png') { + $imagick->setImageFormat('png'); + $imagick->stripImage(); // Remove metadados + $image_blob = $imagick->getImageBlob(); + } else { + // Para JPEG e outros, usar alta qualidade com compressão balanceada + log_message("Configurando compressão da imagem para JPEG", 'INFO'); + $imagick->setImageCompression(Imagick::COMPRESSION_JPEG); + $imagick->setImageCompressionQuality(85); // Maior qualidade + $imagick->stripImage(); // Remove metadados para reduzir o tamanho + $image_blob = $imagick->getImageBlob(); + } + + // Salvar a imagem temporariamente + $tmp_img = tempnam($tmp_dir, 'img_') . '.' . $extension; + log_message("Salvando imagem temporária em $tmp_img", 'INFO'); + file_put_contents($tmp_img, $image_blob); + chmod($tmp_img, 0666); // Ajustar permissões do arquivo temporário + + // Adicionar a imagem ao PDF + log_message("Adicionando imagem ao PDF", 'INFO'); + $pdf->AddPage(); + $pdf->Image('@' . $image_blob, 15, 40, 180, 160, '', '', 'C', false, 100, '', false, false, 1, false, false, false); + log_message("Imagem adicionada ao PDF", 'INFO'); + + // Remover a imagem temporária + if (file_exists($tmp_img)) { + log_message("Removendo imagem temporária $tmp_img", 'INFO'); + unlink($tmp_img); + } else { + log_message("Imagem temporária $tmp_img não encontrada para remoção", 'WARN'); + } + } elseif (in_array($extension, ['pdf'])) { + log_message("Processando PDF $uploaded_file_path", 'INFO'); + + // Verificar se a extensão Imagick está carregada + if (extension_loaded('imagick')) { + log_message("Imagick está carregado", 'INFO'); + + // Inicializar Imagick + try { + log_message("Inicializando Imagick para $uploaded_file_path", 'INFO'); + $imagick->setResolution(150, 150); // Ajuste a resolução conforme necessário + $imagick->readImage($uploaded_file_path); // Ler todas as páginas do PDF + log_message("PDF lido com sucesso", 'INFO'); + + // Processar cada página do PDF + $page_count = $imagick->getNumberImages(); // Número total de páginas do PDF + for ($i = 0; $i < $page_count; $i++) { + $imagick->setIteratorIndex($i); // Define a página atual + $imagick->setImageFormat("jpeg"); // Configura o formato como JPEG + + // Definir o fundo como branco + $imagick->setImageBackgroundColor('white'); + $imagick = $imagick->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN); + + // Reduz a resolução para 1600x1200, mantendo a proporção + $imagick->resizeImage(1600, 1200, Imagick::FILTER_LANCZOS, 1, true); + + // Configura as opções de compressão + $imagick->setImageCompression(Imagick::COMPRESSION_JPEG); + $imagick->setImageCompressionQuality(85); + $imagick->stripImage(); // Remove metadados desnecessários + + // Obter os dados da imagem + $image_data = $imagick->getImageBlob(); + $tmp_img = tempnam($tmp_dir, 'pdf_page_') . '.jpg'; + file_put_contents($tmp_img, $image_data); // Salvar página como JPEG temporária + chmod($tmp_img, 0666); + + // Adicionar a página como imagem ao novo PDF + $pdf->AddPage(); + $pdf->Image($tmp_img, 15, 40, 180, 160, '', '', 'C', false, 100, '', false, false, 1, false, false, false); + + // Remover a imagem temporária + unlink($tmp_img); + } + + // Limpar recursos do Imagick + $imagick->clear(); + $imagick->destroy(); + } catch (Exception $e) { + log_message("Erro ao inicializar ou processar imagem com Imagick: " . $e->getMessage(), 'ERROR'); + } + } else { + log_message("Imagick não está carregado", 'WARN'); + // Se Imagick não estiver disponível, apenas adicionar uma mensagem + $pdf->SetFont('helvetica', '', 12); + $pdf->Write(0, 'Visualização de PDF não suportada.'); + } + } else { + log_message("Tipo de arquivo não suportado: $extension", 'WARN'); + // Outros tipos de arquivo podem ser adicionados conforme necessidade + $pdf->SetFont('helvetica', '', 12); + $pdf->Write(0, 'Visualização deste tipo de arquivo não está disponível.'); + } + } catch (Exception $e) { + log_message("Erro ao processar imagem: " . $e->getMessage(), 'ERROR'); + } + + // Adicionar uma nova página para as informações + $pdf->AddPage(); + + // Conteúdo das informações + $html = '

Informações do Documento

'; + $html .= '

Nome do Arquivo: ' . htmlspecialchars($document_info['name']) . '

'; + $html .= '

Data de Modificação: ' . htmlspecialchars($document_info['modification_time']) . '

'; + $html .= '

Data de Envio ao Servidor: ' . htmlspecialchars($document_info['upload_time']) . '

'; + $html .= '

Data e Hora da Assinatura: ' . htmlspecialchars($document_info['signature_time']) . ' (UTC-3)

'; + + $html .= '

Checksums

'; + $html .= ''; + + $html .= '

Dados do Dispositivo

'; + $html .= ''; + + $orig_link= 'https://validar.martinsevieira.adv.br/uploads/'; + + $html .= '

Arquivos Originais

'; + $html .= ''; + + $html .= '

Arquivo de Timestamp (OTS) em Base64

'; + $html .= '
' . htmlspecialchars($ots_base64) . '
'; + + $pdf->writeHTML($html, true, false, true, false, ''); + + // Salvar o PDF no servidor + $processed_dir = '/var/www/html/processed/'; + if (!is_dir($processed_dir)) { + mkdir($processed_dir, 0777, true); + } + log_message("Salvando PDF no servidor", 'INFO'); + $pdf_output_path = $processed_dir . uniqid('prova_') . '.pdf'; + $pdf->Output($pdf_output_path, 'F'); + + $end_time = microtime(true); + log_message("PDF gerado em " . round($end_time - $start_time, 4) . " segundos", 'INFO'); + + // Limpar recursos do Imagick + $imagick->clear(); + $imagick->destroy(); + + return $pdf_output_path; +} + +// Recuperar todos os arquivos pendentes +$mysqli = new mysqli("10.15.0.42", "root", "34641747", "valida"); + +if ($mysqli->connect_error) { + log_message("Connection failed: " . $mysqli->connect_error, 'ERROR'); + die("Connection failed: " . $mysqli->connect_error); +} + +log_message("Conexão com o banco de dados estabelecida.", 'INFO'); + +// Recuperar todos os arquivos pendentes +$result = $mysqli->query("SELECT q.*, cp.port, q.original_location FROM queue q LEFT JOIN client_ports cp ON q.id = cp.queue_id WHERE q.status = 'pending'"); + +if ($result->num_rows > 0) { + log_message("Encontrados " . $result->num_rows . " arquivos pendentes para processar.", 'INFO'); + + while ($row = $result->fetch_assoc()) { + // Verificar se o número de processos filhos atingiu o máximo permitido + while (count($childProcesses) >= MAX_CHILDREN) { + // Esperar por qualquer processo filho terminar + $endedPid = pcntl_wait($status); + if ($endedPid > 0) { + unset($childProcesses[$endedPid]); + log_message("Processo filho $endedPid finalizado.", 'INFO'); + } + } + + // Fork do processo + $pid = pcntl_fork(); + + if ($pid == -1) { + // Erro ao fork + log_message("Erro ao criar processo filho.", 'ERROR'); + } elseif ($pid) { + // Processo pai + $childProcesses[$pid] = true; + log_message("Criado processo filho $pid para o arquivo ID " . $row['id'] . ".", 'INFO'); + } else { + // Processo filho + // Fecha a conexão do processo pai antes de iniciar no filho + $mysqli->close(); + + // Processa o arquivo + process_file($row); + + // Finaliza o processo filho + exit(0); + } + } + + // Após forçar todos os filhos a serem criados, esperar que terminem + while (count($childProcesses) > 0) { + $endedPid = pcntl_wait($status); + if ($endedPid > 0) { + unset($childProcesses[$endedPid]); + log_message("Processo filho $endedPid finalizado.", 'INFO'); + } + } + + log_message("Todas as tarefas foram submetidas para processamento.", 'INFO'); +} else { + log_message("Nenhum arquivo pendente para processar.", 'INFO'); +} + +$mysqli->close(); +log_message("Processamento da fila finalizado.", 'INFO'); +?> + diff --git a/old/status.php b/old/status.php new file mode 100644 index 0000000..024e53e --- /dev/null +++ b/old/status.php @@ -0,0 +1,81 @@ + + + + + + Status do Processamento + + + + + +
+

Status do Processamento

+
+ +
+ +
+ + diff --git a/old/status_check.php b/old/status_check.php new file mode 100644 index 0000000..785226c --- /dev/null +++ b/old/status_check.php @@ -0,0 +1,34 @@ +connect_error) { + die("Connection failed: " . $mysqli->connect_error); +} + +// Paginação +$files_per_page = 10; +$page = isset($_GET['page_num']) ? (int)$_GET['page_num'] : 1; +$page = max(1, $page); +$offset = ($page - 1) * $files_per_page; + +// Recuperar status dos arquivos +$result = $mysqli->query("SELECT file_path, status FROM queue ORDER BY created_at DESC LIMIT $files_per_page OFFSET $offset"); + +$status = []; +while ($row = $result->fetch_assoc()) { + $status[] = $row; +} + +// Contar o total de arquivos para a paginação +$total_result = $mysqli->query("SELECT COUNT(*) AS total FROM queue"); +$total_files = $total_result->fetch_assoc()['total']; +$total_pages = ceil($total_files / $files_per_page); + +$mysqli->close(); + +header('Content-Type: application/json'); +echo json_encode(['status' => $status, 'current_page' => $page, 'total_pages' => $total_pages]); +?> diff --git a/old/upload.php b/old/upload.php new file mode 100644 index 0000000..859706b --- /dev/null +++ b/old/upload.php @@ -0,0 +1,133 @@ +connect_error) { + die("Connection failed: " . $mysqli->connect_error); +} + +// Diretório de upload +$upload_dir = '/var/www/html/uploads/'; +if (!is_dir($upload_dir)) { + mkdir($upload_dir, 0777, true); +} + +// Tipos de arquivos permitidos +$allowed_types = ['image/jpeg', 'image/png', 'image/gif', 'application/pdf']; +$max_file_size = 10 * 1024 * 1024; // 10MB + +// Ignorar autenticação para esta página +// if (basename($_SERVER['PHP_SELF']) == 'upload.php') { +// // Ignorar autenticação para esta página +// } else { +// // ...código de autenticação existente... +// } + +if ($_SERVER['REQUEST_METHOD'] == 'POST') { + if (isset($_FILES['files'])) { + $files = $_FILES['files']; + $modification_times = isset($_POST['modification_times']) ? explode(',', $_POST['modification_times']) : []; + + // Capturar informações adicionais + $user_agent = isset($_POST['user_agent']) ? $_POST['user_agent'] : 'Desconhecido'; + $language = isset($_POST['language']) ? $_POST['language'] : 'Desconhecido'; + $viewport_width = isset($_POST['viewport_width']) ? intval($_POST['viewport_width']) : 0; + $viewport_height = isset($_POST['viewport_height']) ? intval($_POST['viewport_height']) : 0; + $ip_address = $_SERVER['REMOTE_ADDR']; + $host_name = gethostbyaddr($ip_address); + $access_time = date("Y-m-d H:i:s"); // Formato padrão MySQL + $referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : 'Desconhecido'; + $request_method = $_SERVER['REQUEST_METHOD']; + $server_software = isset($_SERVER['SERVER_SOFTWARE']) ? $_SERVER['SERVER_SOFTWARE'] : 'Desconhecido'; + $protocol = isset($_SERVER['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : 'Desconhecido'; + $connection = isset($_SERVER['HTTP_CONNECTION']) ? $_SERVER['HTTP_CONNECTION'] : 'Desconhecido'; + $client_port = isset($_SERVER['REMOTE_PORT']) ? intval($_SERVER['REMOTE_PORT']) : 0; + + for ($i = 0; $i < count($files['name']); $i++) { + $file_name = basename($files['name'][$i]); + $file_tmp = $files['tmp_name'][$i]; + $file_size = $files['size'][$i]; + $file_type = $files['type'][$i]; + $file_error = $files['error'][$i]; + $file_path = $upload_dir . $file_name; + + // Validações + if ($file_error !== UPLOAD_ERR_OK) { + continue; + } + + if ($file_size > $max_file_size) { + continue; + } + + if (!in_array($file_type, $allowed_types)) { + continue; + } + + // Movendo o arquivo + if (move_uploaded_file($file_tmp, $file_path)) { + // Ajustar a data de modificação usando touch() + if (isset($modification_times[$i])) { + $mod_time = intval($modification_times[$i] / 1000); // Convertendo de milissegundos para segundos + touch($file_path, $mod_time); + } + + // Gerar hash do arquivo para integridade + $file_hash = hash_file('sha256', $file_path); + + // Preparar inserção na tabela queue + $stmt = $mysqli->prepare("INSERT INTO queue (file_path, user_agent, ip_address, host_name, access_time, language, referer, request_method, server_software, protocol, connection, viewport_width, viewport_height, file_hash) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); + if (!$stmt) { + unlink($file_path); + continue; + } + + $stmt->bind_param( + "ssssssssssssss", + $file_path, + $user_agent, + $ip_address, + $host_name, + $access_time, + $language, + $referer, + $request_method, + $server_software, + $protocol, + $connection, + $viewport_width, + $viewport_height, + $file_hash + ); + + if ($stmt->execute()) { + $queue_id = $stmt->insert_id; + } else { + unlink($file_path); + $stmt->close(); + continue; + } + $stmt->close(); + + // Adicionar entrada na tabela client_ports + $stmt_port = $mysqli->prepare("INSERT INTO client_ports (queue_id, port) VALUES (?, ?)"); + if (!$stmt_port) { + continue; + } + $stmt_port->bind_param("ii", $queue_id, $client_port); + if ($stmt_port->execute()) { + } else { + } + $stmt_port->close(); + } else { + } + } + } +} + +$mysqli->close(); +header("Location: /index.php?page=status"); +exit(); +?> diff --git a/old/upload_prova.php b/old/upload_prova.php new file mode 100644 index 0000000..57c37de --- /dev/null +++ b/old/upload_prova.php @@ -0,0 +1,211 @@ + + + + + Upload de Arquivos + + ou '; + } + ?> + + + +
+

Upload de Arquivos

+
+

+

+ +
+
+ + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..1a0a798 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,13023 @@ +{ + "name": "advx", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "advx", + "version": "1.0.0", + "hasInstallScript": true, + "dependencies": { + "@emotion/react": "^11.11.3", + "@emotion/styled": "^11.11.3", + "@headlessui/react": "^1.7.18", + "@heroicons/react": "^2.1.1", + "@mui/icons-material": "^5.15.6", + "@mui/material": "^5.15.6", + "@mui/x-date-pickers": "^6.19.0", + "@prisma/client": "^6.5.0", + "@tinymce/tinymce-react": "^6.1.0", + "@tiptap/extension-link": "^2.11.7", + "@tiptap/react": "^2.11.7", + "@tiptap/starter-kit": "^2.11.7", + "@types/sharp": "^0.32.0", + "@types/ua-parser-js": "^0.7.36", + "axios": "^1.6.5", + "bcryptjs": "^2.4.3", + "buffer": "^6.0.3", + "bullmq": "^4.12.0", + "cors": "^2.8.5", + "date-fns": "^2.30.0", + "detect-file-type": "^0.2.3", + "dotenv": "^16.4.1", + "express": "^4.18.2", + "jsonwebtoken": "^9.0.2", + "multer": "^1.4.5-lts.1", + "opentimestamps-javascript": "^1.0.1", + "pdf-lib": "^1.17.1", + "puppeteer": "^24.5.0", + "qrcode": "^1.5.3", + "react": "^18.2.0", + "react-beautiful-dnd": "^13.1.1", + "react-dom": "^18.2.0", + "react-dropzone": "^14.3.8", + "react-hook-form": "^7.49.3", + "react-icons": "^5.0.1", + "react-query": "^3.39.3", + "react-router-dom": "^7.4.1", + "react-toastify": "^10.0.4", + "redis": "^4.6.10", + "sharp": "^0.33.2", + "ua-parser-js": "^1.0.35", + "uuid": "^9.0.1", + "webdav": "^5.3.1", + "xlsx": "^0.18.5", + "zod": "^3.22.4" + }, + "devDependencies": { + "@tailwindcss/postcss": "^4.1.1", + "@types/bcryptjs": "^2.4.6", + "@types/cors": "^2.8.17", + "@types/express": "^5.0.1", + "@types/jsonwebtoken": "^9.0.9", + "@types/multer": "^1.4.12", + "@types/node": "^22.13.14", + "@types/react": "^19.0.12", + "@types/react-beautiful-dnd": "^13.1.8", + "@types/react-dom": "^19.0.4", + "@types/uuid": "^10.0.0", + "@typescript-eslint/eslint-plugin": "^8.28.0", + "@typescript-eslint/parser": "^8.28.0", + "@vitejs/plugin-react": "^4.3.4", + "autoprefixer": "^10.4.17", + "concurrently": "^9.1.2", + "eslint": "^9.23.0", + "eslint-config-prettier": "^10.1.1", + "eslint-plugin-prettier": "^5.2.5", + "eslint-plugin-react": "^7.37.4", + "eslint-plugin-react-hooks": "^5.2.0", + "postcss": "^8.4.33", + "prettier": "^3.5.3", + "prisma": "^6.5.0", + "tailwindcss": "^3.4.1", + "ts-node": "^10.9.2", + "typescript": "^5.8.2", + "vite": "^6.2.4" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz", + "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz", + "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.10", + "@babel/helper-compilation-targets": "^7.26.5", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.10", + "@babel/parser": "^7.26.10", + "@babel/template": "^7.26.9", + "@babel/traverse": "^7.26.10", + "@babel/types": "^7.26.10", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz", + "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.27.0", + "@babel/types": "^7.27.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz", + "integrity": "sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.26.8", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", + "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz", + "integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.0", + "@babel/types": "^7.27.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", + "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz", + "integrity": "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz", + "integrity": "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz", + "integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz", + "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/parser": "^7.27.0", + "@babel/types": "^7.27.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz", + "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.27.0", + "@babel/parser": "^7.27.0", + "@babel/template": "^7.27.0", + "@babel/types": "^7.27.0", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", + "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@buttercup/fetch": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@buttercup/fetch/-/fetch-0.2.1.tgz", + "integrity": "sha512-sCgECOx8wiqY8NN1xN22BqqKzXYIG2AicNLlakOAI4f0WgyLVUbAigMf8CZhBtJxdudTcB1gD5lciqi44jwJvg==", + "license": "MIT", + "optionalDependencies": { + "node-fetch": "^3.3.0" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.0.tgz", + "integrity": "sha512-64WYIf4UYcdLnbKn/umDlNjQDSS8AgZrI/R9+x5ilkUVFxXcA1Ebl+gQLc/6mERA4407Xof0R7wEyEuj091CVw==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emotion/babel-plugin": { + "version": "11.13.5", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz", + "integrity": "sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/serialize": "^1.3.3", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "license": "MIT" + }, + "node_modules/@emotion/cache": { + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.14.0.tgz", + "integrity": "sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==", + "license": "MIT", + "dependencies": { + "@emotion/memoize": "^0.9.0", + "@emotion/sheet": "^1.4.0", + "@emotion/utils": "^1.4.2", + "@emotion/weak-memoize": "^0.4.0", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/hash": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", + "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==", + "license": "MIT" + }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.3.1.tgz", + "integrity": "sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==", + "license": "MIT", + "dependencies": { + "@emotion/memoize": "^0.9.0" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", + "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==", + "license": "MIT" + }, + "node_modules/@emotion/react": { + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz", + "integrity": "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.13.5", + "@emotion/cache": "^11.14.0", + "@emotion/serialize": "^1.3.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", + "@emotion/utils": "^1.4.2", + "@emotion/weak-memoize": "^0.4.0", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.3.tgz", + "integrity": "sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==", + "license": "MIT", + "dependencies": { + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/unitless": "^0.10.0", + "@emotion/utils": "^1.4.2", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/sheet": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz", + "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==", + "license": "MIT" + }, + "node_modules/@emotion/styled": { + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.14.0.tgz", + "integrity": "sha512-XxfOnXFffatap2IyCeJyNov3kiDQWoR08gPUQxvbL7fxKryGBKUZUkG6Hz48DZwVrJSVh9sJboyV1Ds4OW6SgA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.13.5", + "@emotion/is-prop-valid": "^1.3.0", + "@emotion/serialize": "^1.3.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", + "@emotion/utils": "^1.4.2" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/unitless": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz", + "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==", + "license": "MIT" + }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.2.0.tgz", + "integrity": "sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.2.tgz", + "integrity": "sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==", + "license": "MIT" + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", + "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==", + "license": "MIT" + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz", + "integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.5.1.tgz", + "integrity": "sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz", + "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.0.tgz", + "integrity": "sha512-yJLLmLexii32mGrhW29qvU3QBVTu0GUmEf/J4XsBtVhp4JkIUFN/BjWqTF63yRvGApIDpZm5fa97LtYtINmfeQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz", + "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/js": { + "version": "9.23.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.23.0.tgz", + "integrity": "sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz", + "integrity": "sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.12.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.6.9", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.9.tgz", + "integrity": "sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.9" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.13", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.13.tgz", + "integrity": "sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.9" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz", + "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.9.tgz", + "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==", + "license": "MIT" + }, + "node_modules/@headlessui/react": { + "version": "1.7.19", + "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.7.19.tgz", + "integrity": "sha512-Ll+8q3OlMJfJbAKM/+/Y2q6PPYbryqNTXDbryx7SXLIDamkF6iQFbriYHga0dY44PvDhvvBWCx1Xj4U5+G4hOw==", + "license": "MIT", + "dependencies": { + "@tanstack/react-virtual": "^3.0.0-beta.60", + "client-only": "^0.0.1" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "^16 || ^17 || ^18", + "react-dom": "^16 || ^17 || ^18" + } + }, + "node_modules/@heroicons/react": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.2.0.tgz", + "integrity": "sha512-LMcepvRaS9LYHJGsF0zzmgKCUim/X3N/DQKc4jepAXJ7l8QxJ1PmxJzqplF2Z3FE4PqBAIGyJAQ/w4B5dsqbtQ==", + "license": "MIT", + "peerDependencies": { + "react": ">= 16 || ^19.0.0-rc" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz", + "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", + "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", + "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", + "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", + "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", + "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", + "cpu": [ + "arm" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", + "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz", + "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==", + "cpu": [ + "s390x" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", + "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz", + "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz", + "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz", + "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.0.5" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz", + "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz", + "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==", + "cpu": [ + "s390x" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.0.4" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", + "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz", + "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz", + "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz", + "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.2.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz", + "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", + "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@ioredis/commands": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.2.0.tgz", + "integrity": "sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==", + "license": "MIT" + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz", + "integrity": "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz", + "integrity": "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz", + "integrity": "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz", + "integrity": "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz", + "integrity": "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz", + "integrity": "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@mui/core-downloads-tracker": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.17.1.tgz", + "integrity": "sha512-OcZj+cs6EfUD39IoPBOgN61zf1XFVY+imsGoBDwXeSq2UHJZE3N59zzBOVjclck91Ne3e9gudONOeILvHCIhUA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + } + }, + "node_modules/@mui/icons-material": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.17.1.tgz", + "integrity": "sha512-CN86LocjkunFGG0yPlO4bgqHkNGgaEOEc3X/jG5Bzm401qYw79/SaLrofA7yAKCCXAGdIGnLoMHohc3+ubs95A==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.9" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@mui/material": "^5.0.0", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/material": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.17.1.tgz", + "integrity": "sha512-2B33kQf+GmPnrvXXweWAx+crbiUEsxCdCN979QDYnlH9ox4pd+0/IBriWLV+l6ORoBF60w39cWjFnJYGFdzXcw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/core-downloads-tracker": "^5.17.1", + "@mui/system": "^5.17.1", + "@mui/types": "~7.2.15", + "@mui/utils": "^5.17.1", + "@popperjs/core": "^2.11.8", + "@types/react-transition-group": "^4.4.10", + "clsx": "^2.1.0", + "csstype": "^3.1.3", + "prop-types": "^15.8.1", + "react-is": "^19.0.0", + "react-transition-group": "^4.4.5" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/material/node_modules/react-is": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.0.0.tgz", + "integrity": "sha512-H91OHcwjZsbq3ClIDHMzBShc1rotbfACdWENsmEf0IFvZ3FgGPtdHMcsv45bQ1hAbgdfiA8SnxTKfDS+x/8m2g==", + "license": "MIT" + }, + "node_modules/@mui/private-theming": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.17.1.tgz", + "integrity": "sha512-XMxU0NTYcKqdsG8LRmSoxERPXwMbp16sIXPcLVgLGII/bVNagX0xaheWAwFv8+zDK7tI3ajllkuD3GZZE++ICQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/utils": "^5.17.1", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/styled-engine": { + "version": "5.16.14", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.16.14.tgz", + "integrity": "sha512-UAiMPZABZ7p8mUW4akDV6O7N3+4DatStpXMZwPlt+H/dA0lt67qawN021MNND+4QTpjaiMYxbhKZeQcyWCbuKw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@emotion/cache": "^11.13.5", + "csstype": "^3.1.3", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + } + }, + "node_modules/@mui/system": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.17.1.tgz", + "integrity": "sha512-aJrmGfQpyF0U4D4xYwA6ueVtQcEMebET43CUmKMP7e7iFh3sMIF3sBR0l8Urb4pqx1CBjHAaWgB0ojpND4Q3Jg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/private-theming": "^5.17.1", + "@mui/styled-engine": "^5.16.14", + "@mui/types": "~7.2.15", + "@mui/utils": "^5.17.1", + "clsx": "^2.1.0", + "csstype": "^3.1.3", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/types": { + "version": "7.2.24", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.24.tgz", + "integrity": "sha512-3c8tRt/CbWZ+pEg7QpSwbdxOk36EfmhbKf6AGZsD1EcLDLTSZoxxJ86FVtcjxvjuhdyBiWKSTGZFaXCnidO2kw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.17.1.tgz", + "integrity": "sha512-jEZ8FTqInt2WzxDV8bhImWBqeQRD99c/id/fq83H0ER9tFl+sfZlaAoCdznGvbSQQ9ividMxqSV2c7cC1vBcQg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/types": "~7.2.15", + "@types/prop-types": "^15.7.12", + "clsx": "^2.1.1", + "prop-types": "^15.8.1", + "react-is": "^19.0.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils/node_modules/react-is": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.1.0.tgz", + "integrity": "sha512-Oe56aUPnkHyyDxxkvqtd7KkdQP5uIUfHxd5XTb3wE9d/kRnZLmKbDB0GWk919tdQ+mxxPtG6EAs6RMT6i1qtHg==", + "license": "MIT" + }, + "node_modules/@mui/x-date-pickers": { + "version": "6.20.2", + "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-6.20.2.tgz", + "integrity": "sha512-x1jLg8R+WhvkmUETRfX2wC+xJreMii78EXKLl6r3G+ggcAZlPyt0myID1Amf6hvJb9CtR7CgUo8BwR+1Vx9Ggw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.2", + "@mui/base": "^5.0.0-beta.22", + "@mui/utils": "^5.14.16", + "@types/react-transition-group": "^4.4.8", + "clsx": "^2.0.0", + "prop-types": "^15.8.1", + "react-transition-group": "^4.4.5" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.9.0", + "@emotion/styled": "^11.8.1", + "@mui/material": "^5.8.6", + "@mui/system": "^5.8.0", + "date-fns": "^2.25.0 || ^3.2.0", + "date-fns-jalali": "^2.13.0-0", + "dayjs": "^1.10.7", + "luxon": "^3.0.2", + "moment": "^2.29.4", + "moment-hijri": "^2.1.2", + "moment-jalaali": "^0.7.4 || ^0.8.0 || ^0.9.0 || ^0.10.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "date-fns": { + "optional": true + }, + "date-fns-jalali": { + "optional": true + }, + "dayjs": { + "optional": true + }, + "luxon": { + "optional": true + }, + "moment": { + "optional": true + }, + "moment-hijri": { + "optional": true + }, + "moment-jalaali": { + "optional": true + } + } + }, + "node_modules/@mui/x-date-pickers/node_modules/@mui/base": { + "version": "5.0.0-dev.20240529-082515-213b5e33ab", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-dev.20240529-082515-213b5e33ab.tgz", + "integrity": "sha512-3ic6fc6BHstgM+MGqJEVx3zt9g5THxVXm3VVFUfdeplPqAWWgW2QoKfZDLT10s+pi+MAkpgEBP0kgRidf81Rsw==", + "deprecated": "This package has been replaced by @base-ui-components/react", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.24.6", + "@floating-ui/react-dom": "^2.0.8", + "@mui/types": "^7.2.14-dev.20240529-082515-213b5e33ab", + "@mui/utils": "^6.0.0-dev.20240529-082515-213b5e33ab", + "@popperjs/core": "^2.11.8", + "clsx": "^2.1.1", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/x-date-pickers/node_modules/@mui/base/node_modules/@mui/utils": { + "version": "6.4.8", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.4.8.tgz", + "integrity": "sha512-C86gfiZ5BfZ51KqzqoHi1WuuM2QdSKoFhbkZeAfQRB+jCc4YNhhj11UXFVMMsqBgZ+Zy8IHNJW3M9Wj/LOwRXQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.0", + "@mui/types": "~7.2.24", + "@types/prop-types": "^15.7.14", + "clsx": "^2.1.1", + "prop-types": "^15.8.1", + "react-is": "^19.0.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/x-date-pickers/node_modules/@types/react": { + "version": "18.3.20", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.20.tgz", + "integrity": "sha512-IPaCZN7PShZK/3t6Q87pfTkRm6oLTd4vztyoj+cbHUF1g3FfVb2tFIL79uCRKEfv16AhqDMBywP2VW3KIZUvcg==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@mui/x-date-pickers/node_modules/react-is": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.1.0.tgz", + "integrity": "sha512-Oe56aUPnkHyyDxxkvqtd7KkdQP5uIUfHxd5XTb3wE9d/kRnZLmKbDB0GWk919tdQ+mxxPtG6EAs6RMT6i1qtHg==", + "license": "MIT" + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pdf-lib/standard-fonts": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@pdf-lib/standard-fonts/-/standard-fonts-1.0.0.tgz", + "integrity": "sha512-hU30BK9IUN/su0Mn9VdlVKsWBS6GyhVfqjwl1FjZN4TxP6cCw0jP2w7V3Hf5uX7M0AZJ16vey9yE0ny7Sa59ZA==", + "license": "MIT", + "dependencies": { + "pako": "^1.0.6" + } + }, + "node_modules/@pdf-lib/upng": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@pdf-lib/upng/-/upng-1.0.1.tgz", + "integrity": "sha512-dQK2FUMQtowVP00mtIksrlZhdFXQZPC+taih1q4CvPZ5vqdxR/LKBaFg0oAfzd1GlHZXXSPdQfzQnt+ViGvEIQ==", + "license": "MIT", + "dependencies": { + "pako": "^1.0.10" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pkgr/core": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.0.tgz", + "integrity": "sha512-vsJDAkYR6qCPu+ioGScGiMYR7LvZYIXh/dlQeviqoTWNCVfKTLYD/LkNWH4Mxsv2a5vpIRc77FN5DnmK1eBggQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@prisma/client": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-6.5.0.tgz", + "integrity": "sha512-M6w1Ql/BeiGoZmhMdAZUXHu5sz5HubyVcKukbLs3l0ELcQb8hTUJxtGEChhv4SVJ0QJlwtLnwOLgIRQhpsm9dw==", + "hasInstallScript": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "peerDependencies": { + "prisma": "*", + "typescript": ">=5.1.0" + }, + "peerDependenciesMeta": { + "prisma": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/@prisma/config": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@prisma/config/-/config-6.5.0.tgz", + "integrity": "sha512-sOH/2Go9Zer67DNFLZk6pYOHj+rumSb0VILgltkoxOjYnlLqUpHPAN826vnx8HigqnOCxj9LRhT6U7uLiIIWgw==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "esbuild": ">=0.12 <1", + "esbuild-register": "3.6.0" + } + }, + "node_modules/@prisma/debug": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.5.0.tgz", + "integrity": "sha512-fc/nusYBlJMzDmDepdUtH9aBsJrda2JNErP9AzuHbgUEQY0/9zQYZdNlXmKoIWENtio+qarPNe/+DQtrX5kMcQ==", + "devOptional": true, + "license": "Apache-2.0" + }, + "node_modules/@prisma/engines": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.5.0.tgz", + "integrity": "sha512-FVPQYHgOllJklN9DUyujXvh3hFJCY0NX86sDmBErLvoZjy2OXGiZ5FNf3J/C4/RZZmCypZBYpBKEhx7b7rEsdw==", + "devOptional": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@prisma/debug": "6.5.0", + "@prisma/engines-version": "6.5.0-73.173f8d54f8d52e692c7e27e72a88314ec7aeff60", + "@prisma/fetch-engine": "6.5.0", + "@prisma/get-platform": "6.5.0" + } + }, + "node_modules/@prisma/engines-version": { + "version": "6.5.0-73.173f8d54f8d52e692c7e27e72a88314ec7aeff60", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.5.0-73.173f8d54f8d52e692c7e27e72a88314ec7aeff60.tgz", + "integrity": "sha512-iK3EmiVGFDCmXjSpdsKGNqy9hOdLnvYBrJB61far/oP03hlIxrb04OWmDjNTwtmZ3UZdA5MCvI+f+3k2jPTflQ==", + "devOptional": true, + "license": "Apache-2.0" + }, + "node_modules/@prisma/fetch-engine": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.5.0.tgz", + "integrity": "sha512-3LhYA+FXP6pqY8FLHCjewyE8pGXXJ7BxZw2rhPq+CZAhvflVzq4K8Qly3OrmOkn6wGlz79nyLQdknyCG2HBTuA==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@prisma/debug": "6.5.0", + "@prisma/engines-version": "6.5.0-73.173f8d54f8d52e692c7e27e72a88314ec7aeff60", + "@prisma/get-platform": "6.5.0" + } + }, + "node_modules/@prisma/get-platform": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.5.0.tgz", + "integrity": "sha512-xYcvyJwNMg2eDptBYFqFLUCfgi+wZLcj6HDMsj0Qw0irvauG4IKmkbywnqwok0B+k+W+p+jThM2DKTSmoPCkzw==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@prisma/debug": "6.5.0" + } + }, + "node_modules/@puppeteer/browsers": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.9.0.tgz", + "integrity": "sha512-8+xM+cFydYET4X/5/3yZMHs7sjS6c9I6H5I3xJdb6cinzxWUT/I2QVw4avxCQ8QDndwdHkG/FiSZIrCjAbaKvQ==", + "license": "Apache-2.0", + "dependencies": { + "debug": "^4.4.0", + "extract-zip": "^2.0.1", + "progress": "^2.0.3", + "proxy-agent": "^6.5.0", + "semver": "^7.7.1", + "tar-fs": "^3.0.8", + "yargs": "^17.7.2" + }, + "bin": { + "browsers": "lib/cjs/main-cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@puppeteer/browsers/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@redis/bloom": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-1.2.0.tgz", + "integrity": "sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg==", + "license": "MIT", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/client": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.6.0.tgz", + "integrity": "sha512-aR0uffYI700OEEH4gYnitAnv3vzVGXCFvYfdpu/CJKvk4pHfLPEy/JSZyrpQ+15WhXe1yJRXLtfQ84s4mEXnPg==", + "license": "MIT", + "dependencies": { + "cluster-key-slot": "1.1.2", + "generic-pool": "3.9.0", + "yallist": "4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@redis/client/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, + "node_modules/@redis/graph": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@redis/graph/-/graph-1.1.1.tgz", + "integrity": "sha512-FEMTcTHZozZciLRl6GiiIB4zGm5z5F3F6a6FZCyrfxdKOhFlGkiAqlexWMBzCi4DcRoyiOsuLfW+cjlGWyExOw==", + "license": "MIT", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/json": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@redis/json/-/json-1.0.7.tgz", + "integrity": "sha512-6UyXfjVaTBTJtKNG4/9Z8PSpKE6XgSyEb8iwaqDcy+uKrd/DGYHTWkUdnQDyzm727V7p21WUMhsqz5oy65kPcQ==", + "license": "MIT", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/search": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@redis/search/-/search-1.2.0.tgz", + "integrity": "sha512-tYoDBbtqOVigEDMAcTGsRlMycIIjwMCgD8eR2t0NANeQmgK/lvxNAvYyb6bZDD4frHRhIHkJu2TBRvB0ERkOmw==", + "license": "MIT", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/time-series": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-1.1.0.tgz", + "integrity": "sha512-c1Q99M5ljsIuc4YdaCwfUEXsofakb9c8+Zse2qxTadu8TalLXuAESzLvFAvNVbkmSlvlzIQOLpBCmWI9wTOt+g==", + "license": "MIT", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@remirror/core-constants": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@remirror/core-constants/-/core-constants-3.0.0.tgz", + "integrity": "sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg==", + "license": "MIT" + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.37.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.37.0.tgz", + "integrity": "sha512-LWbXUBwn/bcLx2sSsqy7pK5o+Nr+VCoRoAohfJ5C/aBio9nfJmGQqHAhU6pwxV/RmyTk5AqdySma7uwWGlmeuA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@tailwindcss/node": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.1.tgz", + "integrity": "sha512-xvlh4pvfG/bkv0fEtJDABAm1tjtSmSyi2QmS4zyj1EKNI1UiOYiUq1IphSwDsNJ5vJ9cWEGs4rJXpUdCN2kujQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "enhanced-resolve": "^5.18.1", + "jiti": "^2.4.2", + "lightningcss": "1.29.2", + "tailwindcss": "4.1.1" + } + }, + "node_modules/@tailwindcss/node/node_modules/tailwindcss": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.1.tgz", + "integrity": "sha512-QNbdmeS979Efzim2g/bEvfuh+fTcIdp1y7gA+sb6OYSW74rt7Cr7M78AKdf6HqWT3d5AiTb7SwTT3sLQxr4/qw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.1.tgz", + "integrity": "sha512-7+YBgnPQ4+jv6B6WVOerJ6WOzDzNJXrRKDts674v6TKAqFqYRr9+EBtSziO7nNcwQ8JtoZNMeqA+WJDjtCM/7w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.1.1", + "@tailwindcss/oxide-darwin-arm64": "4.1.1", + "@tailwindcss/oxide-darwin-x64": "4.1.1", + "@tailwindcss/oxide-freebsd-x64": "4.1.1", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.1", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.1", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.1", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.1", + "@tailwindcss/oxide-linux-x64-musl": "4.1.1", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.1", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.1" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.1.tgz", + "integrity": "sha512-gTyRzfdParpoCU1yyUC/iN6XK6T0Ra4bDlF8Aeul5NP9cLzKEZDogdNVNGv5WZmCDkVol7qlex7TMmcfytMmmw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.1.tgz", + "integrity": "sha512-dI0QbdMWBvLB3MtaTKetzUKG9CUUQow8JSP4Nm+OxVokeZ+N+f1OmZW/hW1LzMxpx9RQCBgSRL+IIvKRat5Wdg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.1.tgz", + "integrity": "sha512-2Y+NPQOTRBCItshPgY/CWg4bKi7E9evMg4bgdb6h9iZObCZLOe3doPcuSxGS3DB0dKyMFKE8pTdWtFUbxZBMSA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.1.tgz", + "integrity": "sha512-N97NGMsB/7CHShbc5ube4dcsW/bYENkBrg8yWi8ieN9boYVRdw3cZviVryV/Nfu9bKbBV9kUvduFF2qBI7rEqg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.1.tgz", + "integrity": "sha512-33Lk6KbHnUZbXqza6RWNFo9wqPQ4+H5BAn1CkUUfC1RZ1vYbyDN6+iJPj53wmnWJ3mhRI8jWt3Jt1fO02IVdUQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.1.tgz", + "integrity": "sha512-LyW35RzSUy+80WYScv03HKasAUmMFDaSbNpWfk1gG5gEE9kuRGnDzSrqMoLAmY/kzMCYP/1kqmUiAx8EFLkI2A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.1.tgz", + "integrity": "sha512-1KPnDMlHdqjPTUSFjx55pafvs8RZXRgxfeRgUrukwDKkuj7gFk28vW3Mx65YdiugAc9NWs3VgueZWaM1Po6uGw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.1.tgz", + "integrity": "sha512-4WdzA+MRlsinEEE6yxNMLJxpw0kE9XVipbAKdTL8BeUpyC2TdA3TL46lBulXzKp3BIxh3nqyR/UCqzl5o+3waQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.1.tgz", + "integrity": "sha512-q7Ugbw3ARcjCW2VMUYrcMbJ6aMQuWPArBBE2EqC/swPZTdGADvMQSlvR0VKusUM4HoSsO7ZbvcZ53YwR57+AKw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.1.tgz", + "integrity": "sha512-0KpqsovgHcIzm7eAGzzEZsEs0/nPYXnRBv+aPq/GehpNQuE/NAQu+YgZXIIof+VflDFuyXOEnaFr7T5MZ1INhA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.1.tgz", + "integrity": "sha512-B1mjeXNS26kBOHv5sXARf6Wd0PWHV9x1TDlW0ummrBUOUAxAy5wcy4Nii1wzNvCdvC448hgiL06ylhwAbNthmg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/postcss": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.1.1.tgz", + "integrity": "sha512-GX9AEM+msH0i2Yh1b6CuDRaZRo3kmbvIrLbSfvJ53C3uaAgsQ//fTQAh9HMQ6t1a9zvoUptlYqG//plWsBQTCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "@tailwindcss/node": "4.1.1", + "@tailwindcss/oxide": "4.1.1", + "postcss": "^8.4.41", + "tailwindcss": "4.1.1" + } + }, + "node_modules/@tailwindcss/postcss/node_modules/postcss": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/@tailwindcss/postcss/node_modules/tailwindcss": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.1.tgz", + "integrity": "sha512-QNbdmeS979Efzim2g/bEvfuh+fTcIdp1y7gA+sb6OYSW74rt7Cr7M78AKdf6HqWT3d5AiTb7SwTT3sLQxr4/qw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tanstack/react-virtual": { + "version": "3.13.5", + "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.13.5.tgz", + "integrity": "sha512-MzSSMGkFWCDSb2xXqmdbfQqBG4wcRI3JKVjpYGZG0CccnViLpfRW4tGU97ImfBbSYzvEWJ/2SK/OiIoSmcUBAA==", + "license": "MIT", + "dependencies": { + "@tanstack/virtual-core": "3.13.5" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@tanstack/virtual-core": { + "version": "3.13.5", + "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.13.5.tgz", + "integrity": "sha512-gMLNylxhJdUlfRR1G3U9rtuwUh2IjdrrniJIDcekVJN3/3i+bluvdMi3+eodnxzJq5nKnxnigo9h0lIpaqV6HQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tinymce/tinymce-react": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@tinymce/tinymce-react/-/tinymce-react-6.1.0.tgz", + "integrity": "sha512-K0MP3yYVKe8+etUwsg6zyRq+q9TGLaVf005WiBHiB8JZEomAwbBPERGunhU9uOqNQ5gJs8yVOPZ68Xcd1UHclA==", + "license": "MIT", + "dependencies": { + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": "^19.0.0 || ^18.0.0 || ^17.0.1 || ^16.7.0", + "react-dom": "^19.0.0 || ^18.0.0 || ^17.0.1 || ^16.7.0", + "tinymce": "^7.0.0 || ^6.0.0 || ^5.5.1" + }, + "peerDependenciesMeta": { + "tinymce": { + "optional": true + } + } + }, + "node_modules/@tiptap/core": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.11.7.tgz", + "integrity": "sha512-zN+NFFxLsxNEL8Qioc+DL6b8+Tt2bmRbXH22Gk6F6nD30x83eaUSFlSv3wqvgyCq3I1i1NO394So+Agmayx6rQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/pm": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-blockquote": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-2.11.7.tgz", + "integrity": "sha512-liD8kWowl3CcYCG9JQlVx1eSNc/aHlt6JpVsuWvzq6J8APWX693i3+zFqyK2eCDn0k+vW62muhSBe3u09hA3Zw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-bold": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.11.7.tgz", + "integrity": "sha512-VTR3JlldBixXbjpLTFme/Bxf1xeUgZZY3LTlt5JDlCW3CxO7k05CIa+kEZ8LXpog5annytZDUVtWqxrNjmsuHQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-bubble-menu": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.11.7.tgz", + "integrity": "sha512-0vYqSUSSap3kk3/VT4tFE1/6StX70I3/NKQ4J68ZSFgkgyB3ZVlYv7/dY3AkEukjsEp3yN7m8Gw8ei2eEwyzwg==", + "license": "MIT", + "dependencies": { + "tippy.js": "^6.3.7" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0", + "@tiptap/pm": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-bullet-list": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-2.11.7.tgz", + "integrity": "sha512-WbPogE2/Q3e3/QYgbT1Sj4KQUfGAJNc5pvb7GrUbvRQsAh7HhtuO8hqdDwH8dEdD/cNUehgt17TO7u8qV6qeBw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-code": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-2.11.7.tgz", + "integrity": "sha512-VpPO1Uy/eF4hYOpohS/yMOcE1C07xmMj0/D989D9aS1x95jWwUVrSkwC+PlWMUBx9PbY2NRsg1ZDwVvlNKZ6yQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-code-block": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-2.11.7.tgz", + "integrity": "sha512-To/y/2H04VWqiANy53aXjV7S6fA86c2759RsH1hTIe57jA1KyE7I5tlAofljOLZK/covkGmPeBddSPHGJbz++Q==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0", + "@tiptap/pm": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-document": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-2.11.7.tgz", + "integrity": "sha512-95ouJXPjdAm9+VBRgFo4lhDoMcHovyl/awORDI8gyEn0Rdglt+ZRZYoySFzbVzer9h0cre+QdIwr9AIzFFbfdA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-dropcursor": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-2.11.7.tgz", + "integrity": "sha512-63mL+nxQILizsr5NbmgDeOjFEWi34BLt7evwL6UUZEVM15K8V1G8pD9Y0kCXrZYpHWz0tqFRXdrhDz0Ppu8oVw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0", + "@tiptap/pm": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-floating-menu": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-floating-menu/-/extension-floating-menu-2.11.7.tgz", + "integrity": "sha512-DG54WoUu2vxHRVzKZiR5I5RMOYj45IlxQMkBAx1wjS0ch41W8DUYEeipvMMjCeKtEI+emz03xYUcOAP9LRmg+w==", + "license": "MIT", + "dependencies": { + "tippy.js": "^6.3.7" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0", + "@tiptap/pm": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-gapcursor": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-2.11.7.tgz", + "integrity": "sha512-EceesmPG7FyjXZ8EgeJPUov9G1mAf2AwdypxBNH275g6xd5dmU/KvjoFZjmQ0X1ve7mS+wNupVlGxAEUYoveew==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0", + "@tiptap/pm": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-hard-break": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-2.11.7.tgz", + "integrity": "sha512-zTkZSA6q+F5sLOdCkiC2+RqJQN0zdsJqvFIOVFL/IDVOnq6PZO5THzwRRLvOSnJJl3edRQCl/hUgS0L5sTInGQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-heading": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-2.11.7.tgz", + "integrity": "sha512-8kWh7y4Rd2fwxfWOhFFWncHdkDkMC1Z60yzIZWjIu72+6yQxvo8w3yeb7LI7jER4kffbMmadgcfhCHC/fkObBA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-history": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-history/-/extension-history-2.11.7.tgz", + "integrity": "sha512-Cu5x3aS13I040QSRoLdd+w09G4OCVfU+azpUqxufZxeNs9BIJC+0jowPLeOxKDh6D5GGT2A8sQtxc6a/ssbs8g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0", + "@tiptap/pm": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-horizontal-rule": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.11.7.tgz", + "integrity": "sha512-uVmQwD2dzZ5xwmvUlciy0ItxOdOfQjH6VLmu80zyJf8Yu7mvwP8JyxoXUX0vd1xHpwAhgQ9/ozjIWYGIw79DPQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0", + "@tiptap/pm": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-italic": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.11.7.tgz", + "integrity": "sha512-r985bkQfG0HMpmCU0X0p/Xe7U1qgRm2mxvcp6iPCuts2FqxaCoyfNZ8YnMsgVK1mRhM7+CQ5SEg2NOmQNtHvPw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-link": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-2.11.7.tgz", + "integrity": "sha512-qKIowE73aAUrnQCIifYP34xXOHOsZw46cT/LBDlb0T60knVfQoKVE4ku08fJzAV+s6zqgsaaZ4HVOXkQYLoW7g==", + "license": "MIT", + "dependencies": { + "linkifyjs": "^4.2.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0", + "@tiptap/pm": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-list-item": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-2.11.7.tgz", + "integrity": "sha512-6ikh7Y+qAbkSuIHXPIINqfzmWs5uIGrylihdZ9adaIyvrN1KSnWIqrZIk/NcZTg5YFIJlXrnGSRSjb/QM3WUhw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-ordered-list": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-2.11.7.tgz", + "integrity": "sha512-bLGCHDMB0vbJk7uu8bRg8vES3GsvxkX7Cgjgm/6xysHFbK98y0asDtNxkW1VvuRreNGz4tyB6vkcVCfrxl4jKw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-paragraph": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-2.11.7.tgz", + "integrity": "sha512-Pl3B4q6DJqTvvAdraqZaNP9Hh0UWEHL5nNdxhaRNuhKaUo7lq8wbDSIxIW3lvV0lyCs0NfyunkUvSm1CXb6d4Q==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-strike": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.11.7.tgz", + "integrity": "sha512-D6GYiW9F24bvAY7XMOARNZbC8YGPzdzWdXd8VOOJABhf4ynMi/oW4NNiko+kZ67jn3EGaKoz32VMJzNQgYi1HA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-text": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-2.11.7.tgz", + "integrity": "sha512-wObCn8qZkIFnXTLvBP+X8KgaEvTap/FJ/i4hBMfHBCKPGDx99KiJU6VIbDXG8d5ZcFZE0tOetK1pP5oI7qgMlQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-text-style": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-text-style/-/extension-text-style-2.11.7.tgz", + "integrity": "sha512-LHO6DBg/9SkCQFdWlVfw9nolUmw+Cid94WkTY+7IwrpyG2+ZGQxnKpCJCKyeaFNbDoYAtvu0vuTsSXeCkgShcA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/pm": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-2.11.7.tgz", + "integrity": "sha512-7gEEfz2Q6bYKXM07vzLUD0vqXFhC5geWRA6LCozTiLdVFDdHWiBrvb2rtkL5T7mfLq03zc1QhH7rI3F6VntOEA==", + "license": "MIT", + "dependencies": { + "prosemirror-changeset": "^2.2.1", + "prosemirror-collab": "^1.3.1", + "prosemirror-commands": "^1.6.2", + "prosemirror-dropcursor": "^1.8.1", + "prosemirror-gapcursor": "^1.3.2", + "prosemirror-history": "^1.4.1", + "prosemirror-inputrules": "^1.4.0", + "prosemirror-keymap": "^1.2.2", + "prosemirror-markdown": "^1.13.1", + "prosemirror-menu": "^1.2.4", + "prosemirror-model": "^1.23.0", + "prosemirror-schema-basic": "^1.2.3", + "prosemirror-schema-list": "^1.4.1", + "prosemirror-state": "^1.4.3", + "prosemirror-tables": "^1.6.4", + "prosemirror-trailing-node": "^3.0.0", + "prosemirror-transform": "^1.10.2", + "prosemirror-view": "^1.37.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + } + }, + "node_modules/@tiptap/react": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/react/-/react-2.11.7.tgz", + "integrity": "sha512-gQZEUkAoPsBptnB4T2gAtiUxswjVGhfsM9vOElQco+b11DYmy110T2Zuhg+2YGvB/CG3RoWJx34808P0FX1ijA==", + "license": "MIT", + "dependencies": { + "@tiptap/extension-bubble-menu": "^2.11.7", + "@tiptap/extension-floating-menu": "^2.11.7", + "@types/use-sync-external-store": "^0.0.6", + "fast-deep-equal": "^3", + "use-sync-external-store": "^1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0", + "@tiptap/pm": "^2.7.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@tiptap/starter-kit": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/starter-kit/-/starter-kit-2.11.7.tgz", + "integrity": "sha512-K+q51KwNU/l0kqRuV5e1824yOLVftj6kGplGQLvJG56P7Rb2dPbM/JeaDbxQhnHT/KDGamG0s0Po0M3pPY163A==", + "license": "MIT", + "dependencies": { + "@tiptap/core": "^2.11.7", + "@tiptap/extension-blockquote": "^2.11.7", + "@tiptap/extension-bold": "^2.11.7", + "@tiptap/extension-bullet-list": "^2.11.7", + "@tiptap/extension-code": "^2.11.7", + "@tiptap/extension-code-block": "^2.11.7", + "@tiptap/extension-document": "^2.11.7", + "@tiptap/extension-dropcursor": "^2.11.7", + "@tiptap/extension-gapcursor": "^2.11.7", + "@tiptap/extension-hard-break": "^2.11.7", + "@tiptap/extension-heading": "^2.11.7", + "@tiptap/extension-history": "^2.11.7", + "@tiptap/extension-horizontal-rule": "^2.11.7", + "@tiptap/extension-italic": "^2.11.7", + "@tiptap/extension-list-item": "^2.11.7", + "@tiptap/extension-ordered-list": "^2.11.7", + "@tiptap/extension-paragraph": "^2.11.7", + "@tiptap/extension-strike": "^2.11.7", + "@tiptap/extension-text": "^2.11.7", + "@tiptap/extension-text-style": "^2.11.7", + "@tiptap/pm": "^2.11.7" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + } + }, + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", + "license": "MIT" + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/bcryptjs": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/@types/bcryptjs/-/bcryptjs-2.4.6.tgz", + "integrity": "sha512-9xlo6R2qDs5uixm0bcIqCeMCE6HiQsIyel9KQySStiyqNl2tnj2mP3DX1Nf56MD6KMenNNlBBsy3LJ7gUEQPXQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", + "license": "MIT" + }, + "node_modules/@types/cors": { + "version": "2.8.17", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/express": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.1.tgz", + "integrity": "sha512-UZUw8vjpWFXuDnjFTh7/5c2TWDlQqeXHi6hcN7F2XSVT5P+WmUnnbFS3KA6Jnc6IsEqI2qCVu2bK0R0J4A8ZQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^5.0.0", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.6.tgz", + "integrity": "sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.6.tgz", + "integrity": "sha512-lPByRJUer/iN/xa4qpyL0qmL11DqNW81iU/IG1S3uvRUq4oKagz8VCxZjiWkumgt66YT3vOdDgZ0o32sGKtCEw==", + "license": "MIT", + "dependencies": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/jsonwebtoken": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.9.tgz", + "integrity": "sha512-uoe+GxEuHbvy12OUQct2X9JenKM3qAscquYymuQN4fMWG9DBQtykrQEFcAbVACF7qaLw9BePSodUL0kquqBJpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/ms": "*", + "@types/node": "*" + } + }, + "node_modules/@types/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", + "license": "MIT" + }, + "node_modules/@types/markdown-it": { + "version": "14.1.2", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", + "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", + "license": "MIT", + "dependencies": { + "@types/linkify-it": "^5", + "@types/mdurl": "^2" + } + }, + "node_modules/@types/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", + "license": "MIT" + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/multer": { + "version": "1.4.12", + "resolved": "https://registry.npmjs.org/@types/multer/-/multer-1.4.12.tgz", + "integrity": "sha512-pQ2hoqvXiJt2FP9WQVLPRO+AmiIm/ZYkavPlIQnx282u4ZrVdztx0pkh3jjpQt0Kz+YI0YhSG264y08UJKoUQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/node": { + "version": "22.13.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.14.tgz", + "integrity": "sha512-Zs/Ollc1SJ8nKUAgc7ivOEdIBM8JAKgrqqUYi2J997JuKO7/tpQC+WCetQ1sypiKCQWHdvdg9wBNpUPEWZae7w==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.20.0" + } + }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "license": "MIT" + }, + "node_modules/@types/prop-types": { + "version": "15.7.14", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", + "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==", + "license": "MIT" + }, + "node_modules/@types/qs": { + "version": "6.9.18", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.18.tgz", + "integrity": "sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "19.0.12", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.12.tgz", + "integrity": "sha512-V6Ar115dBDrjbtXSrS+/Oruobc+qVbbUxDFC1RSbRqLt5SYvxxyIDrSC85RWml54g+jfNeEMZhEj7wW07ONQhA==", + "license": "MIT", + "dependencies": { + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-beautiful-dnd": { + "version": "13.1.8", + "resolved": "https://registry.npmjs.org/@types/react-beautiful-dnd/-/react-beautiful-dnd-13.1.8.tgz", + "integrity": "sha512-E3TyFsro9pQuK4r8S/OL6G99eq7p8v29sX0PM7oT8Z+PJfZvSQTx4zTQbUJ+QZXioAF0e7TGBEcA1XhYhCweyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-dom": { + "version": "19.0.4", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.0.4.tgz", + "integrity": "sha512-4fSQ8vWFkg+TGhePfUzVmat3eC14TXYSsiiDSLI0dVLsrm9gZFABjPy/Qu6TKgl1tq1Bu1yDsuQgY3A3DOjCcg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.0.0" + } + }, + "node_modules/@types/react-redux": { + "version": "7.1.34", + "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.34.tgz", + "integrity": "sha512-GdFaVjEbYv4Fthm2ZLvj1VSCedV7TqE5y1kNwnjSdBOTXuRSgowux6J8TAct15T3CKBr63UMk+2CO7ilRhyrAQ==", + "license": "MIT", + "dependencies": { + "@types/hoist-non-react-statics": "^3.3.0", + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0", + "redux": "^4.0.0" + } + }, + "node_modules/@types/react-transition-group": { + "version": "4.4.12", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.12.tgz", + "integrity": "sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "node_modules/@types/sharp": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@types/sharp/-/sharp-0.32.0.tgz", + "integrity": "sha512-OOi3kL+FZDnPhVzsfD37J88FNeZh6gQsGcLc95NbeURRGvmSjeXiDcyWzF2o3yh/gQAUn2uhh/e+CPCa5nwAxw==", + "deprecated": "This is a stub types definition. sharp provides its own type definitions, so you do not need this installed.", + "license": "MIT", + "dependencies": { + "sharp": "*" + } + }, + "node_modules/@types/ua-parser-js": { + "version": "0.7.39", + "resolved": "https://registry.npmjs.org/@types/ua-parser-js/-/ua-parser-js-0.7.39.tgz", + "integrity": "sha512-P/oDfpofrdtF5xw433SPALpdSchtJmY7nsJItf8h3KXqOslkbySh8zq4dSWXH2oTjRvJ5PczVEoCZPow6GicLg==", + "license": "MIT" + }, + "node_modules/@types/use-sync-external-store": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.6.tgz", + "integrity": "sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==", + "license": "MIT" + }, + "node_modules/@types/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "license": "MIT", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.28.0.tgz", + "integrity": "sha512-lvFK3TCGAHsItNdWZ/1FkvpzCxTHUVuFrdnOGLMa0GGCFIbCgQWVk3CzCGdA7kM3qGVc+dfW9tr0Z/sHnGDFyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.28.0", + "@typescript-eslint/type-utils": "8.28.0", + "@typescript-eslint/utils": "8.28.0", + "@typescript-eslint/visitor-keys": "8.28.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.28.0.tgz", + "integrity": "sha512-LPcw1yHD3ToaDEoljFEfQ9j2xShY367h7FZ1sq5NJT9I3yj4LHer1Xd1yRSOdYy9BpsrxU7R+eoDokChYM53lQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.28.0", + "@typescript-eslint/types": "8.28.0", + "@typescript-eslint/typescript-estree": "8.28.0", + "@typescript-eslint/visitor-keys": "8.28.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.28.0.tgz", + "integrity": "sha512-u2oITX3BJwzWCapoZ/pXw6BCOl8rJP4Ij/3wPoGvY8XwvXflOzd1kLrDUUUAIEdJSFh+ASwdTHqtan9xSg8buw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.28.0", + "@typescript-eslint/visitor-keys": "8.28.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.28.0.tgz", + "integrity": "sha512-oRoXu2v0Rsy/VoOGhtWrOKDiIehvI+YNrDk5Oqj40Mwm0Yt01FC/Q7nFqg088d3yAsR1ZcZFVfPCTTFCe/KPwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.28.0", + "@typescript-eslint/utils": "8.28.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.28.0.tgz", + "integrity": "sha512-bn4WS1bkKEjx7HqiwG2JNB3YJdC1q6Ue7GyGlwPHyt0TnVq6TtD/hiOdTZt71sq0s7UzqBFXD8t8o2e63tXgwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.28.0.tgz", + "integrity": "sha512-H74nHEeBGeklctAVUvmDkxB1mk+PAZ9FiOMPFncdqeRBXxk1lWSYraHw8V12b7aa6Sg9HOBNbGdSHobBPuQSuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.28.0", + "@typescript-eslint/visitor-keys": "8.28.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.28.0.tgz", + "integrity": "sha512-OELa9hbTYciYITqgurT1u/SzpQVtDLmQMFzy/N8pQE+tefOyCWT79jHsav294aTqV1q1u+VzqDGbuujvRYaeSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.28.0", + "@typescript-eslint/types": "8.28.0", + "@typescript-eslint/typescript-estree": "8.28.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.28.0.tgz", + "integrity": "sha512-hbn8SZ8w4u2pRwgQ1GlUrPKE+t2XvcCW5tTRF7j6SMYIuYG37XuzIW44JCZPa36evi0Oy2SnM664BlIaAuQcvg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.28.0", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz", + "integrity": "sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.26.0", + "@babel/plugin-transform-react-jsx-self": "^7.25.9", + "@babel/plugin-transform-react-jsx-source": "^7.25.9", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.14.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/adler-32": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz", + "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/agent-base": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true, + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==", + "license": "MIT" + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true, + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "license": "MIT" + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "license": "MIT" + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "license": "MIT", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/attr-accept": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.5.tgz", + "integrity": "sha512-0bDNnY/u6pPwHDMoF0FieU354oBi0a8rD9FcsLwzcGWbc8KS8KPIi7y+s13OlVY+gMWc/9xEMUgNE6Qm8ZllYQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.17", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.17.tgz", + "integrity": "sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.22.2", + "caniuse-lite": "^1.0.30001578", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", + "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==", + "license": "MIT" + }, + "node_modules/axios": { + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz", + "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/b4a": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", + "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", + "license": "Apache-2.0" + }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/bare-events": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz", + "integrity": "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==", + "license": "Apache-2.0", + "optional": true + }, + "node_modules/bare-fs": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.0.2.tgz", + "integrity": "sha512-S5mmkMesiduMqnz51Bfh0Et9EX0aTCJxhsI4bvzFFLs8Z1AV8RDHadfY5CyLwdoLHgXbNBEN1gQcbEtGwuvixw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "bare-events": "^2.5.4", + "bare-path": "^3.0.0", + "bare-stream": "^2.6.4" + }, + "engines": { + "bare": ">=1.16.0" + }, + "peerDependencies": { + "bare-buffer": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + } + } + }, + "node_modules/bare-os": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.1.tgz", + "integrity": "sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==", + "license": "Apache-2.0", + "optional": true, + "engines": { + "bare": ">=1.14.0" + } + }, + "node_modules/bare-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", + "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "bare-os": "^3.0.1" + } + }, + "node_modules/bare-stream": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.6.5.tgz", + "integrity": "sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "streamx": "^2.21.0" + }, + "peerDependencies": { + "bare-buffer": "*", + "bare-events": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + }, + "bare-events": { + "optional": true + } + } + }, + "node_modules/base-64": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz", + "integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==", + "license": "MIT" + }, + "node_modules/base-x": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.11.tgz", + "integrity": "sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/basic-ftp": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", + "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "license": "BSD-3-Clause", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/bcryptjs": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", + "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==", + "license": "MIT" + }, + "node_modules/bech32": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz", + "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==", + "license": "MIT" + }, + "node_modules/big-integer": { + "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", + "license": "Unlicense", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/bigi": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/bigi/-/bigi-1.4.2.tgz", + "integrity": "sha512-ddkU+dFIuEIW8lE7ZwdIAf2UPoM90eaprg5m3YXAVVTmKlqV/9BX4A2M8BOK2yOq6/VgZFVhK6QAxJebhlbhzw==" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bip-schnorr": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/bip-schnorr/-/bip-schnorr-0.6.4.tgz", + "integrity": "sha512-dNKw7Lea8B0wMIN4OjEmOk/Z5qUGqoPDY0P2QttLqGk1hmDPytLWW8PR5Pb6Vxy6CprcdEgfJpOjUu+ONQveyg==", + "license": "MIT", + "dependencies": { + "bigi": "^1.4.2", + "ecurve": "^1.0.6", + "js-sha256": "^0.9.0", + "randombytes": "^2.1.0", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/bitcore-lib": { + "version": "8.25.47", + "resolved": "https://registry.npmjs.org/bitcore-lib/-/bitcore-lib-8.25.47.tgz", + "integrity": "sha512-qDZr42HuP4P02I8kMGZUx/vvwuDsz8X3rQxXLfM0BtKzlQBcbSM7ycDkDN99Xc5jzpd4fxNQyyFXOmc6owUsrQ==", + "license": "MIT", + "dependencies": { + "bech32": "=2.0.0", + "bip-schnorr": "=0.6.4", + "bn.js": "=4.11.8", + "bs58": "^4.0.1", + "buffer-compare": "=1.1.1", + "elliptic": "^6.5.3", + "inherits": "=2.0.1", + "lodash": "^4.17.20" + } + }, + "node_modules/bitcore-lib/node_modules/inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==", + "license": "ISC" + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "license": "MIT" + }, + "node_modules/bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "license": "MIT" + }, + "node_modules/body-parser": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.13.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/broadcast-channel": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/broadcast-channel/-/broadcast-channel-3.7.0.tgz", + "integrity": "sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "detect-node": "^2.1.0", + "js-sha3": "0.8.0", + "microseconds": "0.2.0", + "nano-time": "1.0.0", + "oblivious-set": "1.0.0", + "rimraf": "3.0.2", + "unload": "2.2.0" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "license": "MIT" + }, + "node_modules/browserslist": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "license": "MIT", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-compare": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-compare/-/buffer-compare-1.1.1.tgz", + "integrity": "sha512-O6NvNiHZMd3mlIeMDjP6t/gPG75OqGPeiRZXoMQZJ6iy9GofCls4Ijs5YkPZZwoysizLiedhticmdyx/GyHghA==" + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "license": "BSD-3-Clause" + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/bullmq": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/bullmq/-/bullmq-4.18.2.tgz", + "integrity": "sha512-Cx0O98IlGiFw7UBa+zwGz+nH0Pcl1wfTvMVBlsMna3s0219hXroVovh1xPRgomyUcbyciHiugGCkW0RRNZDHYQ==", + "license": "MIT", + "dependencies": { + "cron-parser": "^4.6.0", + "glob": "^8.0.3", + "ioredis": "^5.3.2", + "lodash": "^4.17.21", + "msgpackr": "^1.6.2", + "node-abort-controller": "^3.1.1", + "semver": "^7.5.4", + "tslib": "^2.0.0", + "uuid": "^9.0.0" + } + }, + "node_modules/bullmq/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/bullmq/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/bullmq/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/byte-length/-/byte-length-1.0.2.tgz", + "integrity": "sha512-ovBpjmsgd/teRmgcPh23d4gJvxDoXtAzEL9xTfMU8Yc2kqCDb7L9jAG0XHl1nzuGl+h3ebCIF1i62UFyA9V/2Q==", + "license": "MIT" + }, + "node_modules/bytebuffer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz", + "integrity": "sha512-IuzSdmADppkZ6DlpycMkm8l9zeEq16fWtLvunEwFiYciR/BHo4E8/xs5piFquG+Za8OWmMqHF8zuRviz2LHvRQ==", + "license": "Apache-2.0", + "dependencies": { + "long": "~3" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001707", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001707.tgz", + "integrity": "sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "license": "Apache-2.0" + }, + "node_modules/cfb": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.2.2.tgz", + "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==", + "license": "Apache-2.0", + "dependencies": { + "adler-32": "~1.3.0", + "crc-32": "~1.2.0" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "license": "BSD-3-Clause", + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chromium-bidi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-3.0.0.tgz", + "integrity": "sha512-ZOGRDAhBMX1uxL2Cm2TDuhImbrsEz5A/tTcVU6RpXEWaTNUNwsHW6njUXizh51Ir6iqHbKAfhA2XK33uBcLo5A==", + "license": "Apache-2.0", + "dependencies": { + "mitt": "^3.0.1", + "zod": "^3.24.1" + }, + "peerDependencies": { + "devtools-protocol": "*" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "license": "MIT" + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cluster-key-slot": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", + "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/codepage": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz", + "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concurrently": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.1.2.tgz", + "integrity": "sha512-H9MWcoPsYddwbOGM6difjVwVZHl63nwMEwDJG/L7VGtuaJhb12h2caPG2tVPWs7emuYix252iGfqOyrz1GczTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2", + "lodash": "^4.17.21", + "rxjs": "^7.8.1", + "shell-quote": "^1.8.1", + "supports-color": "^8.1.1", + "tree-kill": "^1.2.2", + "yargs": "^17.7.2" + }, + "bin": { + "conc": "dist/bin/concurrently.js", + "concurrently": "dist/bin/concurrently.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "license": "MIT" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cosmiconfig/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/crelt": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz", + "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==", + "license": "MIT" + }, + "node_modules/cron-parser": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-4.9.0.tgz", + "integrity": "sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==", + "license": "MIT", + "dependencies": { + "luxon": "^3.2.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "license": "BSD-3-Clause", + "engines": { + "node": "*" + } + }, + "node_modules/css-box-model": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz", + "integrity": "sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==", + "license": "MIT", + "dependencies": { + "tiny-invariant": "^1.0.6" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/date-fns": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.21.0" + }, + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "license": "MIT", + "dependencies": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-file-type": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/detect-file-type/-/detect-file-type-0.2.8.tgz", + "integrity": "sha512-7O8NJl3nx7cLT05lBkHWiY0c3iSNQlDuSM9Jb61buiiDSsBf69rQaMZ42q4HC4YWwf78M4fC710RLWtV8yFtNw==", + "license": "WTFPL", + "dependencies": { + "iconv-lite": "^0.5.1", + "jschardet": "^2.1.1" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/detect-file-type/node_modules/iconv-lite": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.2.tgz", + "integrity": "sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "license": "MIT" + }, + "node_modules/devtools-protocol": { + "version": "0.0.1413902", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1413902.tgz", + "integrity": "sha512-yRtvFD8Oyk7C9Os3GmnFZLu53yAfsnyw1s+mLmHHUK0GQEc9zthHWvS1r67Zqzm5t7v56PILHIVZ7kmFMaL2yQ==", + "license": "BSD-3-Clause" + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dijkstrajs": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz", + "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==", + "license": "MIT" + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true, + "license": "MIT" + }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "node_modules/dotenv": { + "version": "16.4.7", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", + "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "license": "MIT", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/ecc-jsbn/node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "license": "MIT" + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ecurve": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/ecurve/-/ecurve-1.0.6.tgz", + "integrity": "sha512-/BzEjNfiSuB7jIWKcS/z8FK9jNjmEWvUV2YZ4RLSmcDtP7Lq0m6FvDuSnJpBlDpGRpfRQeTLGLBI8H+kEv0r+w==", + "license": "MIT", + "dependencies": { + "bigi": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.123", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.123.tgz", + "integrity": "sha512-refir3NlutEZqlKaBLK0tzlVLe5P2wDKS7UQt/3SpibizgsRAPOsqQC3ffw1nlv3ze5gjRQZYHoPymgVZkplFA==", + "dev": true, + "license": "ISC" + }, + "node_modules/elliptic": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", + "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", + "license": "MIT", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", + "license": "MIT" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", + "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.23.9", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", + "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.0", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-regex": "^1.2.1", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.0", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.3", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.18" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", + "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.6", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.4", + "safe-array-concat": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz", + "integrity": "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==", + "devOptional": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.2", + "@esbuild/android-arm": "0.25.2", + "@esbuild/android-arm64": "0.25.2", + "@esbuild/android-x64": "0.25.2", + "@esbuild/darwin-arm64": "0.25.2", + "@esbuild/darwin-x64": "0.25.2", + "@esbuild/freebsd-arm64": "0.25.2", + "@esbuild/freebsd-x64": "0.25.2", + "@esbuild/linux-arm": "0.25.2", + "@esbuild/linux-arm64": "0.25.2", + "@esbuild/linux-ia32": "0.25.2", + "@esbuild/linux-loong64": "0.25.2", + "@esbuild/linux-mips64el": "0.25.2", + "@esbuild/linux-ppc64": "0.25.2", + "@esbuild/linux-riscv64": "0.25.2", + "@esbuild/linux-s390x": "0.25.2", + "@esbuild/linux-x64": "0.25.2", + "@esbuild/netbsd-arm64": "0.25.2", + "@esbuild/netbsd-x64": "0.25.2", + "@esbuild/openbsd-arm64": "0.25.2", + "@esbuild/openbsd-x64": "0.25.2", + "@esbuild/sunos-x64": "0.25.2", + "@esbuild/win32-arm64": "0.25.2", + "@esbuild/win32-ia32": "0.25.2", + "@esbuild/win32-x64": "0.25.2" + } + }, + "node_modules/esbuild-register": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.6.0.tgz", + "integrity": "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "peerDependencies": { + "esbuild": ">=0.12 <1" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint": { + "version": "9.23.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.23.0.tgz", + "integrity": "sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.19.2", + "@eslint/config-helpers": "^0.2.0", + "@eslint/core": "^0.12.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.23.0", + "@eslint/plugin-kit": "^0.2.7", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.3.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-prettier": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.1.tgz", + "integrity": "sha512-4EQQr6wXwS+ZJSzaR5ZCrYgLxqvUjdXctaEtBqHcbkW944B1NQyO4qpdHQbXBONfwxXdkAY81HH4+LUfrg+zPw==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.5.tgz", + "integrity": "sha512-IKKP8R87pJyMl7WWamLgPkloB16dagPIdd2FjBDbyRYPKo93wS/NbCOPh6gH+ieNLC+XZrhJt/kWj0PS/DFdmg==", + "dev": true, + "license": "MIT", + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.10.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.37.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.4.tgz", + "integrity": "sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-scope": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", + "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/espree": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.3", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.7.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.3.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.12", + "proxy-addr": "~2.0.7", + "qs": "6.13.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.19.0", + "serve-static": "1.16.2", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "license": "BSD-2-Clause", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "engines": [ + "node >=0.6.0" + ], + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-xml-parser": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz", + "integrity": "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "strnum": "^1.1.1" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "license": "MIT", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/file-selector": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-2.1.2.tgz", + "integrity": "sha512-QgXo+mXTe8ljeqUFaX3QVHc5osSItJ/Km+xpocx0aSqWGMSCf6qYs/VnzZgS864Pjn5iceMRFigeAV7AfTlaig==", + "license": "MIT", + "dependencies": { + "tslib": "^2.7.0" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "license": "MIT" + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "license": "MIT", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/frac": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz", + "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", + "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==", + "license": "ISC" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/generic-pool": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.9.0.tgz", + "integrity": "sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-uri": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.4.tgz", + "integrity": "sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==", + "license": "MIT", + "dependencies": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/get-uri/node_modules/data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "license": "ISC", + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "license": "MIT", + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "license": "MIT", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hot-patcher": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hot-patcher/-/hot-patcher-2.0.1.tgz", + "integrity": "sha512-ECg1JFG0YzehicQaogenlcs2qg6WsXQsxtnbr1i696u5tLUjtJdQAh0u2g0Q5YV45f263Ta1GnUJsc8WIfJf4Q==", + "license": "MIT" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ioredis": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.6.0.tgz", + "integrity": "sha512-tBZlIIWbndeWBWCXWZiqtOF/yxf6yZX3tAlTJ7nfo5jhd6dctNxF7QnYlZLZ1a0o0pDoen7CgZqO+zjNaFbJAg==", + "license": "MIT", + "dependencies": { + "@ioredis/commands": "^1.1.1", + "cluster-key-slot": "^1.1.0", + "debug": "^4.3.4", + "denque": "^2.1.0", + "lodash.defaults": "^4.2.0", + "lodash.isarguments": "^3.1.0", + "redis-errors": "^1.2.0", + "redis-parser": "^3.0.0", + "standard-as-callback": "^2.1.0" + }, + "engines": { + "node": ">=12.22.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/ioredis" + } + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "license": "MIT", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "license": "MIT" + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "license": "MIT" + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "license": "MIT" + }, + "node_modules/iterator.prototype": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jiti": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", + "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/js-sha256": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz", + "integrity": "sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==", + "license": "MIT" + }, + "node_modules/js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "license": "MIT" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "license": "MIT" + }, + "node_modules/jschardet": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/jschardet/-/jschardet-2.3.0.tgz", + "integrity": "sha512-6I6xT7XN/7sBB7q8ObzKbmv5vN+blzLcboDE1BNEsEfmRXJValMxO6OIRT69ylPBRemS3rw6US+CMCar0OBc9g==", + "license": "LGPL-2.1+", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "license": "MIT" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "license": "(AFL-2.1 OR BSD-3-Clause)" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "license": "ISC" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "license": "MIT", + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jsonwebtoken/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "license": "MIT", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "license": "MIT", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/layerr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/layerr/-/layerr-3.0.0.tgz", + "integrity": "sha512-tv754Ki2dXpPVApOrjTyRo4/QegVb9eVFq4mjqp4+NM5NaX7syQvN5BBNfV/ZpAHCEHV24XdUVrBAoka4jt3pA==", + "license": "MIT" + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lightningcss": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.29.2.tgz", + "integrity": "sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.29.2", + "lightningcss-darwin-x64": "1.29.2", + "lightningcss-freebsd-x64": "1.29.2", + "lightningcss-linux-arm-gnueabihf": "1.29.2", + "lightningcss-linux-arm64-gnu": "1.29.2", + "lightningcss-linux-arm64-musl": "1.29.2", + "lightningcss-linux-x64-gnu": "1.29.2", + "lightningcss-linux-x64-musl": "1.29.2", + "lightningcss-win32-arm64-msvc": "1.29.2", + "lightningcss-win32-x64-msvc": "1.29.2" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.29.2.tgz", + "integrity": "sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.29.2.tgz", + "integrity": "sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.29.2.tgz", + "integrity": "sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.29.2.tgz", + "integrity": "sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.29.2.tgz", + "integrity": "sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.29.2.tgz", + "integrity": "sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.29.2.tgz", + "integrity": "sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.29.2.tgz", + "integrity": "sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.29.2.tgz", + "integrity": "sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.29.2.tgz", + "integrity": "sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, + "node_modules/linkifyjs": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-4.2.0.tgz", + "integrity": "sha512-pCj3PrQyATaoTYKHrgWRF3SJwsm61udVh+vuls/Rl6SptiDhgE7ziUIudAedRY9QEfynmM7/RmLEfPUyw1HPCw==", + "license": "MIT" + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", + "license": "MIT" + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "license": "MIT" + }, + "node_modules/lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==", + "license": "MIT" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "license": "MIT" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "license": "MIT" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "license": "MIT" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "license": "MIT" + }, + "node_modules/long": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", + "integrity": "sha512-ZYvPPOMqUwPoDsbJaR10iQJYnMuZhRTvHYl62ErLIEX7RgFlziSBUUvrt3OVfc47QlHHpzPZYP17g3Fv7oeJkg==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/luxon": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.6.1.tgz", + "integrity": "sha512-tJLxrKJhO2ukZ5z0gyjY1zPh3Rh88Ej9P7jNrZiHMUXHae1yvI2imgOZtL1TO8TW6biMMKfTtAOoEJANgtWBMQ==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true, + "license": "ISC" + }, + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/match-sorter": { + "version": "6.3.4", + "resolved": "https://registry.npmjs.org/match-sorter/-/match-sorter-6.3.4.tgz", + "integrity": "sha512-jfZW7cWS5y/1xswZo8VBOdudUiSd9nifYRWphc9M5D/ee4w4AoXLgBEdRbgVaxbMuagBPeUC5y2Hi8DO6o9aDg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.8", + "remove-accents": "0.5.0" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "license": "BSD-3-Clause", + "dependencies": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "license": "MIT" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memoize-one": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", + "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==", + "license": "MIT" + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/microseconds": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/microseconds/-/microseconds-0.2.0.tgz", + "integrity": "sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA==", + "license": "MIT" + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "license": "ISC" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "license": "MIT" + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "license": "MIT" + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/moment-timezone": { + "version": "0.5.48", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.48.tgz", + "integrity": "sha512-f22b8LV1gbTO2ms2j2z13MuPogNoh5UzxL3nzNAYKGraILnbGc9NEE6dyiiiLv46DGRb8A4kg8UKWLjPthxBHw==", + "license": "MIT", + "dependencies": { + "moment": "^2.29.4" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/msgpackr": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.2.tgz", + "integrity": "sha512-F9UngXRlPyWCDEASDpTf6c9uNhGPTqnTeLVt7bN+bU1eajoR/8V9ys2BRaV5C/e5ihE6sJ9uPIKaYt6bFuO32g==", + "license": "MIT", + "optionalDependencies": { + "msgpackr-extract": "^3.0.2" + } + }, + "node_modules/msgpackr-extract": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.3.tgz", + "integrity": "sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "node-gyp-build-optional-packages": "5.2.2" + }, + "bin": { + "download-msgpackr-prebuilds": "bin/download-prebuilds.js" + }, + "optionalDependencies": { + "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.3" + } + }, + "node_modules/multer": { + "version": "1.4.5-lts.2", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.2.tgz", + "integrity": "sha512-VzGiVigcG9zUAoCNU+xShztrlr1auZOlurXynNvO9GiWD1/mTBbUljOKY+qMeazBqXgRnjzeEgJI/wyjJUHg9A==", + "license": "MIT", + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^1.0.0", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nano-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/nano-time/-/nano-time-1.0.0.tgz", + "integrity": "sha512-flnngywOoQ0lLQOTRNexn2gGSNuM9bKj9RZAWSzhQ+UJYaAFG9bac4DW9VHjUAzrOaIcajHybCTHe/bkvozQqA==", + "license": "ISC", + "dependencies": { + "big-integer": "^1.6.16" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nested-property": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/nested-property/-/nested-property-4.0.0.tgz", + "integrity": "sha512-yFehXNWRs4cM0+dz7QxCd06hTbWbSkV0ISsqBfkntU6TOY4Qm3Q88fRRLOddkGh2Qq6dZvnKVAahfhjcUvLnyA==", + "license": "MIT" + }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/node-abort-controller": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", + "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", + "license": "MIT" + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "license": "MIT", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/node-gyp-build-optional-packages": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz", + "integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==", + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^2.0.1" + }, + "bin": { + "node-gyp-build-optional-packages": "bin.js", + "node-gyp-build-optional-packages-optional": "optional.js", + "node-gyp-build-optional-packages-test": "build-test.js" + } + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true, + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/oblivious-set": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/oblivious-set/-/oblivious-set-1.0.0.tgz", + "integrity": "sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw==", + "license": "MIT" + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/opentimestamps-javascript": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/opentimestamps-javascript/-/opentimestamps-javascript-1.0.1.tgz", + "integrity": "sha512-DfxcakE7r1h85DMNhmcppYZ2Cc2W3dFdx6u4P7tt6AEwCssOkZd7mHcna/3YdO03M9ivpD3qYMbtxPA8jowEmg==", + "license": "LGPL-3.0", + "dependencies": { + "bitcore-lib": "^8.14.4", + "bytebuffer": "^5.0.1", + "commander": "^2.20.3", + "fs": "0.0.1-security", + "minimatch": "^3.0.4", + "moment-timezone": "^0.5.27", + "promise": "^7.3.1", + "properties": "^1.2.1", + "randomstring": "^1.1.5", + "request": "^2.85.0", + "request-promise": "^4.2.2" + }, + "bin": { + "ots-cli.js": "ots-cli.js" + } + }, + "node_modules/opentimestamps-javascript/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/opentimestamps-javascript/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" + }, + "node_modules/opentimestamps-javascript/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/orderedmap": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/orderedmap/-/orderedmap-2.1.1.tgz", + "integrity": "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==", + "license": "MIT" + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pac-proxy-agent": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz", + "integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==", + "license": "MIT", + "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.6", + "pac-resolver": "^7.0.1", + "socks-proxy-agent": "^8.0.5" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-resolver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", + "license": "MIT", + "dependencies": { + "degenerator": "^5.0.0", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "license": "(MIT AND Zlib)" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-posix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/path-posix/-/path-posix-1.0.0.tgz", + "integrity": "sha512-1gJ0WpNIiYcQydgg3Ed8KzvIqTsDpNwq+cjBCssvBtuTWjEqY1AW+i+OepiEMqDCzyro9B2sLAe4RBPajMYFiA==", + "license": "ISC" + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "license": "MIT" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pdf-lib": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/pdf-lib/-/pdf-lib-1.17.1.tgz", + "integrity": "sha512-V/mpyJAoTsN4cnP31vc0wfNA1+p20evqqnap0KLoRUN0Yk/p3wN52DOEsL4oBFcLdb76hlpKPtzJIgo67j/XLw==", + "license": "MIT", + "dependencies": { + "@pdf-lib/standard-fonts": "^1.0.0", + "@pdf-lib/upng": "^1.0.1", + "pako": "^1.0.11", + "tslib": "^1.11.1" + } + }, + "node_modules/pdf-lib/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "license": "MIT" + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.33", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", + "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/prisma": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.5.0.tgz", + "integrity": "sha512-yUGXmWqv5F4PByMSNbYFxke/WbnyTLjnJ5bKr8fLkcnY7U5rU9rUTh/+Fja+gOrRxEgtCbCtca94IeITj4j/pg==", + "devOptional": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@prisma/config": "6.5.0", + "@prisma/engines": "6.5.0" + }, + "bin": { + "prisma": "build/index.js" + }, + "engines": { + "node": ">=18.18" + }, + "optionalDependencies": { + "fsevents": "2.3.3" + }, + "peerDependencies": { + "typescript": ">=5.1.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "license": "MIT", + "dependencies": { + "asap": "~2.0.3" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/properties/-/properties-1.2.1.tgz", + "integrity": "sha512-qYNxyMj1JeW54i/EWEFsM1cVwxJbtgPp8+0Wg9XjNaK6VE/c4oRi6PNu5p7w1mNXEIQIjV5Wwn8v8Gz82/QzdQ==", + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/prosemirror-changeset": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/prosemirror-changeset/-/prosemirror-changeset-2.2.1.tgz", + "integrity": "sha512-J7msc6wbxB4ekDFj+n9gTW/jav/p53kdlivvuppHsrZXCaQdVgRghoZbSS3kwrRyAstRVQ4/+u5k7YfLgkkQvQ==", + "license": "MIT", + "dependencies": { + "prosemirror-transform": "^1.0.0" + } + }, + "node_modules/prosemirror-collab": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/prosemirror-collab/-/prosemirror-collab-1.3.1.tgz", + "integrity": "sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==", + "license": "MIT", + "dependencies": { + "prosemirror-state": "^1.0.0" + } + }, + "node_modules/prosemirror-commands": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.7.0.tgz", + "integrity": "sha512-6toodS4R/Aah5pdsrIwnTYPEjW70SlO5a66oo5Kk+CIrgJz3ukOoS+FYDGqvQlAX5PxoGWDX1oD++tn5X3pyRA==", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.0.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.10.2" + } + }, + "node_modules/prosemirror-dropcursor": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/prosemirror-dropcursor/-/prosemirror-dropcursor-1.8.1.tgz", + "integrity": "sha512-M30WJdJZLyXHi3N8vxN6Zh5O8ZBbQCz0gURTfPmTIBNQ5pxrdU7A58QkNqfa98YEjSAL1HUyyU34f6Pm5xBSGw==", + "license": "MIT", + "dependencies": { + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.1.0", + "prosemirror-view": "^1.1.0" + } + }, + "node_modules/prosemirror-gapcursor": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/prosemirror-gapcursor/-/prosemirror-gapcursor-1.3.2.tgz", + "integrity": "sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==", + "license": "MIT", + "dependencies": { + "prosemirror-keymap": "^1.0.0", + "prosemirror-model": "^1.0.0", + "prosemirror-state": "^1.0.0", + "prosemirror-view": "^1.0.0" + } + }, + "node_modules/prosemirror-history": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.4.1.tgz", + "integrity": "sha512-2JZD8z2JviJrboD9cPuX/Sv/1ChFng+xh2tChQ2X4bB2HeK+rra/bmJ3xGntCcjhOqIzSDG6Id7e8RJ9QPXLEQ==", + "license": "MIT", + "dependencies": { + "prosemirror-state": "^1.2.2", + "prosemirror-transform": "^1.0.0", + "prosemirror-view": "^1.31.0", + "rope-sequence": "^1.3.0" + } + }, + "node_modules/prosemirror-inputrules": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.5.0.tgz", + "integrity": "sha512-K0xJRCmt+uSw7xesnHmcn72yBGTbY45vm8gXI4LZXbx2Z0jwh5aF9xrGQgrVPu0WbyFVFF3E/o9VhJYz6SQWnA==", + "license": "MIT", + "dependencies": { + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.0.0" + } + }, + "node_modules/prosemirror-keymap": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.2.2.tgz", + "integrity": "sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ==", + "license": "MIT", + "dependencies": { + "prosemirror-state": "^1.0.0", + "w3c-keyname": "^2.2.0" + } + }, + "node_modules/prosemirror-markdown": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/prosemirror-markdown/-/prosemirror-markdown-1.13.2.tgz", + "integrity": "sha512-FPD9rHPdA9fqzNmIIDhhnYQ6WgNoSWX9StUZ8LEKapaXU9i6XgykaHKhp6XMyXlOWetmaFgGDS/nu/w9/vUc5g==", + "license": "MIT", + "dependencies": { + "@types/markdown-it": "^14.0.0", + "markdown-it": "^14.0.0", + "prosemirror-model": "^1.25.0" + } + }, + "node_modules/prosemirror-menu": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/prosemirror-menu/-/prosemirror-menu-1.2.4.tgz", + "integrity": "sha512-S/bXlc0ODQup6aiBbWVsX/eM+xJgCTAfMq/nLqaO5ID/am4wS0tTCIkzwytmao7ypEtjj39i7YbJjAgO20mIqA==", + "license": "MIT", + "dependencies": { + "crelt": "^1.0.0", + "prosemirror-commands": "^1.0.0", + "prosemirror-history": "^1.0.0", + "prosemirror-state": "^1.0.0" + } + }, + "node_modules/prosemirror-model": { + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.25.0.tgz", + "integrity": "sha512-/8XUmxWf0pkj2BmtqZHYJipTBMHIdVjuvFzMvEoxrtyGNmfvdhBiRwYt/eFwy2wA9DtBW3RLqvZnjurEkHaFCw==", + "license": "MIT", + "dependencies": { + "orderedmap": "^2.0.0" + } + }, + "node_modules/prosemirror-schema-basic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/prosemirror-schema-basic/-/prosemirror-schema-basic-1.2.4.tgz", + "integrity": "sha512-ELxP4TlX3yr2v5rM7Sb70SqStq5NvI15c0j9j/gjsrO5vaw+fnnpovCLEGIcpeGfifkuqJwl4fon6b+KdrODYQ==", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.25.0" + } + }, + "node_modules/prosemirror-schema-list": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.5.1.tgz", + "integrity": "sha512-927lFx/uwyQaGwJxLWCZRkjXG0p48KpMj6ueoYiu4JX05GGuGcgzAy62dfiV8eFZftgyBUvLx76RsMe20fJl+Q==", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.0.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.7.3" + } + }, + "node_modules/prosemirror-state": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.3.tgz", + "integrity": "sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.0.0", + "prosemirror-transform": "^1.0.0", + "prosemirror-view": "^1.27.0" + } + }, + "node_modules/prosemirror-tables": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/prosemirror-tables/-/prosemirror-tables-1.6.4.tgz", + "integrity": "sha512-TkDY3Gw52gRFRfRn2f4wJv5WOgAOXLJA2CQJYIJ5+kdFbfj3acR4JUW6LX2e1hiEBiUwvEhzH5a3cZ5YSztpIA==", + "license": "MIT", + "dependencies": { + "prosemirror-keymap": "^1.2.2", + "prosemirror-model": "^1.24.1", + "prosemirror-state": "^1.4.3", + "prosemirror-transform": "^1.10.2", + "prosemirror-view": "^1.37.2" + } + }, + "node_modules/prosemirror-trailing-node": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/prosemirror-trailing-node/-/prosemirror-trailing-node-3.0.0.tgz", + "integrity": "sha512-xiun5/3q0w5eRnGYfNlW1uU9W6x5MoFKWwq/0TIRgt09lv7Hcser2QYV8t4muXbEr+Fwo0geYn79Xs4GKywrRQ==", + "license": "MIT", + "dependencies": { + "@remirror/core-constants": "3.0.0", + "escape-string-regexp": "^4.0.0" + }, + "peerDependencies": { + "prosemirror-model": "^1.22.1", + "prosemirror-state": "^1.4.2", + "prosemirror-view": "^1.33.8" + } + }, + "node_modules/prosemirror-transform": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.10.3.tgz", + "integrity": "sha512-Nhh/+1kZGRINbEHmVu39oynhcap4hWTs/BlU7NnxWj3+l0qi8I1mu67v6mMdEe/ltD8hHvU4FV6PHiCw2VSpMw==", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.21.0" + } + }, + "node_modules/prosemirror-view": { + "version": "1.38.1", + "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.38.1.tgz", + "integrity": "sha512-4FH/uM1A4PNyrxXbD+RAbAsf0d/mM0D/wAKSVVWK7o0A9Q/oOXJBrw786mBf2Vnrs/Edly6dH6Z2gsb7zWwaUw==", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.20.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.1.0" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-agent": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz", + "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.6", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.1.0", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.5" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/psl": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", + "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "funding": { + "url": "https://github.com/sponsors/lupomontero" + } + }, + "node_modules/pump": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/puppeteer": { + "version": "24.5.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.5.0.tgz", + "integrity": "sha512-3m0B48gj1A8cK01ma49WwjE8mg4i9UmnR2lP64rwBiLacJ2V20FpT67MgSUyzfz9BcHMQQweuF6Q854mnIYTqg==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@puppeteer/browsers": "2.9.0", + "chromium-bidi": "3.0.0", + "cosmiconfig": "^9.0.0", + "devtools-protocol": "0.0.1413902", + "puppeteer-core": "24.5.0", + "typed-query-selector": "^2.12.0" + }, + "bin": { + "puppeteer": "lib/cjs/puppeteer/node/cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/puppeteer-core": { + "version": "24.5.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.5.0.tgz", + "integrity": "sha512-vqibSk7xGOoqOlPUk3H+Iz02b4jCEd5QxaiuXclqyyBrJ6ZK22mXkg9HBSpyZePq6vKWh5ZAqUilSnbF2bv4Jg==", + "license": "Apache-2.0", + "dependencies": { + "@puppeteer/browsers": "2.9.0", + "chromium-bidi": "3.0.0", + "debug": "^4.4.0", + "devtools-protocol": "0.0.1413902", + "typed-query-selector": "^2.12.0", + "ws": "^8.18.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/puppeteer/node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/qrcode": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.4.tgz", + "integrity": "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==", + "license": "MIT", + "dependencies": { + "dijkstrajs": "^1.0.1", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + }, + "bin": { + "qrcode": "bin/qrcode" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/qrcode/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/qrcode/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/qrcode/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/qrcode/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/qrcode/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "license": "ISC" + }, + "node_modules/qrcode/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "license": "MIT", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "license": "MIT" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/raf-schd": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.3.tgz", + "integrity": "sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ==", + "license": "MIT" + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randomstring": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/randomstring/-/randomstring-1.3.1.tgz", + "integrity": "sha512-lgXZa80MUkjWdE7g2+PZ1xDLzc7/RokXVEQOv5NN2UOTChW1I8A9gha5a9xYBOqgaSoI6uJikDmCU8PyRdArRQ==", + "license": "MIT", + "dependencies": { + "randombytes": "2.1.0" + }, + "bin": { + "randomstring": "bin/randomstring" + }, + "engines": { + "node": "*" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-beautiful-dnd": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/react-beautiful-dnd/-/react-beautiful-dnd-13.1.1.tgz", + "integrity": "sha512-0Lvs4tq2VcrEjEgDXHjT98r+63drkKEgqyxdA7qD3mvKwga6a5SscbdLPO2IExotU1jW8L0Ksdl0Cj2AF67nPQ==", + "deprecated": "react-beautiful-dnd is now deprecated. Context and options: https://github.com/atlassian/react-beautiful-dnd/issues/2672", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.9.2", + "css-box-model": "^1.2.0", + "memoize-one": "^5.1.1", + "raf-schd": "^4.0.2", + "react-redux": "^7.2.0", + "redux": "^4.0.4", + "use-memo-one": "^1.1.1" + }, + "peerDependencies": { + "react": "^16.8.5 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.5 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-dropzone": { + "version": "14.3.8", + "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.3.8.tgz", + "integrity": "sha512-sBgODnq+lcA4P296DY4wacOZz3JFpD99fp+hb//iBO2HHnyeZU3FwWyXJ6salNpqQdsZrgMrotuko/BdJMV8Ug==", + "license": "MIT", + "dependencies": { + "attr-accept": "^2.2.4", + "file-selector": "^2.1.0", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">= 10.13" + }, + "peerDependencies": { + "react": ">= 16.8 || 18.0.0" + } + }, + "node_modules/react-hook-form": { + "version": "7.55.0", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.55.0.tgz", + "integrity": "sha512-XRnjsH3GVMQz1moZTW53MxfoWN7aDpUg/GpVNc4A3eXRVNdGXfbzJ4vM4aLQ8g6XCUh1nIbx70aaNCl7kxnjog==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/react-hook-form" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17 || ^18 || ^19" + } + }, + "node_modules/react-icons": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.5.0.tgz", + "integrity": "sha512-MEFcXdkP3dLo8uumGI5xN3lDFNsRtrjbOEKDLD7yv76v4wpnEq2Lt2qeHaQOr34I/wPN3s3+N08WkQ+CW37Xiw==", + "license": "MIT", + "peerDependencies": { + "react": "*" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/react-query": { + "version": "3.39.3", + "resolved": "https://registry.npmjs.org/react-query/-/react-query-3.39.3.tgz", + "integrity": "sha512-nLfLz7GiohKTJDuT4us4X3h/8unOh+00MLb2yJoGTPjxKs2bc1iDhkNx2bd5MKklXnOD3NrVZ+J2UXujA5In4g==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.5.5", + "broadcast-channel": "^3.4.1", + "match-sorter": "^6.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, + "node_modules/react-redux": { + "version": "7.2.9", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.9.tgz", + "integrity": "sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.15.4", + "@types/react-redux": "^7.1.20", + "hoist-non-react-statics": "^3.3.2", + "loose-envify": "^1.4.0", + "prop-types": "^15.7.2", + "react-is": "^17.0.2" + }, + "peerDependencies": { + "react": "^16.8.3 || ^17 || ^18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, + "node_modules/react-redux/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "license": "MIT" + }, + "node_modules/react-refresh": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", + "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-router": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.4.1.tgz", + "integrity": "sha512-Vmizn9ZNzxfh3cumddqv3kLOKvc7AskUT0dC1prTabhiEi0U4A33LmkDOJ79tXaeSqCqMBXBU/ySX88W85+EUg==", + "license": "MIT", + "dependencies": { + "@types/cookie": "^0.6.0", + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0", + "turbo-stream": "2.4.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/react-router-dom": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.4.1.tgz", + "integrity": "sha512-L3/4tig0Lvs6m6THK0HRV4eHUdpx0dlJasgCxXKnavwhh4tKYgpuZk75HRYNoRKDyDWi9QgzGXsQ1oQSBlWpAA==", + "license": "MIT", + "dependencies": { + "react-router": "7.4.1" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/react-router/node_modules/cookie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", + "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/react-toastify": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-10.0.6.tgz", + "integrity": "sha512-yYjp+omCDf9lhZcrZHKbSq7YMuK0zcYkDFTzfRFgTXkTFHZ1ToxwAonzA4JI5CxA91JpjFLmwEsZEgfYfOqI1A==", + "license": "MIT", + "dependencies": { + "clsx": "^2.1.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/redis": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/redis/-/redis-4.7.0.tgz", + "integrity": "sha512-zvmkHEAdGMn+hMRXuMBtu4Vo5P6rHQjLoHftu+lBqq8ZTA3RCVC/WzD790bkKKiNFp7d5/9PcSD19fJyyRvOdQ==", + "license": "MIT", + "workspaces": [ + "./packages/*" + ], + "dependencies": { + "@redis/bloom": "1.2.0", + "@redis/client": "1.6.0", + "@redis/graph": "1.1.1", + "@redis/json": "1.0.7", + "@redis/search": "1.2.0", + "@redis/time-series": "1.1.0" + } + }, + "node_modules/redis-errors": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", + "integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/redis-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", + "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==", + "license": "MIT", + "dependencies": { + "redis-errors": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/redux": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", + "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.9.2" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/remove-accents": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.5.0.tgz", + "integrity": "sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==", + "license": "MIT" + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "license": "Apache-2.0", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request-promise": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.6.tgz", + "integrity": "sha512-HCHI3DJJUakkOr8fNoCc73E5nU5bqITjOYFMDrKHYOXWXrgD/SBaC7LjwuPymUprRyuF06UK7hd/lMHkmUXglQ==", + "deprecated": "request-promise has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", + "license": "ISC", + "dependencies": { + "bluebird": "^3.5.0", + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "request": "^2.34" + } + }, + "node_modules/request-promise-core": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "license": "ISC", + "dependencies": { + "lodash": "^4.17.19" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "request": "^2.34" + } + }, + "node_modules/request/node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/request/node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/request/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "license": "MIT", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "license": "ISC" + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "4.37.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.37.0.tgz", + "integrity": "sha512-iAtQy/L4QFU+rTJ1YUjXqJOJzuwEghqWzCEYD2FEghT7Gsy1VdABntrO4CLopA5IkflTyqNiLNwPcOJ3S7UKLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.37.0", + "@rollup/rollup-android-arm64": "4.37.0", + "@rollup/rollup-darwin-arm64": "4.37.0", + "@rollup/rollup-darwin-x64": "4.37.0", + "@rollup/rollup-freebsd-arm64": "4.37.0", + "@rollup/rollup-freebsd-x64": "4.37.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.37.0", + "@rollup/rollup-linux-arm-musleabihf": "4.37.0", + "@rollup/rollup-linux-arm64-gnu": "4.37.0", + "@rollup/rollup-linux-arm64-musl": "4.37.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.37.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.37.0", + "@rollup/rollup-linux-riscv64-gnu": "4.37.0", + "@rollup/rollup-linux-riscv64-musl": "4.37.0", + "@rollup/rollup-linux-s390x-gnu": "4.37.0", + "@rollup/rollup-linux-x64-gnu": "4.37.0", + "@rollup/rollup-linux-x64-musl": "4.37.0", + "@rollup/rollup-win32-arm64-msvc": "4.37.0", + "@rollup/rollup-win32-ia32-msvc": "4.37.0", + "@rollup/rollup-win32-x64-msvc": "4.37.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/rope-sequence": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.4.tgz", + "integrity": "sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==", + "license": "MIT" + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "license": "ISC" + }, + "node_modules/set-cookie-parser": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", + "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", + "license": "MIT" + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/sharp": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", + "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.3", + "semver": "^7.6.3" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.33.5", + "@img/sharp-darwin-x64": "0.33.5", + "@img/sharp-libvips-darwin-arm64": "1.0.4", + "@img/sharp-libvips-darwin-x64": "1.0.4", + "@img/sharp-libvips-linux-arm": "1.0.5", + "@img/sharp-libvips-linux-arm64": "1.0.4", + "@img/sharp-libvips-linux-s390x": "1.0.4", + "@img/sharp-libvips-linux-x64": "1.0.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", + "@img/sharp-libvips-linuxmusl-x64": "1.0.4", + "@img/sharp-linux-arm": "0.33.5", + "@img/sharp-linux-arm64": "0.33.5", + "@img/sharp-linux-s390x": "0.33.5", + "@img/sharp-linux-x64": "0.33.5", + "@img/sharp-linuxmusl-arm64": "0.33.5", + "@img/sharp-linuxmusl-x64": "0.33.5", + "@img/sharp-wasm32": "0.33.5", + "@img/sharp-win32-ia32": "0.33.5", + "@img/sharp-win32-x64": "0.33.5" + } + }, + "node_modules/sharp/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.2.tgz", + "integrity": "sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "license": "MIT" + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.4.tgz", + "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==", + "license": "MIT", + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "license": "BSD-3-Clause" + }, + "node_modules/ssf": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz", + "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", + "license": "Apache-2.0", + "dependencies": { + "frac": "~1.1.2" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/sshpk": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", + "license": "MIT", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sshpk/node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "license": "MIT" + }, + "node_modules/standard-as-callback": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz", + "integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==", + "license": "MIT" + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", + "license": "ISC", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/streamx": { + "version": "2.22.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.0.tgz", + "integrity": "sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==", + "license": "MIT", + "dependencies": { + "fast-fifo": "^1.3.2", + "text-decoder": "^1.1.0" + }, + "optionalDependencies": { + "bare-events": "^2.2.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strnum": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz", + "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, + "node_modules/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==", + "license": "MIT" + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/synckit": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.10.3.tgz", + "integrity": "sha512-R1urvuyiTaWfeCggqEvpDJwAlDVdsT9NM+IP//Tk2x7qHCkSvBk/fwFgw/TLAHzZlrAnnazMcRw0ZD8HlYFTEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.2.0", + "tslib": "^2.8.1" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.1.tgz", + "integrity": "sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.19.1", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss/node_modules/jiti": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-fs": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.8.tgz", + "integrity": "sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg==", + "license": "MIT", + "dependencies": { + "pump": "^3.0.0", + "tar-stream": "^3.1.5" + }, + "optionalDependencies": { + "bare-fs": "^4.0.1", + "bare-path": "^3.0.0" + } + }, + "node_modules/tar-stream": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "license": "MIT", + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, + "node_modules/text-decoder": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", + "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.6.4" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "license": "MIT" + }, + "node_modules/tinymce": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/tinymce/-/tinymce-7.7.2.tgz", + "integrity": "sha512-GX7Jd0ac9ph3QM2yei4uOoxytKX096CyG6VkkgQNikY39T6cDldoNgaqzHHlcm62WtdBMCd7Ch+PYaRnQo+NLA==", + "license": "GPL-2.0-or-later", + "optional": true, + "peer": true + }, + "node_modules/tippy.js": { + "version": "6.3.7", + "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-6.3.7.tgz", + "integrity": "sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==", + "license": "MIT", + "dependencies": { + "@popperjs/core": "^2.9.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "license": "MIT", + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true, + "license": "MIT" + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/turbo-stream": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/turbo-stream/-/turbo-stream-2.4.0.tgz", + "integrity": "sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==", + "license": "ISC" + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "license": "Unlicense" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-query-selector": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.0.tgz", + "integrity": "sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==", + "license": "MIT" + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "license": "MIT" + }, + "node_modules/typescript": { + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", + "devOptional": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/ua-parser-js": { + "version": "1.0.40", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.40.tgz", + "integrity": "sha512-z6PJ8Lml+v3ichVojCiB8toQJBuwR42ySM4ezjXIqXK3M0HczmKQ3LF4rhU55PfD99KEEXQG6yb7iOMyvYuHew==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "license": "MIT", + "bin": { + "ua-parser-js": "script/cli.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "license": "MIT" + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/unload": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unload/-/unload-2.2.0.tgz", + "integrity": "sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.6.2", + "detect-node": "^2.0.4" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-join": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz", + "integrity": "sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "license": "MIT", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/use-memo-one": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.3.tgz", + "integrity": "sha512-g66/K7ZQGYrI6dy8GLpVcMsBp4s17xNkYJVSMvTEevGy3nDxHOfE6z8BVE22+5G5x7t3+bhzrlTDB7ObrEE0cQ==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/use-sync-external-store": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz", + "integrity": "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true, + "license": "MIT" + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/verror/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "license": "MIT" + }, + "node_modules/vite": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.4.tgz", + "integrity": "sha512-veHMSew8CcRzhL5o8ONjy8gkfmFJAd5Ac16oxBUjlwgX3Gq2Wqr+qNC3TjPIpy7TPV/KporLga5GT9HqdrCizw==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "postcss": "^8.5.3", + "rollup": "^4.30.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/postcss": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/w3c-keyname": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", + "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==", + "license": "MIT" + }, + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/webdav": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webdav/-/webdav-5.8.0.tgz", + "integrity": "sha512-iuFG7NamJ41Oshg4930iQgfIpRrUiatPWIekeznYgEf2EOraTRcDPTjy7gIOMtkdpKTaqPk1E68NO5PAGtJahA==", + "license": "MIT", + "dependencies": { + "@buttercup/fetch": "^0.2.1", + "base-64": "^1.0.0", + "byte-length": "^1.0.2", + "entities": "^6.0.0", + "fast-xml-parser": "^4.5.1", + "hot-patcher": "^2.0.1", + "layerr": "^3.0.0", + "md5": "^2.3.0", + "minimatch": "^9.0.5", + "nested-property": "^4.0.0", + "node-fetch": "^3.3.2", + "path-posix": "^1.0.0", + "url-join": "^5.0.0", + "url-parse": "^1.5.10" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/webdav/node_modules/entities": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.0.tgz", + "integrity": "sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "license": "ISC" + }, + "node_modules/which-typed-array": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wmf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", + "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/word": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz", + "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xlsx": { + "version": "0.18.5", + "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz", + "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==", + "license": "Apache-2.0", + "dependencies": { + "adler-32": "~1.3.0", + "cfb": "~1.2.1", + "codepage": "~1.15.0", + "crc-32": "~1.2.1", + "ssf": "~0.11.2", + "wmf": "~1.0.1", + "word": "~0.3.0" + }, + "bin": { + "xlsx": "bin/xlsx.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.1.tgz", + "integrity": "sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "3.24.2", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.2.tgz", + "integrity": "sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..fe20b0c --- /dev/null +++ b/package.json @@ -0,0 +1,121 @@ +{ + "name": "advx", + "version": "1.0.0", + "description": "Sistema de Gestão para Advocacia", + "main": "src/index.tsx", + "type": "commonjs", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "preview": "vite preview", + "prisma:generate": "prisma generate", + "prisma:migrate": "prisma migrate dev", + "prisma:studio": "prisma studio", + "prisma:seed": "ts-node -T prisma/seed.ts", + "postinstall": "prisma generate && npx puppeteer browsers install chrome", + "server": "ts-node --transpile-only src/server/index.ts", + "dev:full": "concurrently -n \"frontend,backend\" -c \"blue,green\" \"npm run dev\" \"npm run server\"", + "lint": "eslint . --ext .ts,.tsx", + "lint:fix": "eslint . --ext .ts,.tsx --fix", + "create-admin": "ts-node scripts/create_admin_user.ts", + "worker": "ts-node src/workers/startWorker.ts", + "install-deps": "npm install ua-parser-js uuid axios xlsx" + }, + "dependencies": { + "@emotion/react": "^11.11.3", + "@emotion/styled": "^11.11.3", + "@headlessui/react": "^1.7.18", + "@heroicons/react": "^2.1.1", + "@mui/icons-material": "^5.15.6", + "@mui/material": "^5.15.6", + "@mui/x-date-pickers": "^6.19.0", + "@prisma/client": "^6.5.0", + "@tinymce/tinymce-react": "^6.1.0", + "@tiptap/extension-link": "^2.11.7", + "@tiptap/react": "^2.11.7", + "@tiptap/starter-kit": "^2.11.7", + "@types/sharp": "^0.32.0", + "@types/ua-parser-js": "^0.7.36", + "axios": "^1.6.5", + "bcryptjs": "^2.4.3", + "buffer": "^6.0.3", + "bullmq": "^4.12.0", + "cors": "^2.8.5", + "date-fns": "^2.30.0", + "detect-file-type": "^0.2.3", + "dotenv": "^16.4.1", + "express": "^4.18.2", + "jsonwebtoken": "^9.0.2", + "multer": "^1.4.5-lts.1", + "opentimestamps-javascript": "^1.0.1", + "pdf-lib": "^1.17.1", + "puppeteer": "^24.5.0", + "qrcode": "^1.5.3", + "react": "^18.2.0", + "react-beautiful-dnd": "^13.1.1", + "react-dom": "^18.2.0", + "react-dropzone": "^14.3.8", + "react-hook-form": "^7.49.3", + "react-icons": "^5.0.1", + "react-query": "^3.39.3", + "react-router-dom": "^7.4.1", + "react-toastify": "^10.0.4", + "redis": "^4.6.10", + "sharp": "^0.33.2", + "ua-parser-js": "^1.0.35", + "uuid": "^9.0.1", + "webdav": "^5.3.1", + "xlsx": "^0.18.5", + "zod": "^3.22.4" + }, + "devDependencies": { + "@tailwindcss/postcss": "^4.1.1", + "@types/bcryptjs": "^2.4.6", + "@types/cors": "^2.8.17", + "@types/express": "^5.0.1", + "@types/jsonwebtoken": "^9.0.9", + "@types/multer": "^1.4.12", + "@types/node": "^22.13.14", + "@types/react": "^19.0.12", + "@types/react-beautiful-dnd": "^13.1.8", + "@types/react-dom": "^19.0.4", + "@types/uuid": "^10.0.0", + "@typescript-eslint/eslint-plugin": "^8.28.0", + "@typescript-eslint/parser": "^8.28.0", + "@vitejs/plugin-react": "^4.3.4", + "autoprefixer": "^10.4.17", + "concurrently": "^9.1.2", + "eslint": "^9.23.0", + "eslint-config-prettier": "^10.1.1", + "eslint-plugin-prettier": "^5.2.5", + "eslint-plugin-react": "^7.37.4", + "eslint-plugin-react-hooks": "^5.2.0", + "postcss": "^8.4.33", + "prettier": "^3.5.3", + "prisma": "^6.5.0", + "tailwindcss": "^3.4.1", + "ts-node": "^10.9.2", + "typescript": "^5.8.2", + "vite": "^6.2.4" + }, + "prisma": { + "seed": "ts-node prisma/seed.ts" + }, + "puppeteer": { + "headless": true, + "args": [ + "--no-sandbox", + "--disable-setuid-sandbox", + "--disable-dev-shm-usage", + "--disable-accelerated-2d-canvas", + "--disable-gpu", + "--window-size=1920x1080" + ] + }, + "puppeteerOptions": { + "browserFetcher": { + "platform": "win32", + "downloadPath": ".cache/puppeteer" + } + } +} diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..7489255 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,7 @@ +module.exports = { + plugins: { + 'tailwindcss/nesting': {}, + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/prisma/migrations/20250325225406_advx/migration.sql b/prisma/migrations/20250325225406_advx/migration.sql new file mode 100644 index 0000000..e7f50a4 --- /dev/null +++ b/prisma/migrations/20250325225406_advx/migration.sql @@ -0,0 +1,14 @@ +-- CreateTable +CREATE TABLE "usuarios" ( + "id" TEXT NOT NULL, + "nome" TEXT NOT NULL, + "email" TEXT NOT NULL, + "senha" TEXT NOT NULL, + "cargo" TEXT NOT NULL, + "dataCriacao" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "usuarios_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "usuarios_email_key" ON "usuarios"("email"); diff --git a/prisma/migrations/20250325233818_/migration.sql b/prisma/migrations/20250325233818_/migration.sql new file mode 100644 index 0000000..5e06513 --- /dev/null +++ b/prisma/migrations/20250325233818_/migration.sql @@ -0,0 +1,33 @@ +-- CreateTable +CREATE TABLE "clientes" ( + "id" TEXT NOT NULL, + "nome" TEXT NOT NULL, + "email" TEXT NOT NULL, + "cpfCnpj" TEXT NOT NULL, + "telefone" TEXT NOT NULL, + "endereco" TEXT NOT NULL, + "dataCriacao" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "clientes_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "processos" ( + "id" TEXT NOT NULL, + "numero" TEXT NOT NULL, + "titulo" TEXT NOT NULL, + "descricao" TEXT NOT NULL, + "clienteId" TEXT NOT NULL, + "advogadoResponsavelId" TEXT NOT NULL, + "status" TEXT NOT NULL, + "dataCriacao" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "dataAtualizacao" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "processos_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "clientes_cpfCnpj_key" ON "clientes"("cpfCnpj"); + +-- AddForeignKey +ALTER TABLE "processos" ADD CONSTRAINT "processos_clienteId_fkey" FOREIGN KEY ("clienteId") REFERENCES "clientes"("id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/prisma/migrations/20250326010603_add_dni_filhos_orgao_fields/migration.sql b/prisma/migrations/20250326010603_add_dni_filhos_orgao_fields/migration.sql new file mode 100644 index 0000000..a1799b5 --- /dev/null +++ b/prisma/migrations/20250326010603_add_dni_filhos_orgao_fields/migration.sql @@ -0,0 +1,47 @@ +/* + Warnings: + + - Added the required column `bairro` to the `clientes` table without a default value. This is not possible if the table is not empty. + - Added the required column `cep` to the `clientes` table without a default value. This is not possible if the table is not empty. + - Added the required column `cidade` to the `clientes` table without a default value. This is not possible if the table is not empty. + - Added the required column `estado` to the `clientes` table without a default value. This is not possible if the table is not empty. + - Added the required column `numero` to the `clientes` table without a default value. This is not possible if the table is not empty. + +*/ +-- AlterTable +ALTER TABLE "clientes" ADD COLUMN "bairro" TEXT NOT NULL, +ADD COLUMN "cep" TEXT NOT NULL, +ADD COLUMN "cidade" TEXT NOT NULL, +ADD COLUMN "complemento" TEXT, +ADD COLUMN "conjugeCpf" TEXT, +ADD COLUMN "conjugeNome" TEXT, +ADD COLUMN "contribuiPrevidencia" BOOLEAN NOT NULL DEFAULT false, +ADD COLUMN "dataNascimento" TIMESTAMP(3), +ADD COLUMN "declaraIR" BOOLEAN NOT NULL DEFAULT false, +ADD COLUMN "estado" TEXT NOT NULL, +ADD COLUMN "estadoCivil" TEXT, +ADD COLUMN "instagram" TEXT, +ADD COLUMN "nomeMae" TEXT, +ADD COLUMN "nomePai" TEXT, +ADD COLUMN "numero" TEXT NOT NULL, +ADD COLUMN "orgaoEmissor" TEXT, +ADD COLUMN "possuiFilhos" BOOLEAN NOT NULL DEFAULT false, +ADD COLUMN "profissao" TEXT, +ADD COLUMN "renda" DECIMAL(65,30), +ADD COLUMN "rg" TEXT, +ADD COLUMN "tipoPrevidencia" TEXT, +ADD COLUMN "usaDNI" BOOLEAN NOT NULL DEFAULT false, +ADD COLUMN "vinculoEmpregaticio" TEXT; + +-- CreateTable +CREATE TABLE "filhos" ( + "id" TEXT NOT NULL, + "nome" TEXT NOT NULL, + "dataNascimento" TIMESTAMP(3) NOT NULL, + "clienteId" TEXT NOT NULL, + + CONSTRAINT "filhos_pkey" PRIMARY KEY ("id") +); + +-- AddForeignKey +ALTER TABLE "filhos" ADD CONSTRAINT "filhos_clienteId_fkey" FOREIGN KEY ("clienteId") REFERENCES "clientes"("id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/prisma/migrations/20250326010937_add_rg_estado/migration.sql b/prisma/migrations/20250326010937_add_rg_estado/migration.sql new file mode 100644 index 0000000..366a06e --- /dev/null +++ b/prisma/migrations/20250326010937_add_rg_estado/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "clientes" ADD COLUMN "estadoRg" TEXT; diff --git a/prisma/migrations/20250326011822_add_new_fields_safe/migration.sql b/prisma/migrations/20250326011822_add_new_fields_safe/migration.sql new file mode 100644 index 0000000..6f9fbd5 --- /dev/null +++ b/prisma/migrations/20250326011822_add_new_fields_safe/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "clientes" ALTER COLUMN "tipoPrevidencia" SET DEFAULT 'NAO_CONTRIBUI'; diff --git a/prisma/migrations/20250326013104_fix_date_and_rg_fields/migration.sql b/prisma/migrations/20250326013104_fix_date_and_rg_fields/migration.sql new file mode 100644 index 0000000..d218e2e --- /dev/null +++ b/prisma/migrations/20250326013104_fix_date_and_rg_fields/migration.sql @@ -0,0 +1,11 @@ +/* + Warnings: + + - You are about to alter the column `rg` on the `clientes` table. The data in that column could be lost. The data in that column will be cast from `Text` to `VarChar(10)`. + - You are about to alter the column `estadoRg` on the `clientes` table. The data in that column could be lost. The data in that column will be cast from `Text` to `Char(2)`. + +*/ +-- AlterTable +ALTER TABLE "clientes" ALTER COLUMN "dataNascimento" SET DATA TYPE DATE, +ALTER COLUMN "rg" SET DATA TYPE VARCHAR(10), +ALTER COLUMN "estadoRg" SET DATA TYPE CHAR(2); diff --git a/prisma/migrations/20250326013839_add_field_limits/migration.sql b/prisma/migrations/20250326013839_add_field_limits/migration.sql new file mode 100644 index 0000000..590043f --- /dev/null +++ b/prisma/migrations/20250326013839_add_field_limits/migration.sql @@ -0,0 +1,51 @@ +/* + Warnings: + + - You are about to alter the column `nome` on the `clientes` table. The data in that column could be lost. The data in that column will be cast from `Text` to `VarChar(100)`. + - You are about to alter the column `email` on the `clientes` table. The data in that column could be lost. The data in that column will be cast from `Text` to `VarChar(100)`. + - You are about to alter the column `cpfCnpj` on the `clientes` table. The data in that column could be lost. The data in that column will be cast from `Text` to `VarChar(18)`. + - You are about to alter the column `telefone` on the `clientes` table. The data in that column could be lost. The data in that column will be cast from `Text` to `VarChar(20)`. + - You are about to alter the column `endereco` on the `clientes` table. The data in that column could be lost. The data in that column will be cast from `Text` to `VarChar(150)`. + - You are about to alter the column `bairro` on the `clientes` table. The data in that column could be lost. The data in that column will be cast from `Text` to `VarChar(100)`. + - You are about to alter the column `cep` on the `clientes` table. The data in that column could be lost. The data in that column will be cast from `Text` to `VarChar(9)`. + - You are about to alter the column `cidade` on the `clientes` table. The data in that column could be lost. The data in that column will be cast from `Text` to `VarChar(100)`. + - You are about to alter the column `complemento` on the `clientes` table. The data in that column could be lost. The data in that column will be cast from `Text` to `VarChar(50)`. + - You are about to alter the column `conjugeCpf` on the `clientes` table. The data in that column could be lost. The data in that column will be cast from `Text` to `VarChar(14)`. + - You are about to alter the column `conjugeNome` on the `clientes` table. The data in that column could be lost. The data in that column will be cast from `Text` to `VarChar(100)`. + - You are about to alter the column `estado` on the `clientes` table. The data in that column could be lost. The data in that column will be cast from `Text` to `Char(2)`. + - You are about to alter the column `estadoCivil` on the `clientes` table. The data in that column could be lost. The data in that column will be cast from `Text` to `VarChar(20)`. + - You are about to alter the column `instagram` on the `clientes` table. The data in that column could be lost. The data in that column will be cast from `Text` to `VarChar(50)`. + - You are about to alter the column `nomeMae` on the `clientes` table. The data in that column could be lost. The data in that column will be cast from `Text` to `VarChar(100)`. + - You are about to alter the column `nomePai` on the `clientes` table. The data in that column could be lost. The data in that column will be cast from `Text` to `VarChar(100)`. + - You are about to alter the column `numero` on the `clientes` table. The data in that column could be lost. The data in that column will be cast from `Text` to `VarChar(10)`. + - You are about to alter the column `orgaoEmissor` on the `clientes` table. The data in that column could be lost. The data in that column will be cast from `Text` to `VarChar(10)`. + - You are about to alter the column `profissao` on the `clientes` table. The data in that column could be lost. The data in that column will be cast from `Text` to `VarChar(100)`. + - You are about to alter the column `renda` on the `clientes` table. The data in that column could be lost. The data in that column will be cast from `Decimal(65,30)` to `Decimal(10,2)`. + - You are about to alter the column `tipoPrevidencia` on the `clientes` table. The data in that column could be lost. The data in that column will be cast from `Text` to `VarChar(20)`. + - You are about to alter the column `vinculoEmpregaticio` on the `clientes` table. The data in that column could be lost. The data in that column will be cast from `Text` to `VarChar(50)`. + +*/ +-- AlterTable +ALTER TABLE "clientes" ALTER COLUMN "nome" SET DATA TYPE VARCHAR(100), +ALTER COLUMN "email" SET DATA TYPE VARCHAR(100), +ALTER COLUMN "cpfCnpj" SET DATA TYPE VARCHAR(18), +ALTER COLUMN "telefone" SET DATA TYPE VARCHAR(20), +ALTER COLUMN "endereco" SET DATA TYPE VARCHAR(150), +ALTER COLUMN "bairro" SET DATA TYPE VARCHAR(100), +ALTER COLUMN "cep" SET DATA TYPE VARCHAR(9), +ALTER COLUMN "cidade" SET DATA TYPE VARCHAR(100), +ALTER COLUMN "complemento" SET DATA TYPE VARCHAR(50), +ALTER COLUMN "conjugeCpf" SET DATA TYPE VARCHAR(14), +ALTER COLUMN "conjugeNome" SET DATA TYPE VARCHAR(100), +ALTER COLUMN "estado" SET DATA TYPE CHAR(2), +ALTER COLUMN "estadoCivil" SET DATA TYPE VARCHAR(20), +ALTER COLUMN "instagram" SET DATA TYPE VARCHAR(50), +ALTER COLUMN "nomeMae" SET DATA TYPE VARCHAR(100), +ALTER COLUMN "nomePai" SET DATA TYPE VARCHAR(100), +ALTER COLUMN "numero" SET DATA TYPE VARCHAR(10), +ALTER COLUMN "orgaoEmissor" SET DATA TYPE VARCHAR(10), +ALTER COLUMN "profissao" SET DATA TYPE VARCHAR(100), +ALTER COLUMN "renda" SET DATA TYPE DECIMAL(10,2), +ALTER COLUMN "rg" SET DATA TYPE VARCHAR(20), +ALTER COLUMN "tipoPrevidencia" SET DATA TYPE VARCHAR(20), +ALTER COLUMN "vinculoEmpregaticio" SET DATA TYPE VARCHAR(50); diff --git a/prisma/migrations/20250326020036_add_documentos/migration.sql b/prisma/migrations/20250326020036_add_documentos/migration.sql new file mode 100644 index 0000000..80afcd3 --- /dev/null +++ b/prisma/migrations/20250326020036_add_documentos/migration.sql @@ -0,0 +1,123 @@ +/* + Warnings: + + - You are about to drop the column `advogadoResponsavelId` on the `processos` table. All the data in the column will be lost. + - You are about to drop the column `descricao` on the `processos` table. All the data in the column will be lost. + - You are about to drop the column `titulo` on the `processos` table. All the data in the column will be lost. + - The `status` column on the `processos` table would be dropped and recreated. This will lead to data loss if there is data in the column. + - A unique constraint covering the columns `[numero]` on the table `processos` will be added. If there are existing duplicate values, this will fail. + +*/ +-- CreateEnum +CREATE TYPE "NaturezaProcesso" AS ENUM ('CIVEL', 'CRIMINAL', 'PREVIDENCIARIO', 'TRABALHISTA', 'FAMILIA', 'TRIBUTARIO', 'ADMINISTRATIVO'); + +-- CreateEnum +CREATE TYPE "TipoParte" AS ENUM ('AUTOR', 'REU'); + +-- CreateEnum +CREATE TYPE "StatusProcesso" AS ENUM ('INICIAL', 'EM_ANDAMENTO', 'SUSPENSO', 'RECURSO', 'CONCLUSO', 'ARQUIVADO'); + +-- CreateEnum +CREATE TYPE "TipoDiligencia" AS ENUM ('CITACAO', 'INTIMACAO', 'NOTIFICACAO', 'PERICIA', 'OFICIAL_JUSTICA', 'CARTA_PRECATORIA', 'OUTROS'); + +-- CreateEnum +CREATE TYPE "TipoAudiencia" AS ENUM ('CONCILIACAO', 'INSTRUCAO', 'INICIAL', 'JULGAMENTO', 'MEDIACAO'); + +-- AlterTable +ALTER TABLE "processos" DROP COLUMN "advogadoResponsavelId", +DROP COLUMN "descricao", +DROP COLUMN "titulo", +ADD COLUMN "natureza" "NaturezaProcesso", +ADD COLUMN "nomeContraparte" VARCHAR(100), +ADD COLUMN "orgaoJulgador" VARCHAR(100), +ADD COLUMN "orgaoOrigem" VARCHAR(100), +ADD COLUMN "tipoParteCliente" "TipoParte", +ADD COLUMN "valorCausa" DECIMAL(15,2), +DROP COLUMN "status", +ADD COLUMN "status" "StatusProcesso" NOT NULL DEFAULT 'INICIAL'; + +-- CreateTable +CREATE TABLE "documentos" ( + "id" TEXT NOT NULL, + "processoId" TEXT NOT NULL, + "nome" VARCHAR(200) NOT NULL, + "tipo" VARCHAR(50) NOT NULL, + "url" TEXT NOT NULL, + "dataCriacao" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "documentos_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "diligencias" ( + "id" TEXT NOT NULL, + "processoId" TEXT NOT NULL, + "tipo" "TipoDiligencia" NOT NULL, + "descricao" TEXT NOT NULL, + "dataLimite" TIMESTAMP(3) NOT NULL, + "status" TEXT DEFAULT 'PENDENTE', + "responsavel" VARCHAR(100), + "observacoes" TEXT, + "dataCriacao" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "diligencias_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "audiencias" ( + "id" TEXT NOT NULL, + "processoId" TEXT NOT NULL, + "tipo" "TipoAudiencia" NOT NULL, + "data" TIMESTAMP(3) NOT NULL, + "local" VARCHAR(200) NOT NULL, + "modalidade" TEXT DEFAULT 'PRESENCIAL', + "linkVirtual" TEXT, + "observacoes" TEXT, + "status" TEXT DEFAULT 'AGENDADA', + "dataCriacao" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "audiencias_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "movimentacoes" ( + "id" TEXT NOT NULL, + "processoId" TEXT NOT NULL, + "data" TIMESTAMP(3) NOT NULL, + "descricao" TEXT NOT NULL, + "tipo" VARCHAR(50) NOT NULL, + "documento" TEXT, + "dataCriacao" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "movimentacoes_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE INDEX "documentos_processoId_idx" ON "documentos"("processoId"); + +-- CreateIndex +CREATE INDEX "diligencias_dataLimite_idx" ON "diligencias"("dataLimite"); + +-- CreateIndex +CREATE INDEX "audiencias_data_idx" ON "audiencias"("data"); + +-- CreateIndex +CREATE INDEX "movimentacoes_data_idx" ON "movimentacoes"("data"); + +-- CreateIndex +CREATE UNIQUE INDEX "processos_numero_key" ON "processos"("numero"); + +-- CreateIndex +CREATE INDEX "processos_numero_idx" ON "processos"("numero"); + +-- AddForeignKey +ALTER TABLE "documentos" ADD CONSTRAINT "documentos_processoId_fkey" FOREIGN KEY ("processoId") REFERENCES "processos"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "diligencias" ADD CONSTRAINT "diligencias_processoId_fkey" FOREIGN KEY ("processoId") REFERENCES "processos"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "audiencias" ADD CONSTRAINT "audiencias_processoId_fkey" FOREIGN KEY ("processoId") REFERENCES "processos"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "movimentacoes" ADD CONSTRAINT "movimentacoes_processoId_fkey" FOREIGN KEY ("processoId") REFERENCES "processos"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/prisma/migrations/20250326142333_add_orgao_julgador_relation/migration.sql b/prisma/migrations/20250326142333_add_orgao_julgador_relation/migration.sql new file mode 100644 index 0000000..a4fdc86 --- /dev/null +++ b/prisma/migrations/20250326142333_add_orgao_julgador_relation/migration.sql @@ -0,0 +1,103 @@ +-- CreateEnum +CREATE TYPE "StatusAtividade" AS ENUM ('ATIVO', 'BAIXADO', 'SUSPENSO'); + +-- AlterTable +ALTER TABLE "processos" ADD COLUMN "assuntoCNJ" VARCHAR(100), +ADD COLUMN "codigoAssuntoCNJ" VARCHAR(20), +ADD COLUMN "eventoCalendarioId" TEXT, +ADD COLUMN "orgaoJulgadorId" TEXT, +ADD COLUMN "statusAtividade" "StatusAtividade" NOT NULL DEFAULT 'ATIVO', +ADD COLUMN "ultimaConsulta" TIMESTAMP(3); + +-- CreateTable +CREATE TABLE "custas_processuais" ( + "id" TEXT NOT NULL, + "processoId" TEXT NOT NULL, + "tipo" VARCHAR(50) NOT NULL, + "valor" DECIMAL(10,2) NOT NULL, + "dataPagamento" TIMESTAMP(3), + "comprovante" TEXT, + "status" TEXT NOT NULL DEFAULT 'PENDENTE', + "dataCriacao" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "custas_processuais_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "honorarios" ( + "id" TEXT NOT NULL, + "processoId" TEXT NOT NULL, + "valor" DECIMAL(10,2) NOT NULL, + "parcelas" INTEGER NOT NULL DEFAULT 1, + "dataVencimento" TIMESTAMP(3) NOT NULL, + "status" TEXT NOT NULL DEFAULT 'PENDENTE', + "observacoes" TEXT, + "dataCriacao" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "honorarios_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "modelos_documentos" ( + "id" TEXT NOT NULL, + "nome" VARCHAR(100) NOT NULL, + "tipo" VARCHAR(50) NOT NULL, + "conteudo" TEXT NOT NULL, + "variaveis" TEXT[], + "dataCriacao" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "modelos_documentos_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "alertas" ( + "id" TEXT NOT NULL, + "usuarioId" TEXT NOT NULL, + "tipo" VARCHAR(50) NOT NULL, + "mensagem" TEXT NOT NULL, + "lido" BOOLEAN NOT NULL DEFAULT false, + "dataAlerta" TIMESTAMP(3) NOT NULL, + "dataCriacao" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "alertas_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "movimentacoes_tribunal" ( + "id" TEXT NOT NULL, + "processoId" TEXT NOT NULL, + "tribunal" VARCHAR(50) NOT NULL, + "dataMovimentacao" TIMESTAMP(3) NOT NULL, + "tipo" VARCHAR(100) NOT NULL, + "conteudo" TEXT NOT NULL, + "dataCriacao" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "movimentacoes_tribunal_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "orgaos_julgadores" ( + "id" TEXT NOT NULL, + "nome" VARCHAR(200) NOT NULL, + "dataCriacao" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "orgaos_julgadores_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "orgaos_julgadores_nome_key" ON "orgaos_julgadores"("nome"); + +-- CreateIndex +CREATE INDEX "processos_orgaoJulgadorId_idx" ON "processos"("orgaoJulgadorId"); + +-- AddForeignKey +ALTER TABLE "processos" ADD CONSTRAINT "processos_orgaoJulgadorId_fkey" FOREIGN KEY ("orgaoJulgadorId") REFERENCES "orgaos_julgadores"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "custas_processuais" ADD CONSTRAINT "custas_processuais_processoId_fkey" FOREIGN KEY ("processoId") REFERENCES "processos"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "honorarios" ADD CONSTRAINT "honorarios_processoId_fkey" FOREIGN KEY ("processoId") REFERENCES "processos"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "movimentacoes_tribunal" ADD CONSTRAINT "movimentacoes_tribunal_processoId_fkey" FOREIGN KEY ("processoId") REFERENCES "processos"("id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/prisma/migrations/20250326142604_remove_assunto_cnj/migration.sql b/prisma/migrations/20250326142604_remove_assunto_cnj/migration.sql new file mode 100644 index 0000000..461ace1 --- /dev/null +++ b/prisma/migrations/20250326142604_remove_assunto_cnj/migration.sql @@ -0,0 +1,10 @@ +/* + Warnings: + + - You are about to drop the column `assuntoCNJ` on the `processos` table. All the data in the column will be lost. + - You are about to drop the column `codigoAssuntoCNJ` on the `processos` table. All the data in the column will be lost. + +*/ +-- AlterTable +ALTER TABLE "processos" DROP COLUMN "assuntoCNJ", +DROP COLUMN "codigoAssuntoCNJ"; diff --git a/prisma/migrations/20250326150246_update_processo_fields/migration.sql b/prisma/migrations/20250326150246_update_processo_fields/migration.sql new file mode 100644 index 0000000..959f896 --- /dev/null +++ b/prisma/migrations/20250326150246_update_processo_fields/migration.sql @@ -0,0 +1,21 @@ +/* + Warnings: + + - You are about to drop the column `eventoCalendarioId` on the `processos` table. All the data in the column will be lost. + - You are about to drop the column `ultimaConsulta` on the `processos` table. All the data in the column will be lost. + - Made the column `natureza` on table `processos` required. This step will fail if there are existing NULL values in that column. + - Made the column `nomeContraparte` on table `processos` required. This step will fail if there are existing NULL values in that column. + - Made the column `orgaoJulgador` on table `processos` required. This step will fail if there are existing NULL values in that column. + - Made the column `tipoParteCliente` on table `processos` required. This step will fail if there are existing NULL values in that column. + +*/ +-- DropIndex +DROP INDEX "processos_orgaoJulgadorId_idx"; + +-- AlterTable +ALTER TABLE "processos" DROP COLUMN "eventoCalendarioId", +DROP COLUMN "ultimaConsulta", +ALTER COLUMN "natureza" SET NOT NULL, +ALTER COLUMN "nomeContraparte" SET NOT NULL, +ALTER COLUMN "orgaoJulgador" SET NOT NULL, +ALTER COLUMN "tipoParteCliente" SET NOT NULL; diff --git a/prisma/migrations/20250326152945_add_partes_processo/migration.sql b/prisma/migrations/20250326152945_add_partes_processo/migration.sql new file mode 100644 index 0000000..7ea805e --- /dev/null +++ b/prisma/migrations/20250326152945_add_partes_processo/migration.sql @@ -0,0 +1,29 @@ +-- CreateEnum +CREATE TYPE "TipoParticipacao" AS ENUM ('AUTOR', 'REU', 'TERCEIRO_INTERESSADO'); + +-- CreateTable +CREATE TABLE "partes_processo" ( + "id" TEXT NOT NULL, + "processoId" TEXT NOT NULL, + "clienteId" TEXT, + "tipo" "TipoParticipacao" NOT NULL, + "nome" VARCHAR(200) NOT NULL, + "cpfCnpj" VARCHAR(18), + "principal" BOOLEAN NOT NULL DEFAULT false, + "observacoes" TEXT, + "dataCriacao" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "partes_processo_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE INDEX "partes_processo_processoId_idx" ON "partes_processo"("processoId"); + +-- CreateIndex +CREATE INDEX "partes_processo_clienteId_idx" ON "partes_processo"("clienteId"); + +-- AddForeignKey +ALTER TABLE "partes_processo" ADD CONSTRAINT "partes_processo_processoId_fkey" FOREIGN KEY ("processoId") REFERENCES "processos"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "partes_processo" ADD CONSTRAINT "partes_processo_clienteId_fkey" FOREIGN KEY ("clienteId") REFERENCES "clientes"("id") ON DELETE SET NULL ON UPDATE CASCADE; diff --git a/prisma/migrations/20250328011301_/migration.sql b/prisma/migrations/20250328011301_/migration.sql new file mode 100644 index 0000000..f8b08d3 --- /dev/null +++ b/prisma/migrations/20250328011301_/migration.sql @@ -0,0 +1,379 @@ +/* + Warnings: + + - The primary key for the `alertas` table will be changed. If it partially fails, the table could be left without primary key constraint. + - The `id` column on the `alertas` table would be dropped and recreated. This will lead to data loss if there is data in the column. + - The primary key for the `clientes` table will be changed. If it partially fails, the table could be left without primary key constraint. + - The `id` column on the `clientes` table would be dropped and recreated. This will lead to data loss if there is data in the column. + - The primary key for the `custas_processuais` table will be changed. If it partially fails, the table could be left without primary key constraint. + - The `id` column on the `custas_processuais` table would be dropped and recreated. This will lead to data loss if there is data in the column. + - The `status` column on the `custas_processuais` table would be dropped and recreated. This will lead to data loss if there is data in the column. + - The primary key for the `filhos` table will be changed. If it partially fails, the table could be left without primary key constraint. + - The `id` column on the `filhos` table would be dropped and recreated. This will lead to data loss if there is data in the column. + - The primary key for the `honorarios` table will be changed. If it partially fails, the table could be left without primary key constraint. + - You are about to drop the column `parcelas` on the `honorarios` table. All the data in the column will be lost. + - You are about to drop the column `valor` on the `honorarios` table. All the data in the column will be lost. + - The `id` column on the `honorarios` table would be dropped and recreated. This will lead to data loss if there is data in the column. + - The `status` column on the `honorarios` table would be dropped and recreated. This will lead to data loss if there is data in the column. + - The primary key for the `modelos_documentos` table will be changed. If it partially fails, the table could be left without primary key constraint. + - The `id` column on the `modelos_documentos` table would be dropped and recreated. This will lead to data loss if there is data in the column. + - The primary key for the `orgaos_julgadores` table will be changed. If it partially fails, the table could be left without primary key constraint. + - The `id` column on the `orgaos_julgadores` table would be dropped and recreated. This will lead to data loss if there is data in the column. + - The primary key for the `usuarios` table will be changed. If it partially fails, the table could be left without primary key constraint. + - The `id` column on the `usuarios` table would be dropped and recreated. This will lead to data loss if there is data in the column. + - You are about to drop the `audiencias` table. If the table is not empty, all the data it contains will be lost. + - You are about to drop the `diligencias` table. If the table is not empty, all the data it contains will be lost. + - You are about to drop the `documentos` table. If the table is not empty, all the data it contains will be lost. + - You are about to drop the `movimentacoes` table. If the table is not empty, all the data it contains will be lost. + - You are about to drop the `movimentacoes_tribunal` table. If the table is not empty, all the data it contains will be lost. + - You are about to drop the `partes_processo` table. If the table is not empty, all the data it contains will be lost. + - You are about to drop the `processos` table. If the table is not empty, all the data it contains will be lost. + - Changed the type of `usuarioId` on the `alertas` table. No cast exists, the column would be dropped and recreated, which cannot be done if there is data, since the column is required. + - Added the required column `descricao` to the `custas_processuais` table without a default value. This is not possible if the table is not empty. + - Changed the type of `processoId` on the `custas_processuais` table. No cast exists, the column would be dropped and recreated, which cannot be done if there is data, since the column is required. + - Changed the type of `tipo` on the `custas_processuais` table. No cast exists, the column would be dropped and recreated, which cannot be done if there is data, since the column is required. + - Changed the type of `clienteId` on the `filhos` table. No cast exists, the column would be dropped and recreated, which cannot be done if there is data, since the column is required. + - Changed the type of `processoId` on the `honorarios` table. No cast exists, the column would be dropped and recreated, which cannot be done if there is data, since the column is required. + +*/ +-- CreateEnum +CREATE TYPE "TipoCustaProcessual" AS ENUM ('INICIAL', 'RECURSO', 'PERICIA', 'OFICIAL_JUSTICA', 'CARTA_PRECATORIA', 'DEPOSITO_JUDICIAL', 'CERTIDAO', 'DIGITALIZACAO', 'CONDUTOR', 'CORREIOS', 'CARTORIO', 'OUTROS'); + +-- CreateEnum +CREATE TYPE "StatusPagamento" AS ENUM ('PENDENTE', 'PARCIALMENTE_PAGO', 'PAGO', 'VENCIDO', 'CANCELADO'); + +-- CreateEnum +CREATE TYPE "FormaPagamento" AS ENUM ('VISTA', 'PARCELADO', 'ENTRADA_MAIS_PARCELAS', 'PERCENTUAL_CAUSA', 'PERCENTUAL_EXITO'); + +-- DropForeignKey +ALTER TABLE "audiencias" DROP CONSTRAINT "audiencias_processoId_fkey"; + +-- DropForeignKey +ALTER TABLE "custas_processuais" DROP CONSTRAINT "custas_processuais_processoId_fkey"; + +-- DropForeignKey +ALTER TABLE "diligencias" DROP CONSTRAINT "diligencias_processoId_fkey"; + +-- DropForeignKey +ALTER TABLE "documentos" DROP CONSTRAINT "documentos_processoId_fkey"; + +-- DropForeignKey +ALTER TABLE "filhos" DROP CONSTRAINT "filhos_clienteId_fkey"; + +-- DropForeignKey +ALTER TABLE "honorarios" DROP CONSTRAINT "honorarios_processoId_fkey"; + +-- DropForeignKey +ALTER TABLE "movimentacoes" DROP CONSTRAINT "movimentacoes_processoId_fkey"; + +-- DropForeignKey +ALTER TABLE "movimentacoes_tribunal" DROP CONSTRAINT "movimentacoes_tribunal_processoId_fkey"; + +-- DropForeignKey +ALTER TABLE "partes_processo" DROP CONSTRAINT "partes_processo_clienteId_fkey"; + +-- DropForeignKey +ALTER TABLE "partes_processo" DROP CONSTRAINT "partes_processo_processoId_fkey"; + +-- DropForeignKey +ALTER TABLE "processos" DROP CONSTRAINT "processos_clienteId_fkey"; + +-- DropForeignKey +ALTER TABLE "processos" DROP CONSTRAINT "processos_orgaoJulgadorId_fkey"; + +-- AlterTable +ALTER TABLE "alertas" DROP CONSTRAINT "alertas_pkey", +DROP COLUMN "id", +ADD COLUMN "id" UUID NOT NULL DEFAULT gen_random_uuid(), +DROP COLUMN "usuarioId", +ADD COLUMN "usuarioId" UUID NOT NULL, +ADD CONSTRAINT "alertas_pkey" PRIMARY KEY ("id"); + +-- AlterTable +ALTER TABLE "clientes" DROP CONSTRAINT "clientes_pkey", +DROP COLUMN "id", +ADD COLUMN "id" UUID NOT NULL DEFAULT gen_random_uuid(), +ADD CONSTRAINT "clientes_pkey" PRIMARY KEY ("id"); + +-- AlterTable +ALTER TABLE "custas_processuais" DROP CONSTRAINT "custas_processuais_pkey", +ADD COLUMN "descricao" VARCHAR(200) NOT NULL, +ADD COLUMN "numeroParcelas" INTEGER NOT NULL DEFAULT 1, +ADD COLUMN "observacoes" TEXT, +ADD COLUMN "parcelaAtual" INTEGER NOT NULL DEFAULT 1, +ADD COLUMN "percentual" DECIMAL(5,2), +ADD COLUMN "vencimento" TIMESTAMP(3), +DROP COLUMN "id", +ADD COLUMN "id" UUID NOT NULL DEFAULT gen_random_uuid(), +DROP COLUMN "processoId", +ADD COLUMN "processoId" UUID NOT NULL, +DROP COLUMN "tipo", +ADD COLUMN "tipo" "TipoCustaProcessual" NOT NULL, +DROP COLUMN "status", +ADD COLUMN "status" "StatusPagamento" NOT NULL DEFAULT 'PENDENTE', +ADD CONSTRAINT "custas_processuais_pkey" PRIMARY KEY ("id"); + +-- AlterTable +ALTER TABLE "filhos" DROP CONSTRAINT "filhos_pkey", +DROP COLUMN "id", +ADD COLUMN "id" UUID NOT NULL DEFAULT gen_random_uuid(), +DROP COLUMN "clienteId", +ADD COLUMN "clienteId" UUID NOT NULL, +ADD CONSTRAINT "filhos_pkey" PRIMARY KEY ("id"); + +-- AlterTable +ALTER TABLE "honorarios" DROP CONSTRAINT "honorarios_pkey", +DROP COLUMN "parcelas", +DROP COLUMN "valor", +ADD COLUMN "dataContrato" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, +ADD COLUMN "diaVencimento" INTEGER NOT NULL DEFAULT 10, +ADD COLUMN "formaPagamento" "FormaPagamento" NOT NULL DEFAULT 'VISTA', +ADD COLUMN "numeroParcelas" INTEGER NOT NULL DEFAULT 1, +ADD COLUMN "percentualCausa" DECIMAL(5,2), +ADD COLUMN "percentualExito" DECIMAL(5,2), +ADD COLUMN "valorEntrada" DECIMAL(10,2), +ADD COLUMN "valorFixo" DECIMAL(10,2), +ADD COLUMN "valorParcela" DECIMAL(10,2), +DROP COLUMN "id", +ADD COLUMN "id" UUID NOT NULL DEFAULT gen_random_uuid(), +DROP COLUMN "processoId", +ADD COLUMN "processoId" UUID NOT NULL, +DROP COLUMN "status", +ADD COLUMN "status" "StatusPagamento" NOT NULL DEFAULT 'PENDENTE', +ADD CONSTRAINT "honorarios_pkey" PRIMARY KEY ("id"); + +-- AlterTable +ALTER TABLE "modelos_documentos" DROP CONSTRAINT "modelos_documentos_pkey", +DROP COLUMN "id", +ADD COLUMN "id" UUID NOT NULL DEFAULT gen_random_uuid(), +ADD CONSTRAINT "modelos_documentos_pkey" PRIMARY KEY ("id"); + +-- AlterTable +ALTER TABLE "orgaos_julgadores" DROP CONSTRAINT "orgaos_julgadores_pkey", +DROP COLUMN "id", +ADD COLUMN "id" UUID NOT NULL DEFAULT gen_random_uuid(), +ADD CONSTRAINT "orgaos_julgadores_pkey" PRIMARY KEY ("id"); + +-- AlterTable +ALTER TABLE "usuarios" DROP CONSTRAINT "usuarios_pkey", +DROP COLUMN "id", +ADD COLUMN "id" UUID NOT NULL DEFAULT gen_random_uuid(), +ADD CONSTRAINT "usuarios_pkey" PRIMARY KEY ("id"); + +-- DropTable +DROP TABLE "audiencias"; + +-- DropTable +DROP TABLE "diligencias"; + +-- DropTable +DROP TABLE "documentos"; + +-- DropTable +DROP TABLE "movimentacoes"; + +-- DropTable +DROP TABLE "movimentacoes_tribunal"; + +-- DropTable +DROP TABLE "partes_processo"; + +-- DropTable +DROP TABLE "processos"; + +-- CreateTable +CREATE TABLE "ParteProcesso" ( + "id" UUID NOT NULL DEFAULT gen_random_uuid(), + "processoId" UUID NOT NULL, + "clienteId" UUID, + "tipo" VARCHAR(20) NOT NULL, + "nome" VARCHAR(200) NOT NULL, + "cpfCnpj" VARCHAR(18), + "principal" BOOLEAN NOT NULL DEFAULT false, + "observacoes" TEXT, + "dataCriacao" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "ParteProcesso_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Processo" ( + "id" UUID NOT NULL DEFAULT gen_random_uuid(), + "numero" TEXT NOT NULL, + "natureza" TEXT NOT NULL, + "valorCausa" DECIMAL(15,2), + "orgaoJulgador" VARCHAR(100) NOT NULL, + "orgaoOrigem" VARCHAR(100), + "nomeContraparte" VARCHAR(100) NOT NULL, + "status" VARCHAR(20) NOT NULL DEFAULT 'INICIAL', + "statusAtividade" VARCHAR(20) NOT NULL DEFAULT 'ATIVO', + "dataCriacao" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + "dataAtualizacao" TIMESTAMP NOT NULL, + "clienteId" UUID NOT NULL, + "tipoParteCliente" VARCHAR(20) NOT NULL, + "orgaoJulgadorId" UUID, + + CONSTRAINT "Processo_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Audiencia" ( + "id" UUID NOT NULL DEFAULT gen_random_uuid(), + "processoId" UUID NOT NULL, + "tipo" VARCHAR(50) NOT NULL, + "data" TIMESTAMP NOT NULL, + "local" VARCHAR(200) NOT NULL, + "modalidade" VARCHAR(20) NOT NULL DEFAULT 'PRESENCIAL', + "status" VARCHAR(20) NOT NULL DEFAULT 'AGENDADA', + "linkVirtual" TEXT, + "observacoes" TEXT, + "dataCriacao" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "Audiencia_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Diligencia" ( + "id" UUID NOT NULL DEFAULT gen_random_uuid(), + "processoId" UUID NOT NULL, + "tipo" VARCHAR(50) NOT NULL, + "descricao" TEXT NOT NULL, + "dataLimite" TIMESTAMP NOT NULL, + "status" VARCHAR(20) NOT NULL DEFAULT 'PENDENTE', + "responsavel" VARCHAR(100), + "observacoes" TEXT, + "dataCriacao" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "Diligencia_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Movimentacao" ( + "id" UUID NOT NULL DEFAULT gen_random_uuid(), + "processoId" UUID NOT NULL, + "data" TIMESTAMP NOT NULL, + "descricao" TEXT NOT NULL, + "tipo" VARCHAR(50) NOT NULL, + "documento" TEXT, + "dataCriacao" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "Movimentacao_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Documento" ( + "id" UUID NOT NULL DEFAULT gen_random_uuid(), + "processoId" UUID NOT NULL, + "nome" VARCHAR(200) NOT NULL, + "tipo" VARCHAR(50) NOT NULL, + "url" TEXT NOT NULL, + "dataCriacao" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "Documento_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "parcelas_honorario" ( + "id" UUID NOT NULL DEFAULT gen_random_uuid(), + "honorarioId" UUID NOT NULL, + "numeroParcela" INTEGER NOT NULL, + "valor" DECIMAL(10,2) NOT NULL, + "valorPago" DECIMAL(10,2), + "vencimento" TIMESTAMP(3) NOT NULL, + "dataPagamento" TIMESTAMP(3), + "status" "StatusPagamento" NOT NULL DEFAULT 'PENDENTE', + "comprovante" TEXT, + "observacoes" TEXT, + + CONSTRAINT "parcelas_honorario_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "MovimentacaoTribunal" ( + "id" UUID NOT NULL DEFAULT gen_random_uuid(), + "processoId" UUID NOT NULL, + "tribunal" VARCHAR(50) NOT NULL, + "data" TIMESTAMP(3) NOT NULL, + "descricao" TEXT NOT NULL, + "dataCriacao" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "MovimentacaoTribunal_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE INDEX "ParteProcesso_processoId_idx" ON "ParteProcesso"("processoId"); + +-- CreateIndex +CREATE INDEX "ParteProcesso_clienteId_idx" ON "ParteProcesso"("clienteId"); + +-- CreateIndex +CREATE UNIQUE INDEX "Processo_numero_key" ON "Processo"("numero"); + +-- CreateIndex +CREATE INDEX "Processo_clienteId_idx" ON "Processo"("clienteId"); + +-- CreateIndex +CREATE INDEX "Processo_orgaoJulgadorId_idx" ON "Processo"("orgaoJulgadorId"); + +-- CreateIndex +CREATE INDEX "Audiencia_processoId_idx" ON "Audiencia"("processoId"); + +-- CreateIndex +CREATE INDEX "Diligencia_processoId_idx" ON "Diligencia"("processoId"); + +-- CreateIndex +CREATE INDEX "Movimentacao_processoId_idx" ON "Movimentacao"("processoId"); + +-- CreateIndex +CREATE INDEX "Documento_processoId_idx" ON "Documento"("processoId"); + +-- CreateIndex +CREATE INDEX "parcelas_honorario_honorarioId_idx" ON "parcelas_honorario"("honorarioId"); + +-- CreateIndex +CREATE INDEX "MovimentacaoTribunal_processoId_idx" ON "MovimentacaoTribunal"("processoId"); + +-- CreateIndex +CREATE INDEX "custas_processuais_processoId_idx" ON "custas_processuais"("processoId"); + +-- CreateIndex +CREATE INDEX "honorarios_processoId_idx" ON "honorarios"("processoId"); + +-- AddForeignKey +ALTER TABLE "filhos" ADD CONSTRAINT "filhos_clienteId_fkey" FOREIGN KEY ("clienteId") REFERENCES "clientes"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "ParteProcesso" ADD CONSTRAINT "ParteProcesso_processoId_fkey" FOREIGN KEY ("processoId") REFERENCES "Processo"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "ParteProcesso" ADD CONSTRAINT "ParteProcesso_clienteId_fkey" FOREIGN KEY ("clienteId") REFERENCES "clientes"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Processo" ADD CONSTRAINT "Processo_clienteId_fkey" FOREIGN KEY ("clienteId") REFERENCES "clientes"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Processo" ADD CONSTRAINT "Processo_orgaoJulgadorId_fkey" FOREIGN KEY ("orgaoJulgadorId") REFERENCES "orgaos_julgadores"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Audiencia" ADD CONSTRAINT "Audiencia_processoId_fkey" FOREIGN KEY ("processoId") REFERENCES "Processo"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Diligencia" ADD CONSTRAINT "Diligencia_processoId_fkey" FOREIGN KEY ("processoId") REFERENCES "Processo"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Movimentacao" ADD CONSTRAINT "Movimentacao_processoId_fkey" FOREIGN KEY ("processoId") REFERENCES "Processo"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Documento" ADD CONSTRAINT "Documento_processoId_fkey" FOREIGN KEY ("processoId") REFERENCES "Processo"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "custas_processuais" ADD CONSTRAINT "custas_processuais_processoId_fkey" FOREIGN KEY ("processoId") REFERENCES "Processo"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "honorarios" ADD CONSTRAINT "honorarios_processoId_fkey" FOREIGN KEY ("processoId") REFERENCES "Processo"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "parcelas_honorario" ADD CONSTRAINT "parcelas_honorario_honorarioId_fkey" FOREIGN KEY ("honorarioId") REFERENCES "honorarios"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "MovimentacaoTribunal" ADD CONSTRAINT "MovimentacaoTribunal_processoId_fkey" FOREIGN KEY ("processoId") REFERENCES "Processo"("id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/prisma/migrations/20250328012117_add_percentual_entrada/migration.sql b/prisma/migrations/20250328012117_add_percentual_entrada/migration.sql new file mode 100644 index 0000000..9c7d1eb --- /dev/null +++ b/prisma/migrations/20250328012117_add_percentual_entrada/migration.sql @@ -0,0 +1,5 @@ +-- AlterEnum +ALTER TYPE "FormaPagamento" ADD VALUE 'PERCENTUAL_CAUSA_COM_ENTRADA'; + +-- AlterTable +ALTER TABLE "honorarios" ADD COLUMN "valorTotalCausa" DECIMAL(10,2); diff --git a/prisma/migrations/20250328191303_add_tribunal_fields/migration.sql b/prisma/migrations/20250328191303_add_tribunal_fields/migration.sql new file mode 100644 index 0000000..15fd0e6 --- /dev/null +++ b/prisma/migrations/20250328191303_add_tribunal_fields/migration.sql @@ -0,0 +1,17 @@ +/* + Warnings: + + - Added the required column `tribunal` to the `Processo` table without a default value. This is not possible if the table is not empty. + - Added the required column `tribunalUF` to the `Processo` table without a default value. This is not possible if the table is not empty. + +*/ +-- AlterTable +ALTER TABLE "Processo" ADD COLUMN "numeroOriginal" VARCHAR(50), +ADD COLUMN "tribunal" VARCHAR(50) NOT NULL, +ADD COLUMN "tribunalUF" VARCHAR(20) NOT NULL; + +-- CreateIndex +CREATE INDEX "Processo_tribunal_idx" ON "Processo"("tribunal"); + +-- CreateIndex +CREATE INDEX "Processo_tribunalUF_idx" ON "Processo"("tribunalUF"); diff --git a/prisma/migrations/20250328191600_add_tribunal_fields_safe/migration.sql b/prisma/migrations/20250328191600_add_tribunal_fields_safe/migration.sql new file mode 100644 index 0000000..3915d7d --- /dev/null +++ b/prisma/migrations/20250328191600_add_tribunal_fields_safe/migration.sql @@ -0,0 +1,3 @@ +-- AlterTable +ALTER TABLE "Processo" ALTER COLUMN "tribunal" DROP NOT NULL, +ALTER COLUMN "tribunalUF" DROP NOT NULL; diff --git a/prisma/migrations/20250328222103_add_datajud_field/migration.sql b/prisma/migrations/20250328222103_add_datajud_field/migration.sql new file mode 100644 index 0000000..9191c77 --- /dev/null +++ b/prisma/migrations/20250328222103_add_datajud_field/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "Processo" ADD COLUMN "dadosDatajud" JSONB; diff --git a/prisma/migrations/20250328223034_add_datajud_update/migration.sql b/prisma/migrations/20250328223034_add_datajud_update/migration.sql new file mode 100644 index 0000000..9be2edf --- /dev/null +++ b/prisma/migrations/20250328223034_add_datajud_update/migration.sql @@ -0,0 +1,5 @@ +-- AlterTable +ALTER TABLE "Processo" ADD COLUMN "assuntos" TEXT[], +ADD COLUMN "classeProcessual" TEXT, +ADD COLUMN "dataAjuizamento" TIMESTAMP(3), +ADD COLUMN "nivelSigilo" INTEGER; diff --git a/prisma/migrations/20250329220922_/migration.sql b/prisma/migrations/20250329220922_/migration.sql new file mode 100644 index 0000000..b569f45 --- /dev/null +++ b/prisma/migrations/20250329220922_/migration.sql @@ -0,0 +1,31 @@ +/* + Warnings: + + - You are about to drop the column `cargo` on the `usuarios` table. All the data in the column will be lost. + - You are about to alter the column `nome` on the `usuarios` table. The data in that column could be lost. The data in that column will be cast from `Text` to `VarChar(100)`. + - You are about to alter the column `email` on the `usuarios` table. The data in that column could be lost. The data in that column will be cast from `Text` to `VarChar(100)`. + - You are about to alter the column `senha` on the `usuarios` table. The data in that column could be lost. The data in that column will be cast from `Text` to `VarChar(100)`. + +*/ +-- CreateEnum +CREATE TYPE "PerfilUsuario" AS ENUM ('ADVOGADO_ADMIN', 'ADVOGADO', 'ASSISTENTE', 'ESTAGIARIO'); + +-- AlterTable +ALTER TABLE "usuarios" DROP COLUMN "cargo", +ADD COLUMN "ativo" BOOLEAN NOT NULL DEFAULT true, +ADD COLUMN "bairro" VARCHAR(100), +ADD COLUMN "cep" VARCHAR(9), +ADD COLUMN "cidade" VARCHAR(100), +ADD COLUMN "complemento" VARCHAR(100), +ADD COLUMN "cpf" VARCHAR(14), +ADD COLUMN "endereco" VARCHAR(200), +ADD COLUMN "estado" VARCHAR(2), +ADD COLUMN "numero" VARCHAR(10), +ADD COLUMN "oab" VARCHAR(20), +ADD COLUMN "oabUF" VARCHAR(2), +ADD COLUMN "perfil" "PerfilUsuario" NOT NULL DEFAULT 'ADVOGADO', +ADD COLUMN "rg" VARCHAR(20), +ADD COLUMN "telefone" VARCHAR(15), +ALTER COLUMN "nome" SET DATA TYPE VARCHAR(100), +ALTER COLUMN "email" SET DATA TYPE VARCHAR(100), +ALTER COLUMN "senha" SET DATA TYPE VARCHAR(100); diff --git a/prisma/migrations/20250330224534_/migration.sql b/prisma/migrations/20250330224534_/migration.sql new file mode 100644 index 0000000..82eaf70 --- /dev/null +++ b/prisma/migrations/20250330224534_/migration.sql @@ -0,0 +1,58 @@ +-- CreateEnum +CREATE TYPE "TipoAtendimento" AS ENUM ('INICIAL', 'RETORNO', 'ENCAMINHAMENTO', 'ORIENTACAO', 'ACORDO', 'OUTROS'); + +-- CreateTable +CREATE TABLE "atendimentos" ( + "id" UUID NOT NULL DEFAULT gen_random_uuid(), + "protocolo" TEXT NOT NULL, + "clienteId" UUID NOT NULL, + "processoId" UUID, + "tipo" "TipoAtendimento" NOT NULL DEFAULT 'INICIAL', + "titulo" VARCHAR(200) NOT NULL, + "conteudo" TEXT NOT NULL, + "dataAtendimento" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "dataCriacao" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "usuarioId" UUID NOT NULL, + + CONSTRAINT "atendimentos_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "anexos_atendimento" ( + "id" UUID NOT NULL DEFAULT gen_random_uuid(), + "atendimentoId" UUID NOT NULL, + "nome" VARCHAR(200) NOT NULL, + "tipo" VARCHAR(50) NOT NULL, + "url" TEXT NOT NULL, + "armazenamento" VARCHAR(20) NOT NULL DEFAULT 'NEXTCLOUD', + "dataCriacao" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "anexos_atendimento_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "atendimentos_protocolo_key" ON "atendimentos"("protocolo"); + +-- CreateIndex +CREATE INDEX "atendimentos_clienteId_idx" ON "atendimentos"("clienteId"); + +-- CreateIndex +CREATE INDEX "atendimentos_processoId_idx" ON "atendimentos"("processoId"); + +-- CreateIndex +CREATE INDEX "atendimentos_protocolo_idx" ON "atendimentos"("protocolo"); + +-- CreateIndex +CREATE INDEX "anexos_atendimento_atendimentoId_idx" ON "anexos_atendimento"("atendimentoId"); + +-- AddForeignKey +ALTER TABLE "atendimentos" ADD CONSTRAINT "atendimentos_clienteId_fkey" FOREIGN KEY ("clienteId") REFERENCES "clientes"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "atendimentos" ADD CONSTRAINT "atendimentos_processoId_fkey" FOREIGN KEY ("processoId") REFERENCES "Processo"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "atendimentos" ADD CONSTRAINT "atendimentos_usuarioId_fkey" FOREIGN KEY ("usuarioId") REFERENCES "usuarios"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "anexos_atendimento" ADD CONSTRAINT "anexos_atendimento_atendimentoId_fkey" FOREIGN KEY ("atendimentoId") REFERENCES "atendimentos"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/prisma/migrations/20250330232401_/migration.sql b/prisma/migrations/20250330232401_/migration.sql new file mode 100644 index 0000000..7b0923c --- /dev/null +++ b/prisma/migrations/20250330232401_/migration.sql @@ -0,0 +1,8 @@ +-- AlterTable +ALTER TABLE "atendimentos" ADD COLUMN "atendimentoInicialId" UUID; + +-- CreateIndex +CREATE INDEX "atendimentos_atendimentoInicialId_idx" ON "atendimentos"("atendimentoInicialId"); + +-- AddForeignKey +ALTER TABLE "atendimentos" ADD CONSTRAINT "atendimentos_atendimentoInicialId_fkey" FOREIGN KEY ("atendimentoInicialId") REFERENCES "atendimentos"("id") ON DELETE SET NULL ON UPDATE CASCADE; diff --git a/prisma/migrations/20250330234121_/migration.sql b/prisma/migrations/20250330234121_/migration.sql new file mode 100644 index 0000000..3131c6a --- /dev/null +++ b/prisma/migrations/20250330234121_/migration.sql @@ -0,0 +1,26 @@ +-- CreateEnum +CREATE TYPE "StatusAgendamento" AS ENUM ('AGENDADO', 'CONFIRMADO', 'CANCELADO', 'REALIZADO', 'NAO_COMPARECEU'); + +-- CreateTable +CREATE TABLE "agendamentos_atendimento" ( + "id" UUID NOT NULL DEFAULT gen_random_uuid(), + "clienteId" UUID NOT NULL, + "usuarioId" UUID NOT NULL, + "data" TIMESTAMP NOT NULL, + "observacoes" TEXT, + "status" "StatusAgendamento" NOT NULL DEFAULT 'AGENDADO', + "criadoEm" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "atualizadoEm" TIMESTAMP(3) NOT NULL, + "atendimentoId" UUID, + + CONSTRAINT "agendamentos_atendimento_pkey" PRIMARY KEY ("id") +); + +-- AddForeignKey +ALTER TABLE "agendamentos_atendimento" ADD CONSTRAINT "agendamentos_atendimento_clienteId_fkey" FOREIGN KEY ("clienteId") REFERENCES "clientes"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "agendamentos_atendimento" ADD CONSTRAINT "agendamentos_atendimento_usuarioId_fkey" FOREIGN KEY ("usuarioId") REFERENCES "usuarios"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "agendamentos_atendimento" ADD CONSTRAINT "agendamentos_atendimento_atendimentoId_fkey" FOREIGN KEY ("atendimentoId") REFERENCES "atendimentos"("id") ON DELETE SET NULL ON UPDATE CASCADE; diff --git a/prisma/migrations/20250331000000_create_tarefas.sql b/prisma/migrations/20250331000000_create_tarefas.sql new file mode 100644 index 0000000..d1a9054 --- /dev/null +++ b/prisma/migrations/20250331000000_create_tarefas.sql @@ -0,0 +1,76 @@ +-- CreateEnum +CREATE TYPE "StatusTarefa" AS ENUM ('PENDENTE', 'EM_ANDAMENTO', 'CONCLUIDA', 'CANCELADA'); +CREATE TYPE "PrioridadeTarefa" AS ENUM ('BAIXA', 'MEDIA', 'ALTA', 'URGENTE'); + +-- CreateTable +CREATE TABLE "tarefas" ( + "id" UUID NOT NULL DEFAULT gen_random_uuid(), + "titulo" TEXT NOT NULL, + "descricao" TEXT, + "status" "StatusTarefa" NOT NULL, + "prioridade" "PrioridadeTarefa" NOT NULL, + "dataInicio" TIMESTAMP(3) NOT NULL, + "dataVencimento" TIMESTAMP(3) NOT NULL, + "progresso" INTEGER NOT NULL DEFAULT 0, + "responsavelId" UUID NOT NULL, + "criadoPorId" UUID NOT NULL, + "processoId" UUID, + "clienteId" UUID, + "etiquetas" TEXT[], + "criadoEm" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "atualizadoEm" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "tarefas_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "subtarefas" ( + "id" UUID NOT NULL DEFAULT gen_random_uuid(), + "titulo" TEXT NOT NULL, + "concluida" BOOLEAN NOT NULL DEFAULT false, + "tarefaId" UUID NOT NULL, + + CONSTRAINT "subtarefas_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "comentarios" ( + "id" UUID NOT NULL DEFAULT gen_random_uuid(), + "texto" TEXT NOT NULL, + "criadoPorId" UUID NOT NULL, + "tarefaId" UUID NOT NULL, + "criadoEm" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "comentarios_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "anexos" ( + "id" UUID NOT NULL DEFAULT gen_random_uuid(), + "nome" TEXT NOT NULL, + "url" TEXT NOT NULL, + "tipo" TEXT NOT NULL, + "tamanho" INTEGER NOT NULL, + "tarefaId" UUID NOT NULL, + "criadoEm" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "anexos_pkey" PRIMARY KEY ("id") +); + +-- AddForeignKey +ALTER TABLE "tarefas" ADD CONSTRAINT "tarefas_responsavelId_fkey" FOREIGN KEY ("responsavelId") REFERENCES "usuarios"("id") ON DELETE RESTRICT ON UPDATE CASCADE; +ALTER TABLE "tarefas" ADD CONSTRAINT "tarefas_criadoPorId_fkey" FOREIGN KEY ("criadoPorId") REFERENCES "usuarios"("id") ON DELETE RESTRICT ON UPDATE CASCADE; +ALTER TABLE "tarefas" ADD CONSTRAINT "tarefas_processoId_fkey" FOREIGN KEY ("processoId") REFERENCES "processos"("id") ON DELETE SET NULL ON UPDATE CASCADE; +ALTER TABLE "tarefas" ADD CONSTRAINT "tarefas_clienteId_fkey" FOREIGN KEY ("clienteId") REFERENCES "clientes"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "subtarefas" ADD CONSTRAINT "subtarefas_tarefaId_fkey" FOREIGN KEY ("tarefaId") REFERENCES "tarefas"("id") ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE "comentarios" ADD CONSTRAINT "comentarios_criadoPorId_fkey" FOREIGN KEY ("criadoPorId") REFERENCES "usuarios"("id") ON DELETE RESTRICT ON UPDATE CASCADE; +ALTER TABLE "comentarios" ADD CONSTRAINT "comentarios_tarefaId_fkey" FOREIGN KEY ("tarefaId") REFERENCES "tarefas"("id") ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE "anexos" ADD CONSTRAINT "anexos_tarefaId_fkey" FOREIGN KEY ("tarefaId") REFERENCES "tarefas"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- CreateIndex +CREATE INDEX "tarefas_responsavelId_idx" ON "tarefas"("responsavelId"); +CREATE INDEX "tarefas_criadoPorId_idx" ON "tarefas"("criadoPorId"); +CREATE INDEX "tarefas_processoId_idx" ON "tarefas"("processoId"); +CREATE INDEX "tarefas_clienteId_idx" ON "tarefas"("clienteId"); diff --git a/prisma/migrations/20250331000000_create_tarefas_schema.sql b/prisma/migrations/20250331000000_create_tarefas_schema.sql new file mode 100644 index 0000000..3cbabff --- /dev/null +++ b/prisma/migrations/20250331000000_create_tarefas_schema.sql @@ -0,0 +1,86 @@ +-- CreateEnum +CREATE TYPE IF NOT EXISTS "StatusTarefa" AS ENUM ('PENDENTE', 'EM_ANDAMENTO', 'CONCLUIDA', 'CANCELADA'); +CREATE TYPE IF NOT EXISTS "PrioridadeTarefa" AS ENUM ('BAIXA', 'MEDIA', 'ALTA', 'URGENTE'); + +-- Tarefas first (parent table) +CREATE TABLE IF NOT EXISTS "tarefas" ( + "id" UUID NOT NULL DEFAULT gen_random_uuid(), + "titulo" TEXT NOT NULL, + "descricao" TEXT, + "status" "StatusTarefa" NOT NULL, + "prioridade" "PrioridadeTarefa" NOT NULL, + "dataInicio" TIMESTAMP(3) NOT NULL, + "dataVencimento" TIMESTAMP(3) NOT NULL, + "progresso" INTEGER NOT NULL DEFAULT 0, + "responsavelId" UUID NOT NULL, + "criadoPorId" UUID NOT NULL, + "processoId" UUID, + "clienteId" UUID, + "etiquetas" TEXT[], + "criadoEm" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "atualizadoEm" TIMESTAMP(3) NOT NULL, + CONSTRAINT "tarefas_pkey" PRIMARY KEY ("id"), + CONSTRAINT "tarefas_responsavelId_fkey" + FOREIGN KEY ("responsavelId") REFERENCES "usuarios"("id"), + CONSTRAINT "tarefas_criadoPorId_fkey" + FOREIGN KEY ("criadoPorId") REFERENCES "usuarios"("id"), + CONSTRAINT "tarefas_clienteId_fkey" + FOREIGN KEY ("clienteId") REFERENCES "clientes"("id") +); + +-- Then child tables +CREATE TABLE IF NOT EXISTS "subtarefas" ( + "id" UUID NOT NULL DEFAULT gen_random_uuid(), + "titulo" TEXT NOT NULL, + "concluida" BOOLEAN NOT NULL DEFAULT false, + "tarefaId" UUID NOT NULL, + CONSTRAINT "subtarefas_pkey" PRIMARY KEY ("id"), + CONSTRAINT "subtarefas_tarefaId_fkey" + FOREIGN KEY ("tarefaId") REFERENCES "tarefas"("id") ON DELETE CASCADE +); + +CREATE TABLE IF NOT EXISTS "comentarios" ( + "id" UUID NOT NULL DEFAULT gen_random_uuid(), + "texto" TEXT NOT NULL, + "criadoPorId" UUID NOT NULL, + "tarefaId" UUID NOT NULL, + "criadoEm" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + CONSTRAINT "comentarios_pkey" PRIMARY KEY ("id"), + CONSTRAINT "comentarios_criadoPorId_fkey" + FOREIGN KEY ("criadoPorId") REFERENCES "usuarios"("id"), + CONSTRAINT "comentarios_tarefaId_fkey" + FOREIGN KEY ("tarefaId") REFERENCES "tarefas"("id") ON DELETE CASCADE +); + +CREATE TABLE IF NOT EXISTS "anexos" ( + "id" UUID NOT NULL DEFAULT gen_random_uuid(), + "nome" TEXT NOT NULL, + "url" TEXT NOT NULL, + "tipo" TEXT NOT NULL, + "tamanho" INTEGER NOT NULL, + "tarefaId" UUID NOT NULL, + "criadoEm" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + CONSTRAINT "anexos_pkey" PRIMARY KEY ("id"), + CONSTRAINT "anexos_tarefaId_fkey" + FOREIGN KEY ("tarefaId") REFERENCES "tarefas"("id") ON DELETE CASCADE +); + +-- Add foreign key for processos after it exists +DO $$ +BEGIN + IF EXISTS ( + SELECT 1 FROM information_schema.tables + WHERE table_name = 'processos' + ) THEN + ALTER TABLE "tarefas" + ADD CONSTRAINT "tarefas_processoId_fkey" + FOREIGN KEY ("processoId") + REFERENCES "processos"("id"); + END IF; +END $$; + +-- Indexes +CREATE INDEX IF NOT EXISTS "tarefas_responsavelId_idx" ON "tarefas"("responsavelId"); +CREATE INDEX IF NOT EXISTS "tarefas_criadoPorId_idx" ON "tarefas"("criadoPorId"); +CREATE INDEX IF NOT EXISTS "tarefas_processoId_idx" ON "tarefas"("processoId"); +CREATE INDEX IF NOT EXISTS "tarefas_clienteId_idx" ON "tarefas"("clienteId"); diff --git a/prisma/migrations/20250331000004_add_atendimento_status_fields.sql b/prisma/migrations/20250331000004_add_atendimento_status_fields.sql new file mode 100644 index 0000000..cc161b4 --- /dev/null +++ b/prisma/migrations/20250331000004_add_atendimento_status_fields.sql @@ -0,0 +1,18 @@ +-- Remover colunas se existirem (para evitar conflitos) +ALTER TABLE "atendimentos" DROP COLUMN IF EXISTS "status"; +ALTER TABLE "atendimentos" DROP COLUMN IF EXISTS "justificativaCancelamento"; +ALTER TABLE "atendimentos" DROP COLUMN IF EXISTS "dataAtualizacao"; + +-- Adicionar as colunas novamente +ALTER TABLE "atendimentos" +ADD COLUMN "status" VARCHAR(20) DEFAULT 'ATIVO', +ADD COLUMN "justificativaCancelamento" TEXT, +ADD COLUMN "dataAtualizacao" TIMESTAMP DEFAULT CURRENT_TIMESTAMP; + +-- Atualizar registros existentes +UPDATE "atendimentos" +SET "status" = 'ATIVO', + "dataAtualizacao" = COALESCE("dataCriacao", CURRENT_TIMESTAMP); + +-- Criar índice para melhorar performance de buscas por status +CREATE INDEX IF NOT EXISTS "atendimentos_status_idx" ON "atendimentos"("status"); diff --git a/prisma/migrations/20250331001651_/migration.sql b/prisma/migrations/20250331001651_/migration.sql new file mode 100644 index 0000000..549576a --- /dev/null +++ b/prisma/migrations/20250331001651_/migration.sql @@ -0,0 +1,4 @@ +-- AlterTable +ALTER TABLE "atendimentos" ADD COLUMN "dataAtualizacao" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP, +ADD COLUMN "justificativaCancelamento" TEXT, +ADD COLUMN "status" VARCHAR(20) DEFAULT 'ATIVO'; diff --git a/prisma/migrations/20250331112550_create_tarefas/migration.sql b/prisma/migrations/20250331112550_create_tarefas/migration.sql new file mode 100644 index 0000000..0f1d383 --- /dev/null +++ b/prisma/migrations/20250331112550_create_tarefas/migration.sql @@ -0,0 +1,84 @@ +-- CreateEnum +CREATE TYPE "StatusTarefa" AS ENUM ('PENDENTE', 'EM_ANDAMENTO', 'CONCLUIDA', 'CANCELADA'); + +-- CreateEnum +CREATE TYPE "PrioridadeTarefa" AS ENUM ('BAIXA', 'MEDIA', 'ALTA', 'URGENTE'); + +-- CreateTable +CREATE TABLE "tarefas" ( + "id" UUID NOT NULL DEFAULT gen_random_uuid(), + "titulo" TEXT NOT NULL, + "descricao" TEXT, + "status" "StatusTarefa" NOT NULL, + "prioridade" "PrioridadeTarefa" NOT NULL, + "dataInicio" TIMESTAMP(3) NOT NULL, + "dataVencimento" TIMESTAMP(3) NOT NULL, + "progresso" INTEGER NOT NULL DEFAULT 0, + "responsavelId" UUID NOT NULL, + "criadoPorId" UUID NOT NULL, + "processoId" UUID, + "clienteId" UUID, + "etiquetas" TEXT[], + "criadoEm" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "atualizadoEm" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "tarefas_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "subtarefas" ( + "id" UUID NOT NULL DEFAULT gen_random_uuid(), + "titulo" TEXT NOT NULL, + "concluida" BOOLEAN NOT NULL DEFAULT false, + "tarefaId" UUID NOT NULL, + + CONSTRAINT "subtarefas_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "comentarios" ( + "id" UUID NOT NULL DEFAULT gen_random_uuid(), + "texto" TEXT NOT NULL, + "criadoPorId" UUID NOT NULL, + "tarefaId" UUID NOT NULL, + "criadoEm" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "comentarios_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "anexos" ( + "id" UUID NOT NULL DEFAULT gen_random_uuid(), + "nome" TEXT NOT NULL, + "url" TEXT NOT NULL, + "tipo" TEXT NOT NULL, + "tamanho" INTEGER NOT NULL, + "tarefaId" UUID NOT NULL, + "criadoEm" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "anexos_pkey" PRIMARY KEY ("id") +); + +-- AddForeignKey +ALTER TABLE "tarefas" ADD CONSTRAINT "tarefas_responsavelId_fkey" FOREIGN KEY ("responsavelId") REFERENCES "usuarios"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "tarefas" ADD CONSTRAINT "tarefas_criadoPorId_fkey" FOREIGN KEY ("criadoPorId") REFERENCES "usuarios"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "tarefas" ADD CONSTRAINT "tarefas_processoId_fkey" FOREIGN KEY ("processoId") REFERENCES "Processo"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "tarefas" ADD CONSTRAINT "tarefas_clienteId_fkey" FOREIGN KEY ("clienteId") REFERENCES "clientes"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "subtarefas" ADD CONSTRAINT "subtarefas_tarefaId_fkey" FOREIGN KEY ("tarefaId") REFERENCES "tarefas"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "comentarios" ADD CONSTRAINT "comentarios_criadoPorId_fkey" FOREIGN KEY ("criadoPorId") REFERENCES "usuarios"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "comentarios" ADD CONSTRAINT "comentarios_tarefaId_fkey" FOREIGN KEY ("tarefaId") REFERENCES "tarefas"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "anexos" ADD CONSTRAINT "anexos_tarefaId_fkey" FOREIGN KEY ("tarefaId") REFERENCES "tarefas"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/prisma/migrations/20250331145129_add_processo_resultado/migration.sql b/prisma/migrations/20250331145129_add_processo_resultado/migration.sql new file mode 100644 index 0000000..d1e2d20 --- /dev/null +++ b/prisma/migrations/20250331145129_add_processo_resultado/migration.sql @@ -0,0 +1,5 @@ +-- CreateEnum +CREATE TYPE "ResultadoProcesso" AS ENUM ('NAO_JULGADO', 'PROCEDENTE', 'PARCIALMENTE_PROCEDENTE', 'IMPROCEDENTE', 'SEM_ANALISE_MERITO'); + +-- AlterTable +ALTER TABLE "Processo" ADD COLUMN "resultado" "ResultadoProcesso" NOT NULL DEFAULT 'NAO_JULGADO'; diff --git a/prisma/migrations/20250331172731_add_data_conclusao_tarefa/migration.sql b/prisma/migrations/20250331172731_add_data_conclusao_tarefa/migration.sql new file mode 100644 index 0000000..bf24f86 --- /dev/null +++ b/prisma/migrations/20250331172731_add_data_conclusao_tarefa/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "tarefas" ADD COLUMN "dataConclusao" TIMESTAMP(3); diff --git a/prisma/migrations/20250331190725_create_anexos/migration.sql b/prisma/migrations/20250331190725_create_anexos/migration.sql new file mode 100644 index 0000000..de14088 --- /dev/null +++ b/prisma/migrations/20250331190725_create_anexos/migration.sql @@ -0,0 +1,44 @@ +/* + Warnings: + + - You are about to drop the `anexos` table. If the table is not empty, all the data it contains will be lost. + - You are about to drop the `anexos_atendimento` table. If the table is not empty, all the data it contains will be lost. + +*/ +-- DropForeignKey +ALTER TABLE "anexos" DROP CONSTRAINT "anexos_tarefaId_fkey"; + +-- DropForeignKey +ALTER TABLE "anexos_atendimento" DROP CONSTRAINT "anexos_atendimento_atendimentoId_fkey"; + +-- DropTable +DROP TABLE "anexos"; + +-- DropTable +DROP TABLE "anexos_atendimento"; + +-- CreateTable +CREATE TABLE "Anexo" ( + "id" UUID NOT NULL DEFAULT gen_random_uuid(), + "nome" TEXT NOT NULL, + "url" TEXT NOT NULL, + "tipo" TEXT NOT NULL, + "tamanho" INTEGER NOT NULL, + "atendimentoId" UUID, + "tarefaId" UUID, + "criadoEm" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "Anexo_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE INDEX "Anexo_atendimentoId_idx" ON "Anexo"("atendimentoId"); + +-- CreateIndex +CREATE INDEX "Anexo_tarefaId_idx" ON "Anexo"("tarefaId"); + +-- AddForeignKey +ALTER TABLE "Anexo" ADD CONSTRAINT "Anexo_atendimentoId_fkey" FOREIGN KEY ("atendimentoId") REFERENCES "atendimentos"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Anexo" ADD CONSTRAINT "Anexo_tarefaId_fkey" FOREIGN KEY ("tarefaId") REFERENCES "tarefas"("id") ON DELETE SET NULL ON UPDATE CASCADE; diff --git a/prisma/migrations/20250402144403_add_documentos_tables/migration.sql b/prisma/migrations/20250402144403_add_documentos_tables/migration.sql new file mode 100644 index 0000000..36184a0 --- /dev/null +++ b/prisma/migrations/20250402144403_add_documentos_tables/migration.sql @@ -0,0 +1,66 @@ +/* + Warnings: + + - You are about to drop the `Documento` table. If the table is not empty, all the data it contains will be lost. + +*/ +-- CreateEnum +CREATE TYPE "TipoDocumento" AS ENUM ('PETICAO', 'CONTRATO', 'PROCURACAO', 'DECLARACAO', 'OUTROS'); + +-- DropForeignKey +ALTER TABLE "Documento" DROP CONSTRAINT "Documento_processoId_fkey"; + +-- DropTable +DROP TABLE "Documento"; + +-- CreateTable +CREATE TABLE "documentos" ( + "id" UUID NOT NULL DEFAULT gen_random_uuid(), + "nome" VARCHAR(200) NOT NULL, + "tipo" "TipoDocumento" NOT NULL, + "conteudo" TEXT NOT NULL, + "url" TEXT, + "processoId" UUID, + "atendimentoId" UUID, + "anexoId" UUID, + "criadoPorId" UUID NOT NULL, + "criadoEm" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "atualizadoEm" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "documentos_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "documentos_modelos" ( + "id" UUID NOT NULL DEFAULT gen_random_uuid(), + "nome" VARCHAR(200) NOT NULL, + "descricao" TEXT, + "tipo" "TipoDocumento" NOT NULL, + "conteudo" TEXT NOT NULL, + "variaveis" TEXT[], + "criadoEm" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "atualizadoEm" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "documentos_modelos_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "documentos_anexoId_key" ON "documentos"("anexoId"); + +-- CreateIndex +CREATE INDEX "documentos_processoId_idx" ON "documentos"("processoId"); + +-- CreateIndex +CREATE INDEX "documentos_atendimentoId_idx" ON "documentos"("atendimentoId"); + +-- AddForeignKey +ALTER TABLE "documentos" ADD CONSTRAINT "documentos_processoId_fkey" FOREIGN KEY ("processoId") REFERENCES "Processo"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "documentos" ADD CONSTRAINT "documentos_atendimentoId_fkey" FOREIGN KEY ("atendimentoId") REFERENCES "atendimentos"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "documentos" ADD CONSTRAINT "documentos_anexoId_fkey" FOREIGN KEY ("anexoId") REFERENCES "Anexo"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "documentos" ADD CONSTRAINT "documentos_criadoPorId_fkey" FOREIGN KEY ("criadoPorId") REFERENCES "usuarios"("id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/prisma/migrations/20250402145614_/migration.sql b/prisma/migrations/20250402145614_/migration.sql new file mode 100644 index 0000000..45ba9a5 --- /dev/null +++ b/prisma/migrations/20250402145614_/migration.sql @@ -0,0 +1,31 @@ +/* + Warnings: + + - The `variaveis` column on the `modelos_documentos` table would be dropped and recreated. This will lead to data loss if there is data in the column. + +*/ +-- AlterTable +ALTER TABLE "documentos" ADD COLUMN "protocolo" VARCHAR(20); + +-- AlterTable +ALTER TABLE "modelos_documentos" ADD COLUMN "assinatura" BOOLEAN NOT NULL DEFAULT true, +ADD COLUMN "cabecalho" BOOLEAN NOT NULL DEFAULT true, +ADD COLUMN "rodape" BOOLEAN NOT NULL DEFAULT true, +DROP COLUMN "variaveis", +ADD COLUMN "variaveis" JSONB; + +-- CreateTable +CREATE TABLE "configuracoes_documentos" ( + "id" UUID NOT NULL DEFAULT gen_random_uuid(), + "cabecalhoHtml" TEXT NOT NULL, + "rodapeHtml" TEXT NOT NULL, + "assinaturaHtml" TEXT NOT NULL, + "logoUrl" TEXT, + "criadoEm" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "atualizadoEm" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "configuracoes_documentos_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE INDEX "documentos_protocolo_idx" ON "documentos"("protocolo"); diff --git a/prisma/migrations/20250402201206_create_configuracao_documento/migration.sql b/prisma/migrations/20250402201206_create_configuracao_documento/migration.sql new file mode 100644 index 0000000..53078be --- /dev/null +++ b/prisma/migrations/20250402201206_create_configuracao_documento/migration.sql @@ -0,0 +1,19 @@ +/* + Warnings: + + - You are about to drop the `configuracoes_documentos` table. If the table is not empty, all the data it contains will be lost. + +*/ +-- DropTable +DROP TABLE "configuracoes_documentos"; + +-- CreateTable +CREATE TABLE "configuracao_documento" ( + "id" UUID NOT NULL DEFAULT gen_random_uuid(), + "headerImageUrl" TEXT, + "footerImageUrl" TEXT, + "logoUrl" TEXT, + "criadoEm" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "configuracao_documento_pkey" PRIMARY KEY ("id") +); diff --git a/prisma/migrations/20250403012106_update_configuracao_documento/migration.sql b/prisma/migrations/20250403012106_update_configuracao_documento/migration.sql new file mode 100644 index 0000000..40c13ed --- /dev/null +++ b/prisma/migrations/20250403012106_update_configuracao_documento/migration.sql @@ -0,0 +1,6 @@ +-- AlterTable +ALTER TABLE "configuracao_documento" ADD COLUMN "timbradoMarginBottom" INTEGER DEFAULT 50, +ADD COLUMN "timbradoMarginLeft" INTEGER DEFAULT 50, +ADD COLUMN "timbradoMarginRight" INTEGER DEFAULT 50, +ADD COLUMN "timbradoMarginTop" INTEGER DEFAULT 100, +ADD COLUMN "timbradoUrl" TEXT; diff --git a/prisma/migrations/20250403182625_add_escritorio_to_config/migration.sql b/prisma/migrations/20250403182625_add_escritorio_to_config/migration.sql new file mode 100644 index 0000000..90c7174 --- /dev/null +++ b/prisma/migrations/20250403182625_add_escritorio_to_config/migration.sql @@ -0,0 +1,19 @@ +/* + Warnings: + + - You are about to drop the column `footerImageUrl` on the `configuracao_documento` table. All the data in the column will be lost. + - You are about to drop the column `headerImageUrl` on the `configuracao_documento` table. All the data in the column will be lost. + - You are about to drop the column `logoUrl` on the `configuracao_documento` table. All the data in the column will be lost. + - A unique constraint covering the columns `[escritorioId]` on the table `configuracao_documento` will be added. If there are existing duplicate values, this will fail. + +*/ +-- AlterTable +ALTER TABLE "configuracao_documento" DROP COLUMN "footerImageUrl", +DROP COLUMN "headerImageUrl", +DROP COLUMN "logoUrl", +ADD COLUMN "escritorioId" UUID, +ADD COLUMN "margensTemplate" JSONB DEFAULT '{"top":35,"bottom":29,"left":25,"right":25}', +ADD COLUMN "templatePadrao" TEXT; + +-- CreateIndex +CREATE UNIQUE INDEX "configuracao_documento_escritorioId_key" ON "configuracao_documento"("escritorioId"); diff --git a/prisma/migrations/20250403184058_remove_escritorio_relation_from_config/migration.sql b/prisma/migrations/20250403184058_remove_escritorio_relation_from_config/migration.sql new file mode 100644 index 0000000..fa5b1e4 --- /dev/null +++ b/prisma/migrations/20250403184058_remove_escritorio_relation_from_config/migration.sql @@ -0,0 +1,14 @@ +/* + Warnings: + + - You are about to drop the column `escritorioId` on the `configuracao_documento` table. All the data in the column will be lost. + +*/ +-- DropIndex +DROP INDEX "configuracao_documento_escritorioId_key"; + +-- AlterTable +ALTER TABLE "configuracao_documento" DROP COLUMN "escritorioId"; + +-- CreateIndex +CREATE INDEX "configuracao_documento_criadoEm_idx" ON "configuracao_documento"("criadoEm"); diff --git a/prisma/migrations/20250403190651_/migration.sql b/prisma/migrations/20250403190651_/migration.sql new file mode 100644 index 0000000..1ed7bc1 --- /dev/null +++ b/prisma/migrations/20250403190651_/migration.sql @@ -0,0 +1,59 @@ +-- CreateEnum +CREATE TYPE "StatusProcessoAdministrativo" AS ENUM ('INICIAL', 'EM_ANALISE', 'EM_RECURSO', 'FINALIZADO', 'ARQUIVADO'); + +-- AlterTable +ALTER TABLE "documentos" ADD COLUMN "processoAdministrativoId" UUID; + +-- CreateTable +CREATE TABLE "processos_administrativos" ( + "id" UUID NOT NULL DEFAULT gen_random_uuid(), + "numero" TEXT NOT NULL, + "descricao" TEXT NOT NULL, + "orgao" VARCHAR(200) NOT NULL, + "clienteId" UUID NOT NULL, + "tipoParteCliente" "TipoParte" NOT NULL, + "valorPretensao" DECIMAL(15,2), + "status" "StatusProcessoAdministrativo" NOT NULL DEFAULT 'INICIAL', + "resultado" VARCHAR(100), + "observacoes" TEXT, + "dataCriacao" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "dataAtualizacao" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "processos_administrativos_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "movimentacoes_administrativas" ( + "id" UUID NOT NULL DEFAULT gen_random_uuid(), + "processoId" UUID NOT NULL, + "data" TIMESTAMP(3) NOT NULL, + "descricao" TEXT NOT NULL, + "tipoMovimentacao" VARCHAR(100) NOT NULL, + "numero" VARCHAR(100), + "documentos" TEXT[], + "observacoes" TEXT, + "dataCriacao" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "movimentacoes_administrativas_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "processos_administrativos_numero_key" ON "processos_administrativos"("numero"); + +-- CreateIndex +CREATE INDEX "processos_administrativos_clienteId_idx" ON "processos_administrativos"("clienteId"); + +-- CreateIndex +CREATE INDEX "movimentacoes_administrativas_processoId_idx" ON "movimentacoes_administrativas"("processoId"); + +-- CreateIndex +CREATE INDEX "documentos_processoAdministrativoId_idx" ON "documentos"("processoAdministrativoId"); + +-- AddForeignKey +ALTER TABLE "processos_administrativos" ADD CONSTRAINT "processos_administrativos_clienteId_fkey" FOREIGN KEY ("clienteId") REFERENCES "clientes"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "movimentacoes_administrativas" ADD CONSTRAINT "movimentacoes_administrativas_processoId_fkey" FOREIGN KEY ("processoId") REFERENCES "processos_administrativos"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "documentos" ADD CONSTRAINT "documentos_processoAdministrativoId_fkey" FOREIGN KEY ("processoAdministrativoId") REFERENCES "processos_administrativos"("id") ON DELETE SET NULL ON UPDATE CASCADE; diff --git a/prisma/migrations/20250403220121_/migration.sql b/prisma/migrations/20250403220121_/migration.sql new file mode 100644 index 0000000..c9c726c --- /dev/null +++ b/prisma/migrations/20250403220121_/migration.sql @@ -0,0 +1,27 @@ +-- CreateEnum +CREATE TYPE "TipoCustaAdministrativa" AS ENUM ('TAXA_ADMINISTRATIVA', 'RECURSO', 'DILIGENCIA', 'CERTIDAO', 'COPIA', 'OUTROS'); + +-- CreateTable +CREATE TABLE "custas_administrativas" ( + "id" UUID NOT NULL DEFAULT gen_random_uuid(), + "processoId" UUID NOT NULL, + "tipo" "TipoCustaAdministrativa" NOT NULL, + "descricao" VARCHAR(200) NOT NULL, + "valor" DECIMAL(10,2) NOT NULL, + "status" "StatusPagamento" NOT NULL DEFAULT 'PENDENTE', + "vencimento" TIMESTAMP(3), + "dataPagamento" TIMESTAMP(3), + "comprovante" TEXT, + "observacoes" TEXT, + "dataCriacao" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "numeroParcelas" INTEGER NOT NULL DEFAULT 1, + "parcelaAtual" INTEGER NOT NULL DEFAULT 1, + + CONSTRAINT "custas_administrativas_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE INDEX "custas_administrativas_processoId_idx" ON "custas_administrativas"("processoId"); + +-- AddForeignKey +ALTER TABLE "custas_administrativas" ADD CONSTRAINT "custas_administrativas_processoId_fkey" FOREIGN KEY ("processoId") REFERENCES "processos_administrativos"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/prisma/migrations/20250403225241_/migration.sql b/prisma/migrations/20250403225241_/migration.sql new file mode 100644 index 0000000..b2a1f20 --- /dev/null +++ b/prisma/migrations/20250403225241_/migration.sql @@ -0,0 +1,21 @@ +-- CreateEnum +CREATE TYPE "StatusProva" AS ENUM ('PENDENTE', 'PROCESSANDO', 'CONCLUIDO', 'ERRO'); + +-- CreateTable +CREATE TABLE "provas" ( + "id" UUID NOT NULL DEFAULT gen_random_uuid(), + "fileName" VARCHAR(255) NOT NULL, + "mimeType" VARCHAR(100) NOT NULL, + "checksumSha256" VARCHAR(64) NOT NULL, + "checksumSha512" VARCHAR(128) NOT NULL, + "checksumMd5" VARCHAR(32) NOT NULL, + "timestamp" TEXT NOT NULL, + "metadata" JSONB NOT NULL, + "reportPath" VARCHAR(255) NOT NULL, + "status" "StatusProva" NOT NULL DEFAULT 'PENDENTE', + "error" TEXT, + "dataCriacao" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "dataValida" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "provas_pkey" PRIMARY KEY ("id") +); diff --git a/prisma/migrations/20250404175618_/migration.sql b/prisma/migrations/20250404175618_/migration.sql new file mode 100644 index 0000000..07c13ec --- /dev/null +++ b/prisma/migrations/20250404175618_/migration.sql @@ -0,0 +1,263 @@ +-- CreateTable +CREATE TABLE "calculosjudiciais" ( + "id" TEXT NOT NULL, + "titulo" TEXT NOT NULL, + "descricao" TEXT, + "dataBase" TIMESTAMP(3) NOT NULL, + "dataCalculo" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "valorBase" DECIMAL(15,2) NOT NULL, + "valorCorrigido" DECIMAL(15,2) NOT NULL, + "valorFinal" DECIMAL(15,2) NOT NULL, + "status" TEXT NOT NULL DEFAULT 'RASCUNHO', + "usuarioId" UUID, + "processoId" UUID, + "clienteId" UUID, + "configuracoes" JSONB, + "criadoEm" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "atualizadoEm" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "calculosjudiciais_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "correcoes_monetarias" ( + "id" TEXT NOT NULL, + "calculoId" TEXT NOT NULL, + "indice" TEXT NOT NULL, + "dataInicial" TIMESTAMP(3) NOT NULL, + "dataFinal" TIMESTAMP(3), + "valorOriginal" DECIMAL(15,2) NOT NULL, + "valorCorrigido" DECIMAL(15,2) NOT NULL, + "fatorCorrecao" DECIMAL(15,6) NOT NULL, + "criadoEm" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "atualizadoEm" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "correcoes_monetarias_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "juros_calculos" ( + "id" TEXT NOT NULL, + "calculoId" TEXT NOT NULL, + "tipo" TEXT NOT NULL, + "taxa" DECIMAL(8,6) NOT NULL, + "periodicidade" TEXT NOT NULL, + "natureza" TEXT NOT NULL, + "dataInicial" TIMESTAMP(3) NOT NULL, + "dataFinal" TIMESTAMP(3), + "valorBase" DECIMAL(15,2) NOT NULL, + "valorJuros" DECIMAL(15,2) NOT NULL, + "criadoEm" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "atualizadoEm" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "juros_calculos_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "multas_calculos" ( + "id" TEXT NOT NULL, + "calculoId" TEXT NOT NULL, + "tipo" TEXT NOT NULL, + "percentual" DECIMAL(8,6) NOT NULL, + "valorBase" DECIMAL(15,2) NOT NULL, + "valorMulta" DECIMAL(15,2) NOT NULL, + "fundamento" TEXT, + "criadoEm" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "atualizadoEm" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "multas_calculos_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "honorarios_calculos" ( + "id" TEXT NOT NULL, + "calculoId" TEXT NOT NULL, + "tipo" TEXT NOT NULL, + "percentual" DECIMAL(8,6) NOT NULL, + "valorBase" DECIMAL(15,2) NOT NULL, + "valorHonorario" DECIMAL(15,2) NOT NULL, + "fundamento" TEXT, + "criadoEm" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "atualizadoEm" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "honorarios_calculos_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "parcelas_calculos" ( + "id" TEXT NOT NULL, + "calculoId" TEXT NOT NULL, + "numero" INTEGER NOT NULL, + "dataVencimento" TIMESTAMP(3) NOT NULL, + "valorOriginal" DECIMAL(15,2) NOT NULL, + "valorCorrigido" DECIMAL(15,2) NOT NULL, + "valorJuros" DECIMAL(15,2) NOT NULL, + "valorMulta" DECIMAL(15,2) NOT NULL, + "valorTotal" DECIMAL(15,2) NOT NULL, + "pago" BOOLEAN NOT NULL DEFAULT false, + "dataPagamento" TIMESTAMP(3), + "criadoEm" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "atualizadoEm" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "parcelas_calculos_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "descontos_calculos" ( + "id" TEXT NOT NULL, + "calculoId" TEXT NOT NULL, + "tipo" TEXT NOT NULL, + "descricao" TEXT, + "percentual" DECIMAL(8,6), + "valorFixo" DECIMAL(15,2), + "valorBase" DECIMAL(15,2) NOT NULL, + "valorDesconto" DECIMAL(15,2) NOT NULL, + "criadoEm" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "atualizadoEm" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "descontos_calculos_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "historicos_calculos" ( + "id" TEXT NOT NULL, + "calculoId" TEXT NOT NULL, + "usuarioId" UUID, + "acao" TEXT NOT NULL, + "descricao" TEXT NOT NULL, + "valorAnterior" DECIMAL(15,2), + "valorNovo" DECIMAL(15,2), + "metadados" JSONB, + "criadoEm" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "historicos_calculos_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "exportacoes_calculos" ( + "id" TEXT NOT NULL, + "calculoId" TEXT NOT NULL, + "usuarioId" UUID, + "tipo" TEXT NOT NULL, + "arquivo" TEXT NOT NULL, + "criadoEm" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "exportacoes_calculos_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "indices_monetarios" ( + "id" TEXT NOT NULL, + "nome" TEXT NOT NULL, + "mesReferencia" INTEGER NOT NULL, + "anoReferencia" INTEGER NOT NULL, + "valor" DECIMAL(15,6) NOT NULL, + "dataPublicacao" TIMESTAMP(3), + "fonte" TEXT, + "criadoEm" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "atualizadoEm" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "indices_monetarios_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "pensoes_alimenticias" ( + "id" TEXT NOT NULL, + "calculoId" TEXT NOT NULL, + "percentualSalarioMinimo" DECIMAL(8,6) NOT NULL, + "multaPactuada" DECIMAL(8,6), + "tipoAtualizacao" TEXT NOT NULL DEFAULT 'INPC', + "dataInicial" TIMESTAMP(3) NOT NULL, + "dataFinal" TIMESTAMP(3), + "observacoes" TEXT, + "criadoEm" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "atualizadoEm" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "pensoes_alimenticias_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "historico_salario_minimo" ( + "id" TEXT NOT NULL, + "pensaoId" TEXT NOT NULL, + "dataVigencia" TIMESTAMP(3) NOT NULL, + "valor" DECIMAL(15,2) NOT NULL, + "criadoEm" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "atualizadoEm" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "historico_salario_minimo_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "parcelas_pensao" ( + "id" TEXT NOT NULL, + "pensaoId" TEXT NOT NULL, + "competencia" TIMESTAMP(3) NOT NULL, + "valorSalarioMinimo" DECIMAL(15,2) NOT NULL, + "percentual" DECIMAL(8,6) NOT NULL, + "valorOriginal" DECIMAL(15,2) NOT NULL, + "valorCorrigido" DECIMAL(15,2) NOT NULL, + "valorJuros" DECIMAL(15,2) NOT NULL, + "valorMulta" DECIMAL(15,2) NOT NULL, + "valorTotal" DECIMAL(15,2) NOT NULL, + "pago" BOOLEAN NOT NULL DEFAULT false, + "dataPagamento" TIMESTAMP(3), + "criadoEm" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "atualizadoEm" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "parcelas_pensao_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "indices_monetarios_nome_mesReferencia_anoReferencia_key" ON "indices_monetarios"("nome", "mesReferencia", "anoReferencia"); + +-- CreateIndex +CREATE UNIQUE INDEX "pensoes_alimenticias_calculoId_key" ON "pensoes_alimenticias"("calculoId"); + +-- AddForeignKey +ALTER TABLE "calculosjudiciais" ADD CONSTRAINT "calculosjudiciais_usuarioId_fkey" FOREIGN KEY ("usuarioId") REFERENCES "usuarios"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "calculosjudiciais" ADD CONSTRAINT "calculosjudiciais_processoId_fkey" FOREIGN KEY ("processoId") REFERENCES "Processo"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "calculosjudiciais" ADD CONSTRAINT "calculosjudiciais_clienteId_fkey" FOREIGN KEY ("clienteId") REFERENCES "clientes"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "correcoes_monetarias" ADD CONSTRAINT "correcoes_monetarias_calculoId_fkey" FOREIGN KEY ("calculoId") REFERENCES "calculosjudiciais"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "juros_calculos" ADD CONSTRAINT "juros_calculos_calculoId_fkey" FOREIGN KEY ("calculoId") REFERENCES "calculosjudiciais"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "multas_calculos" ADD CONSTRAINT "multas_calculos_calculoId_fkey" FOREIGN KEY ("calculoId") REFERENCES "calculosjudiciais"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "honorarios_calculos" ADD CONSTRAINT "honorarios_calculos_calculoId_fkey" FOREIGN KEY ("calculoId") REFERENCES "calculosjudiciais"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "parcelas_calculos" ADD CONSTRAINT "parcelas_calculos_calculoId_fkey" FOREIGN KEY ("calculoId") REFERENCES "calculosjudiciais"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "descontos_calculos" ADD CONSTRAINT "descontos_calculos_calculoId_fkey" FOREIGN KEY ("calculoId") REFERENCES "calculosjudiciais"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "historicos_calculos" ADD CONSTRAINT "historicos_calculos_calculoId_fkey" FOREIGN KEY ("calculoId") REFERENCES "calculosjudiciais"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "historicos_calculos" ADD CONSTRAINT "historicos_calculos_usuarioId_fkey" FOREIGN KEY ("usuarioId") REFERENCES "usuarios"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "exportacoes_calculos" ADD CONSTRAINT "exportacoes_calculos_calculoId_fkey" FOREIGN KEY ("calculoId") REFERENCES "calculosjudiciais"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "exportacoes_calculos" ADD CONSTRAINT "exportacoes_calculos_usuarioId_fkey" FOREIGN KEY ("usuarioId") REFERENCES "usuarios"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "pensoes_alimenticias" ADD CONSTRAINT "pensoes_alimenticias_calculoId_fkey" FOREIGN KEY ("calculoId") REFERENCES "calculosjudiciais"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "historico_salario_minimo" ADD CONSTRAINT "historico_salario_minimo_pensaoId_fkey" FOREIGN KEY ("pensaoId") REFERENCES "pensoes_alimenticias"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "parcelas_pensao" ADD CONSTRAINT "parcelas_pensao_pensaoId_fkey" FOREIGN KEY ("pensaoId") REFERENCES "pensoes_alimenticias"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/prisma/migrations/XXXXXXXXXXXXXX_add_audiencia_report.sql b/prisma/migrations/XXXXXXXXXXXXXX_add_audiencia_report.sql new file mode 100644 index 0000000..5fb0364 --- /dev/null +++ b/prisma/migrations/XXXXXXXXXXXXXX_add_audiencia_report.sql @@ -0,0 +1,11 @@ +-- Adicionar campos para relatório de audiência +ALTER TABLE "audiencias" +ADD COLUMN IF NOT EXISTS "relatorio" TEXT, +ADD COLUMN IF NOT EXISTS "dataFinalizacao" TIMESTAMP, +ALTER COLUMN "status" TYPE VARCHAR(20) + USING CASE + WHEN status = 'AGENDADA' THEN 'AGENDADA'::VARCHAR + WHEN status = 'REALIZADA' THEN 'REALIZADA'::VARCHAR + WHEN status = 'CANCELADA' THEN 'CANCELADA'::VARCHAR + ELSE 'AGENDADA'::VARCHAR + END; diff --git a/prisma/migrations/XXXXXXXXXXXXXX_add_dni_filhos_orgao_fields.sql b/prisma/migrations/XXXXXXXXXXXXXX_add_dni_filhos_orgao_fields.sql new file mode 100644 index 0000000..d8ee6f6 --- /dev/null +++ b/prisma/migrations/XXXXXXXXXXXXXX_add_dni_filhos_orgao_fields.sql @@ -0,0 +1,5 @@ +-- AlterTable +ALTER TABLE "clientes" +ADD COLUMN IF NOT EXISTS "usaDNI" BOOLEAN NOT NULL DEFAULT false, +ADD COLUMN IF NOT EXISTS "possuiFilhos" BOOLEAN NOT NULL DEFAULT false, +ADD COLUMN IF NOT EXISTS "orgaoEmissor" TEXT; diff --git a/prisma/migrations/XXXXXXXXXXXXXX_add_documentos.sql b/prisma/migrations/XXXXXXXXXXXXXX_add_documentos.sql new file mode 100644 index 0000000..965acf9 --- /dev/null +++ b/prisma/migrations/XXXXXXXXXXXXXX_add_documentos.sql @@ -0,0 +1,13 @@ +-- Criar tabela para documentos +CREATE TABLE IF NOT EXISTS "documentos" ( + "id" UUID PRIMARY KEY DEFAULT gen_random_uuid(), + "processoId" UUID NOT NULL, + "nome" VARCHAR(200) NOT NULL, + "tipo" VARCHAR(50) NOT NULL, + "url" TEXT NOT NULL, + "dataCriacao" TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + FOREIGN KEY ("processoId") REFERENCES "processos"("id") ON DELETE CASCADE +); + +-- Adicionar índice para melhor performance +CREATE INDEX IF NOT EXISTS "idx_documentos_processo" ON "documentos"("processoId"); diff --git a/prisma/migrations/XXXXXXXXXXXXXX_add_field_limits.sql b/prisma/migrations/XXXXXXXXXXXXXX_add_field_limits.sql new file mode 100644 index 0000000..3a73c77 --- /dev/null +++ b/prisma/migrations/XXXXXXXXXXXXXX_add_field_limits.sql @@ -0,0 +1,25 @@ +-- AlterTable: Adicionar limites aos campos de texto +ALTER TABLE "clientes" + ALTER COLUMN "nome" TYPE VARCHAR(100), + ALTER COLUMN "email" TYPE VARCHAR(100), + ALTER COLUMN "cpfCnpj" TYPE VARCHAR(18), + ALTER COLUMN "rg" TYPE VARCHAR(20), + ALTER COLUMN "orgaoEmissor" TYPE VARCHAR(10), + ALTER COLUMN "estadoRg" TYPE CHAR(2), + ALTER COLUMN "telefone" TYPE VARCHAR(20), + ALTER COLUMN "instagram" TYPE VARCHAR(50), + ALTER COLUMN "cep" TYPE VARCHAR(9), + ALTER COLUMN "endereco" TYPE VARCHAR(150), + ALTER COLUMN "numero" TYPE VARCHAR(10), + ALTER COLUMN "complemento" TYPE VARCHAR(50), + ALTER COLUMN "bairro" TYPE VARCHAR(100), + ALTER COLUMN "cidade" TYPE VARCHAR(100), + ALTER COLUMN "estado" TYPE CHAR(2), + ALTER COLUMN "estadoCivil" TYPE VARCHAR(20), + ALTER COLUMN "profissao" TYPE VARCHAR(100), + ALTER COLUMN "vinculoEmpregaticio" TYPE VARCHAR(50), + ALTER COLUMN "tipoPrevidencia" TYPE VARCHAR(20), + ALTER COLUMN "nomePai" TYPE VARCHAR(100), + ALTER COLUMN "nomeMae" TYPE VARCHAR(100), + ALTER COLUMN "conjugeNome" TYPE VARCHAR(100), + ALTER COLUMN "conjugeCpf" TYPE VARCHAR(14); diff --git a/prisma/migrations/XXXXXXXXXXXXXX_add_new_fields_safe.sql b/prisma/migrations/XXXXXXXXXXXXXX_add_new_fields_safe.sql new file mode 100644 index 0000000..fac430d --- /dev/null +++ b/prisma/migrations/XXXXXXXXXXXXXX_add_new_fields_safe.sql @@ -0,0 +1,11 @@ +-- AlterTable: Adicionar novos campos sem modificar os existentes +ALTER TABLE "clientes" +ADD COLUMN IF NOT EXISTS "dataNascimento" TIMESTAMP, +ADD COLUMN IF NOT EXISTS "estadoRg" TEXT, +ADD COLUMN IF NOT EXISTS "orgaoEmissor" TEXT, +ADD COLUMN IF NOT EXISTS "usaDNI" BOOLEAN DEFAULT false, +ADD COLUMN IF NOT EXISTS "possuiFilhos" BOOLEAN DEFAULT false; + +-- AlterTable: Modificar valor default do tipoPrevidencia sem afetar dados existentes +ALTER TABLE "clientes" +ALTER COLUMN "tipoPrevidencia" SET DEFAULT 'NAO_CONTRIBUI'; diff --git a/prisma/migrations/XXXXXXXXXXXXXX_add_partes_processo.sql b/prisma/migrations/XXXXXXXXXXXXXX_add_partes_processo.sql new file mode 100644 index 0000000..e33cd71 --- /dev/null +++ b/prisma/migrations/XXXXXXXXXXXXXX_add_partes_processo.sql @@ -0,0 +1,83 @@ +-- Criar enum TipoParticipacao se não existir +DO $$ BEGIN + IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'tipoparticipacao') THEN + CREATE TYPE "TipoParticipacao" AS ENUM ( + 'AUTOR', + 'REU', + 'TERCEIRO_INTERESSADO' + ); + END IF; +END $$; + +-- Criar tabela de partes_processo mantendo dados existentes +CREATE TABLE IF NOT EXISTS "partes_processo" ( + "id" UUID PRIMARY KEY DEFAULT gen_random_uuid(), + "processoId" UUID NOT NULL, + "clienteId" UUID, + "tipo" "TipoParticipacao" NOT NULL, + "nome" VARCHAR(200) NOT NULL, + "cpfCnpj" VARCHAR(18), + "principal" BOOLEAN NOT NULL DEFAULT false, + "observacoes" TEXT, + "dataCriacao" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "fk_partes_processo_processo" + FOREIGN KEY ("processoId") + REFERENCES "processos"("id") + ON DELETE CASCADE, + CONSTRAINT "fk_partes_processo_cliente" + FOREIGN KEY ("clienteId") + REFERENCES "clientes"("id") + ON DELETE SET NULL +); + +-- Criar índices para melhor performance +CREATE INDEX IF NOT EXISTS "idx_partes_processo_processo" ON "partes_processo"("processoId"); +CREATE INDEX IF NOT EXISTS "idx_partes_processo_cliente" ON "partes_processo"("clienteId"); + +-- Migrar dados existentes para a nova estrutura +INSERT INTO "partes_processo" ( + "processoId", + "clienteId", + "tipo", + "nome", + "principal" +) +SELECT + p.id as "processoId", + p."clienteId", + p."tipoParteCliente"::TipoParticipacao as "tipo", + c.nome as "nome", + true as "principal" +FROM "processos" p +JOIN "clientes" c ON p."clienteId" = c.id +WHERE NOT EXISTS ( + SELECT 1 FROM "partes_processo" pp + WHERE pp."processoId" = p.id AND pp."clienteId" = p."clienteId" +); + +-- Adicionar partes contraparte +INSERT INTO "partes_processo" ( + "processoId", + "tipo", + "nome", + "principal" +) +SELECT + p.id as "processoId", + CASE + WHEN p."tipoParteCliente" = 'AUTOR' THEN 'REU'::TipoParticipacao + ELSE 'AUTOR'::TipoParticipacao + END as "tipo", + p."nomeContraparte" as "nome", + false as "principal" +FROM "processos" p +WHERE p."nomeContraparte" IS NOT NULL +AND NOT EXISTS ( + SELECT 1 FROM "partes_processo" pp + WHERE pp."processoId" = p.id AND pp.nome = p."nomeContraparte" +); + +-- Não remover colunas antigas ainda para manter compatibilidade +-- Em uma futura migração, após garantir que tudo está funcionando, +-- podemos remover as colunas redundantes diff --git a/prisma/migrations/XXXXXXXXXXXXXX_add_processos_judiciais.sql b/prisma/migrations/XXXXXXXXXXXXXX_add_processos_judiciais.sql new file mode 100644 index 0000000..9e783b4 --- /dev/null +++ b/prisma/migrations/XXXXXXXXXXXXXX_add_processos_judiciais.sql @@ -0,0 +1,98 @@ +-- Criar enums +CREATE TYPE "NaturezaProcesso" AS ENUM ( + 'CIVEL', + 'CRIMINAL', + 'PREVIDENCIARIO', + 'TRABALHISTA', + 'FAMILIA', + 'TRIBUTARIO', + 'ADMINISTRATIVO' +); + +CREATE TYPE "TipoParte" AS ENUM ( + 'AUTOR', + 'REU' +); + +CREATE TYPE "StatusProcesso" AS ENUM ( + 'INICIAL', + 'EM_ANDAMENTO', + 'SUSPENSO', + 'RECURSO', + 'CONCLUSO', + 'ARQUIVADO' +); + +CREATE TYPE "TipoDiligencia" AS ENUM ( + 'CITACAO', + 'INTIMACAO', + 'NOTIFICACAO', + 'PERICIA', + 'OFICIAL_JUSTICA', + 'CARTA_PRECATORIA', + 'OUTROS' +); + +CREATE TYPE "TipoAudiencia" AS ENUM ( + 'CONCILIACAO', + 'INSTRUCAO', + 'INICIAL', + 'JULGAMENTO', + 'MEDIACAO' +); + +-- Alterar a tabela de processos existente +ALTER TABLE "processos" + ADD COLUMN IF NOT EXISTS "natureza" "NaturezaProcesso", + ADD COLUMN IF NOT EXISTS "tipoParteCliente" "TipoParte", + ADD COLUMN IF NOT EXISTS "valorCausa" DECIMAL(15,2), + ADD COLUMN IF NOT EXISTS "orgaoJulgador" VARCHAR(100), + ADD COLUMN IF NOT EXISTS "orgaoOrigem" VARCHAR(100), + ADD COLUMN IF NOT EXISTS "nomeContraparte" VARCHAR(100); + +-- Criar nova tabela para diligências +CREATE TABLE IF NOT EXISTS "diligencias" ( + "id" UUID PRIMARY KEY DEFAULT gen_random_uuid(), + "processoId" UUID NOT NULL, + "tipo" "TipoDiligencia" NOT NULL, + "descricao" TEXT NOT NULL, + "dataLimite" TIMESTAMP NOT NULL, + "status" VARCHAR(20) DEFAULT 'PENDENTE', + "responsavel" VARCHAR(100), + "observacoes" TEXT, + "dataCriacao" TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + FOREIGN KEY ("processoId") REFERENCES "processos"("id") ON DELETE CASCADE +); + +-- Criar nova tabela para audiências +CREATE TABLE IF NOT EXISTS "audiencias" ( + "id" UUID PRIMARY KEY DEFAULT gen_random_uuid(), + "processoId" UUID NOT NULL, + "tipo" "TipoAudiencia" NOT NULL, + "data" TIMESTAMP NOT NULL, + "local" VARCHAR(200) NOT NULL, + "modalidade" VARCHAR(20) DEFAULT 'PRESENCIAL', + "linkVirtual" TEXT, + "observacoes" TEXT, + "status" VARCHAR(20) DEFAULT 'AGENDADA', + "dataCriacao" TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + FOREIGN KEY ("processoId") REFERENCES "processos"("id") ON DELETE CASCADE +); + +-- Criar nova tabela para movimentações +CREATE TABLE IF NOT EXISTS "movimentacoes" ( + "id" UUID PRIMARY KEY DEFAULT gen_random_uuid(), + "processoId" UUID NOT NULL, + "data" TIMESTAMP NOT NULL, + "descricao" TEXT NOT NULL, + "tipo" VARCHAR(50) NOT NULL, + "documento" TEXT, + "dataCriacao" TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + FOREIGN KEY ("processoId") REFERENCES "processos"("id") ON DELETE CASCADE +); + +-- Adicionar índices para melhor performance +CREATE INDEX IF NOT EXISTS "idx_processo_numero" ON "processos"("numero"); +CREATE INDEX IF NOT EXISTS "idx_diligencias_data" ON "diligencias"("dataLimite"); +CREATE INDEX IF NOT EXISTS "idx_audiencias_data" ON "audiencias"("data"); +CREATE INDEX IF NOT EXISTS "idx_movimentacoes_data" ON "movimentacoes"("data"); diff --git a/prisma/migrations/XXXXXXXXXXXXXX_add_rg_estado.sql b/prisma/migrations/XXXXXXXXXXXXXX_add_rg_estado.sql new file mode 100644 index 0000000..e973ef2 --- /dev/null +++ b/prisma/migrations/XXXXXXXXXXXXXX_add_rg_estado.sql @@ -0,0 +1,3 @@ +-- AlterTable +ALTER TABLE "clientes" +ADD COLUMN IF NOT EXISTS "estadoRg" TEXT; diff --git a/prisma/migrations/XXXXXXXXXXXXXX_fix_date_and_rg_fields.sql b/prisma/migrations/XXXXXXXXXXXXXX_fix_date_and_rg_fields.sql new file mode 100644 index 0000000..f3d436e --- /dev/null +++ b/prisma/migrations/XXXXXXXXXXXXXX_fix_date_and_rg_fields.sql @@ -0,0 +1,5 @@ +-- AlterTable +ALTER TABLE "clientes" +ALTER COLUMN "dataNascimento" TYPE DATE, +ALTER COLUMN "orgaoEmissor" TYPE VARCHAR(10), +ALTER COLUMN "estadoRg" TYPE CHAR(2); diff --git a/prisma/migrations/XXXXXXXXXXXXXX_fix_date_and_rg_fields_safe.sql b/prisma/migrations/XXXXXXXXXXXXXX_fix_date_and_rg_fields_safe.sql new file mode 100644 index 0000000..d3c9ea5 --- /dev/null +++ b/prisma/migrations/XXXXXXXXXXXXXX_fix_date_and_rg_fields_safe.sql @@ -0,0 +1,15 @@ +-- AlterTable +-- Primeiro, atualizar valores existentes para garantir que caibam no novo tipo +UPDATE "clientes" +SET "orgaoEmissor" = LEFT("orgaoEmissor", 10) +WHERE "orgaoEmissor" IS NOT NULL; + +UPDATE "clientes" +SET "estadoRg" = UPPER(LEFT("estadoRg", 2)) +WHERE "estadoRg" IS NOT NULL; + +-- Agora alterar os tipos das colunas +ALTER TABLE "clientes" +ALTER COLUMN "dataNascimento" TYPE DATE USING "dataNascimento"::DATE, +ALTER COLUMN "orgaoEmissor" TYPE VARCHAR(10), +ALTER COLUMN "estadoRg" TYPE CHAR(2); diff --git a/prisma/migrations/XXXXXXXXXXXXXX_fix_rg_fields.sql b/prisma/migrations/XXXXXXXXXXXXXX_fix_rg_fields.sql new file mode 100644 index 0000000..bfcb6e5 --- /dev/null +++ b/prisma/migrations/XXXXXXXXXXXXXX_fix_rg_fields.sql @@ -0,0 +1,5 @@ +-- AlterTable +ALTER TABLE "clientes" +ALTER COLUMN "orgaoEmissor" DROP DEFAULT, +ALTER COLUMN "estadoRg" DROP DEFAULT, +ALTER COLUMN "tipoPrevidencia" SET DEFAULT 'NAO_CONTRIBUI'; diff --git a/prisma/migrations/XXXXXXXXXXXXXX_update_processo_fields.sql b/prisma/migrations/XXXXXXXXXXXXXX_update_processo_fields.sql new file mode 100644 index 0000000..d67e4c8 --- /dev/null +++ b/prisma/migrations/XXXXXXXXXXXXXX_update_processo_fields.sql @@ -0,0 +1,19 @@ +-- Remover campos antigos que não são mais necessários +ALTER TABLE "processos" DROP COLUMN IF EXISTS "orgaoJulgadorId"; +ALTER TABLE "processos" DROP COLUMN IF EXISTS "orgaoJulgadorRef"; +ALTER TABLE "processos" DROP COLUMN IF EXISTS "eventoCalendarioId"; +ALTER TABLE "processos" DROP COLUMN IF EXISTS "ultimaConsulta"; + +-- Ajustar campos obrigatórios e tipos +ALTER TABLE "processos" + ALTER COLUMN "natureza" SET NOT NULL, + ALTER COLUMN "tipoParteCliente" SET NOT NULL, + ALTER COLUMN "orgaoJulgador" SET NOT NULL, + ALTER COLUMN "nomeContraparte" SET NOT NULL, + ALTER COLUMN "orgaoJulgador" TYPE VARCHAR(100), + ALTER COLUMN "orgaoOrigem" TYPE VARCHAR(100), + ALTER COLUMN "nomeContraparte" TYPE VARCHAR(100); + +-- Adicionar índices +CREATE INDEX IF NOT EXISTS "idx_processo_numero" ON "processos"("numero"); +CREATE INDEX IF NOT EXISTS "idx_processo_cliente" ON "processos"("clienteId"); diff --git a/prisma/migrations/[timestamp]_add_audiencia_report.sql b/prisma/migrations/[timestamp]_add_audiencia_report.sql new file mode 100644 index 0000000..78f98e0 --- /dev/null +++ b/prisma/migrations/[timestamp]_add_audiencia_report.sql @@ -0,0 +1,28 @@ +-- Fazer backup da tabela audiencias +CREATE TABLE "audiencias_backup" AS SELECT * FROM "audiencias"; + +-- Remover constraint existente +ALTER TABLE "audiencias" DROP CONSTRAINT IF EXISTS "audiencias_processoId_fkey"; + +-- Atualizar colunas +ALTER TABLE "audiencias" +ADD COLUMN IF NOT EXISTS "relatorio" TEXT, +ADD COLUMN IF NOT EXISTS "dataFinalizacao" TIMESTAMP WITH TIME ZONE, +ALTER COLUMN "id" SET DATA TYPE UUID USING (gen_random_uuid()), +ALTER COLUMN "processoId" SET DATA TYPE UUID USING ("processoId"::UUID), +ALTER COLUMN "status" SET DATA TYPE VARCHAR(20); + +-- Recriar foreign key com UUID +ALTER TABLE "audiencias" +ADD CONSTRAINT "audiencias_processoId_fkey" +FOREIGN KEY ("processoId") REFERENCES "processos"("id") ON DELETE CASCADE; + +-- Adicionar check constraint para status +ALTER TABLE "audiencias" +ADD CONSTRAINT "audiencias_status_check" +CHECK (status IN ('AGENDADA', 'REALIZADA', 'CANCELADA', 'REDESIGNADA')); + +-- Atualizar status existentes +UPDATE "audiencias" +SET status = 'AGENDADA' +WHERE status IS NULL OR status NOT IN ('AGENDADA', 'REALIZADA', 'CANCELADA', 'REDESIGNADA'); diff --git a/prisma/migrations/[timestamp]_add_audiencia_report_safe.sql b/prisma/migrations/[timestamp]_add_audiencia_report_safe.sql new file mode 100644 index 0000000..fff0a09 --- /dev/null +++ b/prisma/migrations/[timestamp]_add_audiencia_report_safe.sql @@ -0,0 +1,24 @@ +-- Adicionar colunas novas sem modificar as existentes +ALTER TABLE "audiencias" +ADD COLUMN IF NOT EXISTS "relatorio" TEXT, +ADD COLUMN IF NOT EXISTS "dataFinalizacao" TIMESTAMP WITH TIME ZONE; + +-- Atualizar coluna de status mantendo os dados existentes +DO $$ +BEGIN + -- Verificar se a constraint já existe antes de tentar remover + IF EXISTS (SELECT 1 FROM information_schema.constraint_column_usage WHERE constraint_name = 'audiencias_status_check') THEN + ALTER TABLE "audiencias" DROP CONSTRAINT "audiencias_status_check"; + END IF; +END $$; + +-- Adicionar nova constraint de status +ALTER TABLE "audiencias" +ADD CONSTRAINT "audiencias_status_check" +CHECK (status IN ('AGENDADA', 'REALIZADA', 'CANCELADA', 'REDESIGNADA')); + +-- Atualizar valores existentes para o novo formato +UPDATE "audiencias" +SET status = 'AGENDADA' +WHERE status NOT IN ('AGENDADA', 'REALIZADA', 'CANCELADA', 'REDESIGNADA') + OR status IS NULL; diff --git a/prisma/migrations/[timestamp]_add_datajud_field.sql b/prisma/migrations/[timestamp]_add_datajud_field.sql new file mode 100644 index 0000000..518c21d --- /dev/null +++ b/prisma/migrations/[timestamp]_add_datajud_field.sql @@ -0,0 +1,5 @@ +-- Adicionar coluna dadosDatajud +ALTER TABLE "processos" ADD COLUMN "dadosDatajud" JSONB; + +-- Criar índice GIN para busca em JSON +CREATE INDEX "idx_processos_datajud" ON "processos" USING gin("dadosDatajud"); diff --git a/prisma/migrations/[timestamp]_add_datajud_update.sql b/prisma/migrations/[timestamp]_add_datajud_update.sql new file mode 100644 index 0000000..18b7f12 --- /dev/null +++ b/prisma/migrations/[timestamp]_add_datajud_update.sql @@ -0,0 +1,12 @@ +-- Adicionar novas colunas se não existirem +ALTER TABLE "processos" +ADD COLUMN IF NOT EXISTS "dataAjuizamento" TIMESTAMP, +ADD COLUMN IF NOT EXISTS "classeProcessual" VARCHAR(255), +ADD COLUMN IF NOT EXISTS "assuntos" TEXT[], +ADD COLUMN IF NOT EXISTS "nivelSigilo" INTEGER, +ADD COLUMN IF NOT EXISTS "dadosDatajud" JSONB; + +-- Criar índices sem forçar +CREATE INDEX IF NOT EXISTS "idx_processos_data_ajuizamento" ON "processos"("dataAjuizamento"); +CREATE INDEX IF NOT EXISTS "idx_processos_classe" ON "processos"("classeProcessual"); +CREATE INDEX IF NOT EXISTS "idx_processos_datajud" ON "processos" USING gin("dadosDatajud"); diff --git a/prisma/migrations/[timestamp]_add_documentos_tables.ts b/prisma/migrations/[timestamp]_add_documentos_tables.ts new file mode 100644 index 0000000..c046db7 --- /dev/null +++ b/prisma/migrations/[timestamp]_add_documentos_tables.ts @@ -0,0 +1,52 @@ +import { PrismaClient } from '@prisma/client' +const prisma = new PrismaClient() + +async function main() { + await prisma.$executeRaw` + CREATE TYPE "TipoDocumento" AS ENUM ('PETICAO', 'CONTRATO', 'PROCURACAO', 'DECLARACAO', 'OUTROS'); + + -- Criar tabela de documentos + CREATE TABLE IF NOT EXISTS "documentos" ( + "id" UUID NOT NULL DEFAULT gen_random_uuid(), + "nome" VARCHAR(200) NOT NULL, + "tipo" "TipoDocumento" NOT NULL, + "conteudo" TEXT NOT NULL, + "url" TEXT, + "processoId" UUID REFERENCES "processos"(id), + "atendimentoId" UUID REFERENCES "atendimentos"(id), + "anexoId" UUID UNIQUE REFERENCES "anexos"(id), + "criadoPorId" UUID NOT NULL REFERENCES "usuarios"(id), + "criadoEm" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "atualizadoEm" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "documentos_pkey" PRIMARY KEY ("id") + ); + + -- Criar tabela de modelos de documentos + CREATE TABLE IF NOT EXISTS "documentos_modelos" ( + "id" UUID NOT NULL DEFAULT gen_random_uuid(), + "nome" VARCHAR(200) NOT NULL, + "descricao" TEXT, + "tipo" "TipoDocumento" NOT NULL, + "conteudo" TEXT NOT NULL, + "variaveis" TEXT[] DEFAULT ARRAY[]::TEXT[], + "criadoEm" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "atualizadoEm" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "documentos_modelos_pkey" PRIMARY KEY ("id") + ); + + -- Criar índices + CREATE INDEX "documentos_processoId_idx" ON "documentos"("processoId"); + CREATE INDEX "documentos_atendimentoId_idx" ON "documentos"("atendimentoId"); + `; +} + +main() + .catch(e => { + console.error(e); + process.exit(1); + }) + .finally(async () => { + await prisma.$disconnect(); + }); diff --git a/prisma/migrations/[timestamp]_add_pdf_config.ts b/prisma/migrations/[timestamp]_add_pdf_config.ts new file mode 100644 index 0000000..e69de29 diff --git a/prisma/migrations/[timestamp]_add_process_datajud_fields.sql b/prisma/migrations/[timestamp]_add_process_datajud_fields.sql new file mode 100644 index 0000000..f08a727 --- /dev/null +++ b/prisma/migrations/[timestamp]_add_process_datajud_fields.sql @@ -0,0 +1,9 @@ +ALTER TABLE "processos" +ADD COLUMN IF NOT EXISTS "dataAjuizamento" TIMESTAMP, +ADD COLUMN IF NOT EXISTS "classeProcessual" VARCHAR(255), +ADD COLUMN IF NOT EXISTS "assuntos" TEXT[], +ADD COLUMN IF NOT EXISTS "nivelSigilo" INTEGER; + +-- Índices para melhorar performance +CREATE INDEX IF NOT EXISTS "idx_processos_data_ajuizamento" ON "processos"("dataAjuizamento"); +CREATE INDEX IF NOT EXISTS "idx_processos_classe" ON "processos"("classeProcessual"); diff --git a/prisma/migrations/[timestamp]_add_template_config.ts b/prisma/migrations/[timestamp]_add_template_config.ts new file mode 100644 index 0000000..23e24a8 --- /dev/null +++ b/prisma/migrations/[timestamp]_add_template_config.ts @@ -0,0 +1,19 @@ +import { PrismaClient } from '@prisma/client' +const prisma = new PrismaClient() + +async function main() { + await prisma.$executeRaw` + ALTER TABLE "configuracao_documento" + ADD COLUMN "templatePadrao" TEXT, + ADD COLUMN "margensTemplate" JSONB DEFAULT '{"top": 35, "bottom": 29, "left": 25, "right": 25}'::jsonb; + `; +} + +main() + .catch(e => { + console.error(e); + process.exit(1); + }) + .finally(async () => { + await prisma.$disconnect(); + }); diff --git a/prisma/migrations/[timestamp]_add_timbrado_config.ts b/prisma/migrations/[timestamp]_add_timbrado_config.ts new file mode 100644 index 0000000..2a93534 --- /dev/null +++ b/prisma/migrations/[timestamp]_add_timbrado_config.ts @@ -0,0 +1,22 @@ +import { PrismaClient } from '@prisma/client' +const prisma = new PrismaClient() + +async function main() { + await prisma.$executeRaw` + ALTER TABLE "configuracao_documento" + ADD COLUMN "timbradoUrl" TEXT, + ADD COLUMN "timbradoMarginTop" INTEGER DEFAULT 100, + ADD COLUMN "timbradoMarginBottom" INTEGER DEFAULT 50, + ADD COLUMN "timbradoMarginLeft" INTEGER DEFAULT 50, + ADD COLUMN "timbradoMarginRight" INTEGER DEFAULT 50; + `; +} + +main() + .catch(e => { + console.error(e); + process.exit(1); + }) + .finally(async () => { + await prisma.$disconnect(); + }); diff --git a/prisma/migrations/[timestamp]_add_tribunal_fields.sql b/prisma/migrations/[timestamp]_add_tribunal_fields.sql new file mode 100644 index 0000000..b407f57 --- /dev/null +++ b/prisma/migrations/[timestamp]_add_tribunal_fields.sql @@ -0,0 +1,41 @@ +-- Passo 1: Adicionar colunas como nullable +ALTER TABLE "processos" +ADD COLUMN "tribunalUF" VARCHAR(20) NULL, +ADD COLUMN "tribunal" VARCHAR(50) NULL, +ADD COLUMN "numeroOriginal" VARCHAR(50) NULL; + +-- Passo 2: Preencher dados existentes +UPDATE "processos" +SET + "tribunalUF" = + CASE + WHEN "orgaoJulgador" LIKE '%TJTO%' THEN 'TO' + WHEN "orgaoJulgador" LIKE '%TRF1%' THEN 'DF' + ELSE 'TO' -- Default para processos existentes + END, + "tribunal" = + CASE + WHEN "orgaoJulgador" LIKE '%TJTO%' THEN 'TJTO' + WHEN "orgaoJulgador" LIKE '%TRF1%' THEN 'TRF1' + ELSE 'TJTO' -- Default para processos existentes + END; + +-- Passo 3: Verificar se não há valores nulos +DO $$ +BEGIN + IF EXISTS ( + SELECT 1 FROM "processos" + WHERE "tribunalUF" IS NULL OR "tribunal" IS NULL + ) THEN + RAISE EXCEPTION 'Ainda existem registros com valores nulos'; + END IF; +END $$; + +-- Passo 4: Tornar colunas NOT NULL +ALTER TABLE "processos" +ALTER COLUMN "tribunalUF" SET NOT NULL, +ALTER COLUMN "tribunal" SET NOT NULL; + +-- Passo 5: Criar índices +CREATE INDEX IF NOT EXISTS "idx_processos_tribunal" ON "processos"("tribunal"); +CREATE INDEX IF NOT EXISTS "idx_processos_tribunalUF" ON "processos"("tribunalUF"); diff --git a/prisma/migrations/[timestamp]_add_tribunal_fields_safe.sql b/prisma/migrations/[timestamp]_add_tribunal_fields_safe.sql new file mode 100644 index 0000000..485390e --- /dev/null +++ b/prisma/migrations/[timestamp]_add_tribunal_fields_safe.sql @@ -0,0 +1,30 @@ +-- Adicionar novas colunas sem remover as antigas +ALTER TABLE "processos" +ADD COLUMN IF NOT EXISTS "tribunalUF" VARCHAR(20), +ADD COLUMN IF NOT EXISTS "tribunal" VARCHAR(50), +ADD COLUMN IF NOT EXISTS "numeroOriginal" VARCHAR(50); + +-- Migrar dados existentes mantendo os dados antigos +UPDATE "processos" +SET + "tribunalUF" = + CASE + WHEN "orgaoJulgador" LIKE '%TJTO%' THEN 'TO' + WHEN "orgaoJulgador" LIKE '%TRF1%' THEN 'DF' + ELSE 'TO' + END +WHERE "tribunalUF" IS NULL; + +UPDATE "processos" +SET + "tribunal" = + CASE + WHEN "orgaoJulgador" LIKE '%TJTO%' THEN 'TJTO' + WHEN "orgaoJulgador" LIKE '%TRF1%' THEN 'TRF1' + ELSE 'TJTO' + END +WHERE "tribunal" IS NULL; + +-- Criar índices sem interferir nos existentes +CREATE INDEX IF NOT EXISTS "idx_processos_tribunal" ON "processos"("tribunal"); +CREATE INDEX IF NOT EXISTS "idx_processos_tribunalUF" ON "processos"("tribunalUF"); diff --git a/prisma/migrations/[timestamp]_add_valor_pago_parcela.sql b/prisma/migrations/[timestamp]_add_valor_pago_parcela.sql new file mode 100644 index 0000000..32f6c3a --- /dev/null +++ b/prisma/migrations/[timestamp]_add_valor_pago_parcela.sql @@ -0,0 +1,23 @@ +-- Criar tipo temporário com todos os valores +CREATE TYPE "StatusPagamento_new" AS ENUM ('PENDENTE', 'PARCIALMENTE_PAGO', 'PAGO', 'VENCIDO', 'CANCELADO'); + +-- Converter a coluna antiga para a nova +ALTER TABLE "parcelas_honorario" + ALTER COLUMN status TYPE "StatusPagamento_new" + USING status::text::"StatusPagamento_new"; + +-- Remover o tipo antigo +DROP TYPE "StatusPagamento"; + +-- Renomear o novo tipo para o nome original +ALTER TYPE "StatusPagamento_new" RENAME TO "StatusPagamento"; + +-- Adicionar a coluna valorPago se ela não existir +DO $$ +BEGIN + IF NOT EXISTS (SELECT 1 FROM information_schema.columns + WHERE table_name = 'parcelas_honorario' + AND column_name = 'valorpago') THEN + ALTER TABLE "parcelas_honorario" ADD COLUMN "valorPago" DECIMAL(10,2); + END IF; +END $$; diff --git a/prisma/migrations/[timestamp]_create_anexos.sql b/prisma/migrations/[timestamp]_create_anexos.sql new file mode 100644 index 0000000..c65108e --- /dev/null +++ b/prisma/migrations/[timestamp]_create_anexos.sql @@ -0,0 +1,23 @@ +CREATE TABLE IF NOT EXISTS "Anexo" ( + "id" UUID NOT NULL DEFAULT gen_random_uuid(), + "nome" TEXT NOT NULL, + "url" TEXT NOT NULL, + "tipo" TEXT NOT NULL, + "tamanho" INTEGER NOT NULL, + "atendimentoId" UUID, + "tarefaId" UUID, + "criadoEm" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "Anexo_pkey" PRIMARY KEY ("id") +); + +-- Criar índices +CREATE INDEX IF NOT EXISTS "Anexo_atendimentoId_idx" ON "Anexo"("atendimentoId"); +CREATE INDEX IF NOT EXISTS "Anexo_tarefaId_idx" ON "Anexo"("tarefaId"); + +-- Adicionar foreign keys +ALTER TABLE "Anexo" ADD CONSTRAINT "Anexo_atendimentoId_fkey" + FOREIGN KEY ("atendimentoId") REFERENCES "Atendimento"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +ALTER TABLE "Anexo" ADD CONSTRAINT "Anexo_tarefaId_fkey" + FOREIGN KEY ("tarefaId") REFERENCES "Tarefa"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/prisma/migrations/[timestamp]_create_configuracao_documento.ts b/prisma/migrations/[timestamp]_create_configuracao_documento.ts new file mode 100644 index 0000000..e0bb2cb --- /dev/null +++ b/prisma/migrations/[timestamp]_create_configuracao_documento.ts @@ -0,0 +1,34 @@ +import { PrismaClient } from '@prisma/client' +const prisma = new PrismaClient() + +async function main() { + await prisma.$executeRaw` + CREATE TABLE IF NOT EXISTS "configuracao_documento" ( + "id" UUID NOT NULL DEFAULT gen_random_uuid(), + "headerImageUrl" TEXT, + "footerImageUrl" TEXT, + "logoUrl" TEXT, + "criadoEm" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "configuracao_documento_pkey" PRIMARY KEY ("id") + ); + `; + + // Inserir configuração padrão + await prisma.configuracaoDocumento.create({ + data: { + headerImageUrl: '', + footerImageUrl: '', + logoUrl: '' + } + }); +} + +main() + .catch(e => { + console.error(e); + process.exit(1); + }) + .finally(async () => { + await prisma.$disconnect(); + }); diff --git a/prisma/migrations/[timestamp]_fix_audiencia_schema.sql b/prisma/migrations/[timestamp]_fix_audiencia_schema.sql new file mode 100644 index 0000000..61aba6a --- /dev/null +++ b/prisma/migrations/[timestamp]_fix_audiencia_schema.sql @@ -0,0 +1,9 @@ +-- AlterTable +ALTER TABLE "processos" +ADD COLUMN IF NOT EXISTS "statusAtividade" VARCHAR(20) NOT NULL DEFAULT 'ATIVO'; + +-- AlterTable +ALTER TABLE "audiencias" +ADD COLUMN IF NOT EXISTS "relatorio" TEXT, +ADD COLUMN IF NOT EXISTS "dataFinalizacao" TIMESTAMP WITH TIME ZONE, +ALTER COLUMN "status" SET DEFAULT 'AGENDADA'; diff --git a/prisma/migrations/[timestamp]_fix_migrations.sql b/prisma/migrations/[timestamp]_fix_migrations.sql new file mode 100644 index 0000000..da91a3c --- /dev/null +++ b/prisma/migrations/[timestamp]_fix_migrations.sql @@ -0,0 +1,2 @@ +-- Forçar sincronização do estado atual +SELECT 1; diff --git a/prisma/migrations/[timestamp]_fix_processo_id_type.sql b/prisma/migrations/[timestamp]_fix_processo_id_type.sql new file mode 100644 index 0000000..639ee85 --- /dev/null +++ b/prisma/migrations/[timestamp]_fix_processo_id_type.sql @@ -0,0 +1,16 @@ +-- Primeiro, alterar as foreign keys existentes +ALTER TABLE "audiencias" DROP CONSTRAINT IF EXISTS "audiencias_processoId_fkey"; +ALTER TABLE "partes_processo" DROP CONSTRAINT IF EXISTS "fk_partes_processo_processo"; + +-- Converter a coluna id para UUID +ALTER TABLE "processos" +ALTER COLUMN "id" TYPE UUID USING id::UUID; + +-- Recriar as foreign keys +ALTER TABLE "audiencias" +ADD CONSTRAINT "audiencias_processoId_fkey" +FOREIGN KEY ("processoId") REFERENCES "processos"("id") ON DELETE CASCADE; + +ALTER TABLE "partes_processo" +ADD CONSTRAINT "fk_partes_processo_processo" +FOREIGN KEY ("processoId") REFERENCES "processos"("id") ON DELETE CASCADE; diff --git a/prisma/migrations/[timestamp]_init.sql b/prisma/migrations/[timestamp]_init.sql new file mode 100644 index 0000000..4aacdc0 --- /dev/null +++ b/prisma/migrations/[timestamp]_init.sql @@ -0,0 +1,13 @@ +-- Criar as tabelas principais +CREATE TABLE "usuarios" ( + "id" UUID NOT NULL DEFAULT gen_random_uuid(), + "nome" VARCHAR(255) NOT NULL, + "email" VARCHAR(255) NOT NULL UNIQUE, + "senha" VARCHAR(255) NOT NULL, + "cargo" VARCHAR(50) NOT NULL, + "dataCriacao" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "usuarios_pkey" PRIMARY KEY ("id") +); + +-- ... resto da criação das tabelas conforme schema.prisma ... diff --git a/prisma/migrations/[timestamp]_make_tribunal_fields_required.sql b/prisma/migrations/[timestamp]_make_tribunal_fields_required.sql new file mode 100644 index 0000000..1c22115 --- /dev/null +++ b/prisma/migrations/[timestamp]_make_tribunal_fields_required.sql @@ -0,0 +1,15 @@ +-- Verificar se todos os registros têm os valores +DO $$ +BEGIN + IF EXISTS ( + SELECT 1 FROM "processos" + WHERE "tribunalUF" IS NULL OR "tribunal" IS NULL + ) THEN + RAISE EXCEPTION 'Ainda existem registros com valores nulos'; + END IF; +END $$; + +-- Se passar da verificação, tornar as colunas NOT NULL +ALTER TABLE "processos" + ALTER COLUMN "tribunalUF" SET NOT NULL, + ALTER COLUMN "tribunal" SET NOT NULL; diff --git a/prisma/migrations/[timestamp]_update_audiencias_safe.sql b/prisma/migrations/[timestamp]_update_audiencias_safe.sql new file mode 100644 index 0000000..6050fe5 --- /dev/null +++ b/prisma/migrations/[timestamp]_update_audiencias_safe.sql @@ -0,0 +1,43 @@ +-- Limpar migrações anteriores +DELETE FROM "_prisma_migrations" +WHERE migration_name LIKE '%add_audiencia_report%'; + +-- Atualizar tabela de audiências de forma segura +DO $$ +BEGIN + -- Adicionar novas colunas se não existirem + BEGIN + ALTER TABLE "audiencias" + ADD COLUMN IF NOT EXISTS "relatorio" TEXT, + ADD COLUMN IF NOT EXISTS "dataFinalizacao" TIMESTAMP WITH TIME ZONE; + EXCEPTION + WHEN duplicate_column THEN + NULL; + END; + + -- Atualizar tipo da coluna status + ALTER TABLE "audiencias" + ALTER COLUMN "status" TYPE VARCHAR(20); + + -- Remover constraint antiga se existir + IF EXISTS ( + SELECT 1 + FROM information_schema.constraint_column_usage + WHERE constraint_name = 'audiencias_status_check' + ) THEN + ALTER TABLE "audiencias" + DROP CONSTRAINT "audiencias_status_check"; + END IF; + + -- Adicionar nova constraint + ALTER TABLE "audiencias" + ADD CONSTRAINT "audiencias_status_check" + CHECK (status IN ('AGENDADA', 'REALIZADA', 'CANCELADA', 'REDESIGNADA')); + + -- Atualizar registros existentes + UPDATE "audiencias" + SET status = 'AGENDADA' + WHERE status NOT IN ('AGENDADA', 'REALIZADA', 'CANCELADA', 'REDESIGNADA') + OR status IS NULL; + +END $$; diff --git a/prisma/migrations/[timestamp]_update_configuracao_documento.ts b/prisma/migrations/[timestamp]_update_configuracao_documento.ts new file mode 100644 index 0000000..f3c0a78 --- /dev/null +++ b/prisma/migrations/[timestamp]_update_configuracao_documento.ts @@ -0,0 +1,22 @@ +import { PrismaClient } from '@prisma/client' +const prisma = new PrismaClient() + +async function main() { + await prisma.$executeRaw` + ALTER TABLE "configuracao_documento" + ADD COLUMN IF NOT EXISTS "timbradoUrl" TEXT, + ADD COLUMN IF NOT EXISTS "timbradoMarginTop" INTEGER DEFAULT 100, + ADD COLUMN IF NOT EXISTS "timbradoMarginBottom" INTEGER DEFAULT 50, + ADD COLUMN IF NOT EXISTS "timbradoMarginLeft" INTEGER DEFAULT 50, + ADD COLUMN IF NOT EXISTS "timbradoMarginRight" INTEGER DEFAULT 50; + `; +} + +main() + .catch(e => { + console.error(e); + process.exit(1); + }) + .finally(async () => { + await prisma.$disconnect(); + }); diff --git a/prisma/migrations/[timestamp]_update_processo_tribunais.sql b/prisma/migrations/[timestamp]_update_processo_tribunais.sql new file mode 100644 index 0000000..842fa1b --- /dev/null +++ b/prisma/migrations/[timestamp]_update_processo_tribunais.sql @@ -0,0 +1,18 @@ +-- Adicionando novas colunas +ALTER TABLE "processos" ADD COLUMN "tribunalUF" VARCHAR(20); +ALTER TABLE "processos" ADD COLUMN "tribunal" VARCHAR(50); +ALTER TABLE "processos" ADD COLUMN "numeroOriginal" VARCHAR(50); + +-- Preenchendo dados existentes (temporário) +UPDATE "processos" SET + "tribunalUF" = 'TO', + "tribunal" = 'TJTO' +WHERE "tribunalUF" IS NULL; + +-- Tornando colunas NOT NULL após migração +ALTER TABLE "processos" ALTER COLUMN "tribunalUF" SET NOT NULL; +ALTER TABLE "processos" ALTER COLUMN "tribunal" SET NOT NULL; + +-- Removendo colunas antigas +ALTER TABLE "processos" DROP COLUMN "orgaoJulgador"; +ALTER TABLE "processos" DROP COLUMN "orgaoOrigem"; diff --git a/prisma/migrations/fix_all_constraints.sql b/prisma/migrations/fix_all_constraints.sql new file mode 100644 index 0000000..5ad5f02 --- /dev/null +++ b/prisma/migrations/fix_all_constraints.sql @@ -0,0 +1,35 @@ +DO $$ +BEGIN + -- 1. Remover constraints existentes se existirem + IF EXISTS (SELECT 1 FROM information_schema.table_constraints WHERE constraint_name = 'audiencias_processoId_fkey') THEN + ALTER TABLE "audiencias" DROP CONSTRAINT "audiencias_processoId_fkey"; + END IF; + + IF EXISTS (SELECT 1 FROM information_schema.table_constraints WHERE constraint_name = 'fk_partes_processo_processo') THEN + ALTER TABLE "partes_processo" DROP CONSTRAINT "fk_partes_processo_processo"; + END IF; + + IF EXISTS (SELECT 1 FROM information_schema.table_constraints WHERE constraint_name = 'movimentacoes_processoId_fkey') THEN + ALTER TABLE "movimentacoes" DROP CONSTRAINT "movimentacoes_processoId_fkey"; + END IF; + + -- 2. Garantir que todas as colunas são UUID + ALTER TABLE "processos" ALTER COLUMN "id" TYPE UUID USING COALESCE("id"::UUID, gen_random_uuid()); + ALTER TABLE "audiencias" ALTER COLUMN "processoId" TYPE UUID USING "processoId"::UUID; + ALTER TABLE "partes_processo" ALTER COLUMN "processoId" TYPE UUID USING "processoId"::UUID; + ALTER TABLE "movimentacoes" ALTER COLUMN "processoId" TYPE UUID USING "processoId"::UUID; + + -- 3. Recriar as foreign keys + ALTER TABLE "audiencias" + ADD CONSTRAINT "audiencias_processoId_fkey" + FOREIGN KEY ("processoId") REFERENCES "processos"("id") ON DELETE CASCADE; + + ALTER TABLE "partes_processo" + ADD CONSTRAINT "fk_partes_processo_processo" + FOREIGN KEY ("processoId") REFERENCES "processos"("id") ON DELETE CASCADE; + + ALTER TABLE "movimentacoes" + ADD CONSTRAINT "movimentacoes_processoId_fkey" + FOREIGN KEY ("processoId") REFERENCES "processos"("id") ON DELETE CASCADE; + +END $$; diff --git a/prisma/migrations/fix_all_uuid_types.sql b/prisma/migrations/fix_all_uuid_types.sql new file mode 100644 index 0000000..a6278e2 --- /dev/null +++ b/prisma/migrations/fix_all_uuid_types.sql @@ -0,0 +1,51 @@ +DO $$ +BEGIN + -- 1. Remover todas as foreign keys primeiro + ALTER TABLE "documentos" DROP CONSTRAINT IF EXISTS "documentos_processoId_fkey"; + ALTER TABLE "audiencias" DROP CONSTRAINT IF EXISTS "audiencias_processoId_fkey"; + ALTER TABLE "partes_processo" DROP CONSTRAINT IF EXISTS "fk_partes_processo_processo"; + ALTER TABLE "movimentacoes" DROP CONSTRAINT IF EXISTS "movimentacoes_processoId_fkey"; + + -- 2. Alterar todos os IDs e chaves estrangeiras para UUID + -- Processos + ALTER TABLE "processos" + ALTER COLUMN "id" TYPE UUID USING COALESCE("id"::UUID, gen_random_uuid()); + + -- Documentos + ALTER TABLE "documentos" + ALTER COLUMN "id" TYPE UUID USING COALESCE("id"::UUID, gen_random_uuid()), + ALTER COLUMN "processoId" TYPE UUID USING "processoId"::UUID; + + -- Audiências + ALTER TABLE "audiencias" + ALTER COLUMN "id" TYPE UUID USING COALESCE("id"::UUID, gen_random_uuid()), + ALTER COLUMN "processoId" TYPE UUID USING "processoId"::UUID; + + -- Partes do Processo + ALTER TABLE "partes_processo" + ALTER COLUMN "id" TYPE UUID USING COALESCE("id"::UUID, gen_random_uuid()), + ALTER COLUMN "processoId" TYPE UUID USING "processoId"::UUID; + + -- Movimentações + ALTER TABLE "movimentacoes" + ALTER COLUMN "id" TYPE UUID USING COALESCE("id"::UUID, gen_random_uuid()), + ALTER COLUMN "processoId" TYPE UUID USING "processoId"::UUID; + + -- 3. Recriar todas as foreign keys + ALTER TABLE "documentos" + ADD CONSTRAINT "documentos_processoId_fkey" + FOREIGN KEY ("processoId") REFERENCES "processos"("id") ON DELETE CASCADE; + + ALTER TABLE "audiencias" + ADD CONSTRAINT "audiencias_processoId_fkey" + FOREIGN KEY ("processoId") REFERENCES "processos"("id") ON DELETE CASCADE; + + ALTER TABLE "partes_processo" + ADD CONSTRAINT "fk_partes_processo_processo" + FOREIGN KEY ("processoId") REFERENCES "processos"("id") ON DELETE CASCADE; + + ALTER TABLE "movimentacoes" + ADD CONSTRAINT "movimentacoes_processoId_fkey" + FOREIGN KEY ("processoId") REFERENCES "processos"("id") ON DELETE CASCADE; + +END $$; diff --git a/prisma/migrations/fix_all_uuids.sql b/prisma/migrations/fix_all_uuids.sql new file mode 100644 index 0000000..8c771bf --- /dev/null +++ b/prisma/migrations/fix_all_uuids.sql @@ -0,0 +1,24 @@ +-- Remove todas as foreign keys primeiro +ALTER TABLE "audiencias" DROP CONSTRAINT IF EXISTS "audiencias_processoId_fkey"; +ALTER TABLE "partes_processo" DROP CONSTRAINT IF EXISTS "fk_partes_processo_processo"; +ALTER TABLE "movimentacoes" DROP CONSTRAINT IF EXISTS "movimentacoes_processoId_fkey"; + +-- Corrige o tipo das colunas de ID +ALTER TABLE "processos" ALTER COLUMN "id" TYPE UUID USING COALESCE("id"::UUID, gen_random_uuid()); +ALTER TABLE "audiencias" ALTER COLUMN "id" TYPE UUID USING COALESCE("id"::UUID, gen_random_uuid()); +ALTER TABLE "audiencias" ALTER COLUMN "processoId" TYPE UUID USING "processoId"::UUID; +ALTER TABLE "partes_processo" ALTER COLUMN "processoId" TYPE UUID USING "processoId"::UUID; +ALTER TABLE "movimentacoes" ALTER COLUMN "processoId" TYPE UUID USING "processoId"::UUID; + +-- Recria as foreign keys +ALTER TABLE "audiencias" +ADD CONSTRAINT "audiencias_processoId_fkey" +FOREIGN KEY ("processoId") REFERENCES "processos"("id") ON DELETE CASCADE; + +ALTER TABLE "partes_processo" +ADD CONSTRAINT "fk_partes_processo_processo" +FOREIGN KEY ("processoId") REFERENCES "processos"("id") ON DELETE CASCADE; + +ALTER TABLE "movimentacoes" +ADD CONSTRAINT "movimentacoes_processoId_fkey" +FOREIGN KEY ("processoId") REFERENCES "processos"("id") ON DELETE CASCADE; diff --git a/prisma/migrations/fix_partes_processo_schema.sql b/prisma/migrations/fix_partes_processo_schema.sql new file mode 100644 index 0000000..dc3a3f3 --- /dev/null +++ b/prisma/migrations/fix_partes_processo_schema.sql @@ -0,0 +1,30 @@ +-- Drop constraints first +ALTER TABLE "partes_processo" +DROP CONSTRAINT IF EXISTS "partes_processo_pkey", +DROP CONSTRAINT IF EXISTS "partes_processo_processoId_fkey", +DROP CONSTRAINT IF EXISTS "partes_processo_clienteId_fkey"; + +-- Fix columns and constraints +ALTER TABLE "partes_processo" +ALTER COLUMN "id" TYPE UUID USING id::UUID, +ALTER COLUMN "processoId" TYPE UUID USING "processoId"::UUID, +ALTER COLUMN "clienteId" TYPE UUID USING "clienteId"::UUID, +ALTER COLUMN "tipo" TYPE VARCHAR(20), +ALTER COLUMN "nome" TYPE VARCHAR(200), +ALTER COLUMN "cpfCnpj" TYPE VARCHAR(18), +ADD PRIMARY KEY ("id"); + +-- Recreate foreign keys +ALTER TABLE "partes_processo" +ADD CONSTRAINT "partes_processo_processoId_fkey" + FOREIGN KEY ("processoId") + REFERENCES "processos"("id") + ON DELETE CASCADE, +ADD CONSTRAINT "partes_processo_clienteId_fkey" + FOREIGN KEY ("clienteId") + REFERENCES "clientes"("id") + ON DELETE SET NULL; + +-- Create indexes +CREATE INDEX IF NOT EXISTS "partes_processo_processoId_idx" ON "partes_processo"("processoId"); +CREATE INDEX IF NOT EXISTS "partes_processo_clienteId_idx" ON "partes_processo"("clienteId"); diff --git a/prisma/migrations/fix_processo_id_generation.sql b/prisma/migrations/fix_processo_id_generation.sql new file mode 100644 index 0000000..f52eb0d --- /dev/null +++ b/prisma/migrations/fix_processo_id_generation.sql @@ -0,0 +1,2 @@ +ALTER TABLE "processos" +ALTER COLUMN "id" SET DEFAULT gen_random_uuid(); diff --git a/prisma/migrations/fix_uuid_types.sql b/prisma/migrations/fix_uuid_types.sql new file mode 100644 index 0000000..2d7f92c --- /dev/null +++ b/prisma/migrations/fix_uuid_types.sql @@ -0,0 +1,44 @@ +-- Garantir que todas as colunas de ID sejam UUID +BEGIN; + +-- Remover constraints existentes para evitar conflitos +ALTER TABLE "audiencias" DROP CONSTRAINT IF EXISTS "audiencias_processoId_fkey"; +ALTER TABLE "partes_processo" DROP CONSTRAINT IF EXISTS "fk_partes_processo_processo"; +ALTER TABLE "diligencias" DROP CONSTRAINT IF EXISTS "diligencias_processoId_fkey"; +ALTER TABLE "movimentacoes" DROP CONSTRAINT IF EXISTS "movimentacoes_processoId_fkey"; + +-- Converter IDs para UUID +ALTER TABLE "processos" +ALTER COLUMN "id" TYPE UUID USING id::UUID; + +ALTER TABLE "audiencias" +ALTER COLUMN "id" TYPE UUID USING id::UUID, +ALTER COLUMN "processoId" TYPE UUID USING "processoId"::UUID; + +ALTER TABLE "partes_processo" +ALTER COLUMN "processoId" TYPE UUID USING "processoId"::UUID; + +ALTER TABLE "diligencias" +ALTER COLUMN "processoId" TYPE UUID USING "processoId"::UUID; + +ALTER TABLE "movimentacoes" +ALTER COLUMN "processoId" TYPE UUID USING "processoId"::UUID; + +-- Recriar as foreign keys +ALTER TABLE "audiencias" +ADD CONSTRAINT "audiencias_processoId_fkey" +FOREIGN KEY ("processoId") REFERENCES "processos"("id") ON DELETE CASCADE; + +ALTER TABLE "partes_processo" +ADD CONSTRAINT "fk_partes_processo_processo" +FOREIGN KEY ("processoId") REFERENCES "processos"("id") ON DELETE CASCADE; + +ALTER TABLE "diligencias" +ADD CONSTRAINT "diligencias_processoId_fkey" +FOREIGN KEY ("processoId") REFERENCES "processos"("id") ON DELETE CASCADE; + +ALTER TABLE "movimentacoes" +ADD CONSTRAINT "movimentacoes_processoId_fkey" +FOREIGN KEY ("processoId") REFERENCES "processos"("id") ON DELETE CASCADE; + +COMMIT; diff --git a/prisma/migrations/migration_lock.toml b/prisma/migrations/migration_lock.toml new file mode 100644 index 0000000..648c57f --- /dev/null +++ b/prisma/migrations/migration_lock.toml @@ -0,0 +1,3 @@ +# Please do not edit this file manually +# It should be added in your version-control system (e.g., Git) +provider = "postgresql" \ No newline at end of file diff --git a/prisma/migrations/seed.ts b/prisma/migrations/seed.ts new file mode 100644 index 0000000..5cddb7e --- /dev/null +++ b/prisma/migrations/seed.ts @@ -0,0 +1,29 @@ +import { PrismaClient } from "@prisma/client"; +import * as bcrypt from "bcryptjs"; + +const prisma = new PrismaClient(); + +async function main() { + const senhaHash = await bcrypt.hash("34641747", 10); + + await prisma.usuario.upsert({ + where: { email: "rodrigo@advx.com" }, + update: {}, + create: { + email: "rodrigo@advx.com", + nome: "Rodrigo", + senha: senhaHash, + cargo: "admin", + dataCriacao: new Date(), + }, + }); +} + +main() + .catch((e) => { + console.error(e); + process.exit(1); + }) + .finally(async () => { + await prisma.$disconnect(); + }); diff --git a/prisma/schema.prisma b/prisma/schema.prisma new file mode 100644 index 0000000..524822d --- /dev/null +++ b/prisma/schema.prisma @@ -0,0 +1,1069 @@ +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") +} + +generator client { + provider = "prisma-client-js" +} + +enum PerfilUsuario { + ADVOGADO_ADMIN + ADVOGADO + ASSISTENTE + ESTAGIARIO +} + +model Usuario { + id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid + nome String @db.VarChar(100) + email String @unique @db.VarChar(100) + senha String @db.VarChar(100) + perfil PerfilUsuario @default(ADVOGADO) + cpf String? @db.VarChar(14) + rg String? @db.VarChar(20) + oab String? @db.VarChar(20) + oabUF String? @db.VarChar(2) + telefone String? @db.VarChar(15) + endereco String? @db.VarChar(200) + numero String? @db.VarChar(10) + complemento String? @db.VarChar(100) + bairro String? @db.VarChar(100) + cidade String? @db.VarChar(100) + estado String? @db.VarChar(2) + cep String? @db.VarChar(9) + ativo Boolean @default(true) + dataCriacao DateTime @default(now()) + atendimentos Atendimento[] + agendamentos AgendamentoAtendimento[] + + // Adicionar estas relações + tarefasResponsavel Tarefa[] @relation("tarefasResponsavel") + tarefasCriadas Tarefa[] @relation("tarefasCriadas") + comentarios Comentario[] + documentos Documento[] + + // Adicionar relações para cálculos judiciais + calculos CalculoJudicial[] + historicoCalculos HistoricoCalculo[] + exportacoes ExportacaoCalculo[] + + // Adicionar relação para cálculos de pensão alimentícia + calculosPensaoAlimenticia CalculoPensaoAlimenticia[] + + @@map("usuarios") +} + +model Cliente { + id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid + nome String @db.VarChar(100) + email String @db.VarChar(100) + cpfCnpj String @unique @db.VarChar(18) + rg String? @db.VarChar(20) + orgaoEmissor String? @db.VarChar(10) + estadoRg String? @db.Char(2) + usaDNI Boolean @default(false) + possuiFilhos Boolean @default(false) + telefone String @db.VarChar(20) + instagram String? @db.VarChar(50) + dataNascimento DateTime? @db.Date + + // Endereço + cep String @db.VarChar(9) + endereco String @db.VarChar(150) + numero String @db.VarChar(10) + complemento String? @db.VarChar(50) + bairro String @db.VarChar(100) + cidade String @db.VarChar(100) + estado String @db.Char(2) + + // Informações Pessoais + estadoCivil String? @db.VarChar(20) + profissao String? @db.VarChar(100) + + // Informações Financeiras + vinculoEmpregaticio String? @db.VarChar(50) + renda Decimal? @db.Decimal(10, 2) + declaraIR Boolean @default(false) + tipoPrevidencia String? @default("NAO_CONTRIBUI") @db.VarChar(20) + contribuiPrevidencia Boolean @default(false) + + // Filiação + nomePai String? @db.VarChar(100) + nomeMae String? @db.VarChar(100) + conjugeNome String? @db.VarChar(100) + conjugeCpf String? @db.VarChar(14) + + processos Processo[] + processosAdministrativos ProcessoAdministrativo[] + filhos Filho[] + partesProcesso ParteProcesso[] + dataCriacao DateTime @default(now()) + atendimentos Atendimento[] + agendamentos AgendamentoAtendimento[] + tarefas Tarefa[] + + // Adicionar relação para cálculos judiciais + calculos CalculoJudicial[] + + // Adicionar relação para cálculos de pensão alimentícia + calculosPensaoAlimenticia CalculoPensaoAlimenticia[] + + @@map("clientes") +} + +model Filho { + id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid + nome String + dataNascimento DateTime + clienteId String @db.Uuid + cliente Cliente @relation(fields: [clienteId], references: [id]) + + @@map("filhos") +} + +enum NaturezaProcesso { + CIVEL + CRIMINAL + PREVIDENCIARIO + TRABALHISTA + FAMILIA + TRIBUTARIO + ADMINISTRATIVO +} + +enum TipoParte { + AUTOR + REU +} + +enum StatusProcesso { + INICIAL + EM_ANDAMENTO + SUSPENSO + RECURSO + CONCLUSO + ARQUIVADO +} + +enum TipoDiligencia { + CITACAO + INTIMACAO + NOTIFICACAO + PERICIA + OFICIAL_JUSTICA + CARTA_PRECATORIA + OUTROS +} + +enum TipoAudiencia { + CONCILIACAO + INSTRUCAO + INICIAL + JULGAMENTO + MEDIACAO +} + +enum StatusAtividade { + ATIVO + BAIXADO + SUSPENSO +} + +enum TipoParticipacao { + AUTOR + REU + TERCEIRO_INTERESSADO +} + +model ParteProcesso { + id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid + processoId String @db.Uuid + clienteId String? @db.Uuid + tipo String @db.VarChar(20) + nome String @db.VarChar(200) + cpfCnpj String? @db.VarChar(18) + principal Boolean @default(false) + observacoes String? + dataCriacao DateTime @default(now()) @db.Timestamp() + + processo Processo @relation(fields: [processoId], references: [id], onDelete: Cascade) + cliente Cliente? @relation(fields: [clienteId], references: [id]) + + @@index([processoId]) + @@index([clienteId]) +} + +model Processo { + id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid + numero String @unique + natureza String + valorCausa Decimal? @db.Decimal(15, 2) + + // Campos novos + tribunalUF String? @db.VarChar(20) + tribunal String? @db.VarChar(50) + numeroOriginal String? @db.VarChar(50) + + // Manter campos antigos + orgaoJulgador String @db.VarChar(100) + orgaoOrigem String? @db.VarChar(100) + + nomeContraparte String @db.VarChar(100) + status String @default("INICIAL") @db.VarChar(20) + statusAtividade String @default("ATIVO") @db.VarChar(20) + dataCriacao DateTime @default(now()) @db.Timestamp() + dataAtualizacao DateTime @updatedAt @db.Timestamp() + clienteId String @db.Uuid + tipoParteCliente String @db.VarChar(20) + dadosDatajud Json? + dataAjuizamento DateTime? + classeProcessual String? + assuntos String[] + nivelSigilo Int? + + // Relações + cliente Cliente @relation(fields: [clienteId], references: [id]) + partes ParteProcesso[] + audiencias Audiencia[] + diligencias Diligencia[] + movimentacoes Movimentacao[] + documentos Documento[] + custas CustaProcessual[] + honorarios Honorario[] + movimentacoesTribunal MovimentacaoTribunal[] + orgaoJulgadorRef OrgaoJulgador? @relation(fields: [orgaoJulgadorId], references: [id]) + orgaoJulgadorId String? @db.Uuid + atendimentos Atendimento[] + tarefas Tarefa[] + + // Adicionar relação para cálculos judiciais + calculos CalculoJudicial[] + + // Adicionar relação para cálculos de pensão alimentícia + calculosPensaoAlimenticia CalculoPensaoAlimenticia[] + + resultado ResultadoProcesso @default(NAO_JULGADO) + + @@index([clienteId]) + @@index([orgaoJulgadorId]) + @@index([tribunal]) + @@index([tribunalUF]) +} + +enum StatusProcessoAdministrativo { + INICIAL + EM_ANALISE + EM_RECURSO + FINALIZADO + ARQUIVADO +} + +model ProcessoAdministrativo { + id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid + numero String @unique + descricao String @db.Text + orgao String @db.VarChar(200) + clienteId String @db.Uuid + tipoParteCliente TipoParte + valorPretensao Decimal? @db.Decimal(15, 2) + status StatusProcessoAdministrativo @default(INICIAL) + resultado String? @db.VarChar(100) + observacoes String? @db.Text + dataCriacao DateTime @default(now()) + dataAtualizacao DateTime @updatedAt + + // Relações + cliente Cliente @relation(fields: [clienteId], references: [id]) + movimentacoes MovimentacaoAdministrativa[] + documentos Documento[] + custas CustaAdministrativa[] + + @@index([clienteId]) + @@map("processos_administrativos") +} + +model MovimentacaoAdministrativa { + id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid + processoId String @db.Uuid + data DateTime + descricao String @db.Text + tipoMovimentacao String @db.VarChar(100) + numero String? @db.VarChar(100) + documentos String[] + observacoes String? @db.Text + dataCriacao DateTime @default(now()) + + processo ProcessoAdministrativo @relation(fields: [processoId], references: [id], onDelete: Cascade) + + @@index([processoId]) + @@map("movimentacoes_administrativas") +} + +model Audiencia { + id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid + processoId String @db.Uuid + tipo String @db.VarChar(50) + data DateTime @db.Timestamp() + local String @db.VarChar(200) + modalidade String @default("PRESENCIAL") @db.VarChar(20) + status String @default("AGENDADA") @db.VarChar(20) + linkVirtual String? @db.Text + observacoes String? @db.Text + dataCriacao DateTime @default(now()) @db.Timestamp() + processo Processo @relation(fields: [processoId], references: [id], onDelete: Cascade) + + @@index([processoId]) +} + +model Diligencia { + id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid + processoId String @db.Uuid + tipo String @db.VarChar(50) + descricao String @db.Text + dataLimite DateTime @db.Timestamp() + status String @default("PENDENTE") @db.VarChar(20) + responsavel String? @db.VarChar(100) + observacoes String? @db.Text + dataCriacao DateTime @default(now()) @db.Timestamp() + + processo Processo @relation(fields: [processoId], references: [id], onDelete: Cascade) + + @@index([processoId]) +} + +model Movimentacao { + id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid + processoId String @db.Uuid + data DateTime @db.Timestamp() + descricao String @db.Text + tipo String @db.VarChar(50) + documento String? @db.Text + dataCriacao DateTime @default(now()) @db.Timestamp() + + processo Processo @relation(fields: [processoId], references: [id], onDelete: Cascade) + + @@index([processoId]) +} + +// Manter e atualizar este modelo Documento mais completo +model Documento { + id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid + nome String @db.VarChar(200) + tipo TipoDocumento + conteudo String @db.Text + url String? @db.Text // Tornar opcional pois nem todo documento terá URL + processoId String? @db.Uuid + processo Processo? @relation(fields: [processoId], references: [id]) + processoAdministrativoId String? @db.Uuid // Adicionar este campo + processoAdministrativo ProcessoAdministrativo? @relation(fields: [processoAdministrativoId], references: [id]) // Adicionar esta relação + atendimentoId String? @db.Uuid + atendimento Atendimento? @relation(fields: [atendimentoId], references: [id]) + anexoId String? @unique @db.Uuid // Adicionar @unique aqui + anexo Anexo? @relation(fields: [anexoId], references: [id]) + criadoPorId String @db.Uuid + criadoPor Usuario @relation(fields: [criadoPorId], references: [id]) + criadoEm DateTime @default(now()) + atualizadoEm DateTime @updatedAt + protocolo String? @db.VarChar(20) // Renomeado de atendimentoProtocolo + + @@index([processoId]) + @@index([atendimentoId]) + @@index([protocolo]) + @@index([processoAdministrativoId]) // Adicionar este índice + @@map("documentos") +} + +// Custas e Honorários +enum TipoCustaProcessual { + INICIAL // Custas iniciais do processo + RECURSO // Custas recursais + PERICIA // Honorários periciais + OFICIAL_JUSTICA // Diligência de oficial + CARTA_PRECATORIA // Custas de carta precatória + DEPOSITO_JUDICIAL // Depósito judicial + CERTIDAO // Certidões diversas + DIGITALIZACAO // Serviço de digitalização + CONDUTOR // Despesas com condutor + CORREIOS // Despesas postais + CARTORIO // Custas cartoriais + OUTROS // Outras despesas +} + +enum StatusPagamento { + PENDENTE + PARCIALMENTE_PAGO // Novo status + PAGO + VENCIDO + CANCELADO +} + +enum FormaPagamento { + VISTA + PARCELADO + ENTRADA_MAIS_PARCELAS + PERCENTUAL_CAUSA + PERCENTUAL_EXITO + PERCENTUAL_CAUSA_COM_ENTRADA // Novo tipo +} + +model CustaProcessual { + id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid + processoId String @db.Uuid + processo Processo @relation(fields: [processoId], references: [id]) + tipo TipoCustaProcessual + descricao String @db.VarChar(200) + valor Decimal @db.Decimal(10, 2) + percentual Decimal? @db.Decimal(5, 2) // Percentual se aplicável + status StatusPagamento @default(PENDENTE) + vencimento DateTime? + dataPagamento DateTime? + comprovante String? @db.Text // URL do comprovante + observacoes String? @db.Text + dataCriacao DateTime @default(now()) + + // Parcelamento + numeroParcelas Int @default(1) + parcelaAtual Int @default(1) + + @@index([processoId]) + @@map("custas_processuais") +} + +model Honorario { + id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid + processoId String @db.Uuid + processo Processo @relation(fields: [processoId], references: [id]) + + // Valores e forma de pagamento + valorFixo Decimal? @db.Decimal(10, 2) + percentualCausa Decimal? @db.Decimal(5, 2) + percentualExito Decimal? @db.Decimal(5, 2) + valorEntrada Decimal? @db.Decimal(10, 2) + valorTotalCausa Decimal? @db.Decimal(10, 2) + formaPagamento FormaPagamento @default(VISTA) + + // Parcelamento + numeroParcelas Int @default(1) + valorParcela Decimal? @db.Decimal(10, 2) + diaVencimento Int @default(10) + + // Controle + status StatusPagamento @default(PENDENTE) + dataContrato DateTime @default(now()) + dataVencimento DateTime @db.Timestamp() + dataCriacao DateTime @default(now()) @db.Timestamp() + observacoes String? @db.Text + + // Parcelas + parcelas ParcelaHonorario[] + + @@index([processoId]) + @@map("honorarios") +} + +model ParcelaHonorario { + id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid + honorarioId String @db.Uuid + honorario Honorario @relation(fields: [honorarioId], references: [id], onDelete: Cascade) + numeroParcela Int + valor Decimal @db.Decimal(10, 2) + valorPago Decimal? @db.Decimal(10, 2) // Novo campo + vencimento DateTime + dataPagamento DateTime? + status StatusPagamento @default(PENDENTE) + comprovante String? @db.Text + observacoes String? @db.Text + + @@index([honorarioId]) + @@map("parcelas_honorario") +} + +model ModeloDocumento { + id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid + nome String @db.VarChar(100) + tipo String @db.VarChar(50) + conteudo String @db.Text + variaveis Json? // Mantido apenas um campo variaveis como Json + cabecalho Boolean @default(true) + rodape Boolean @default(true) + assinatura Boolean @default(true) + dataCriacao DateTime @default(now()) + + @@map("modelos_documentos") +} + +// Novo modelo para configurações de template +model ConfiguracaoDocumento { + id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid + timbradoUrl String? + timbradoMarginTop Int? @default(100) + timbradoMarginBottom Int? @default(50) + timbradoMarginLeft Int? @default(50) + timbradoMarginRight Int? @default(50) + templatePadrao String? + margensTemplate Json? @default("{\"top\":35,\"bottom\":29,\"left\":25,\"right\":25}") + criadoEm DateTime @default(now()) + + @@index([criadoEm]) + // Adicionar configuração global única + @@map("configuracao_documento") +} + +// Controle de Prazos e Alertas +model Alerta { + id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid + usuarioId String @db.Uuid + tipo String @db.VarChar(50) + mensagem String @db.Text + lido Boolean @default(false) + dataAlerta DateTime + dataCriacao DateTime @default(now()) + + @@map("alertas") +} + +// Integrações com Tribunais +model MovimentacaoTribunal { + id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid + processoId String @db.Uuid + processo Processo @relation(fields: [processoId], references: [id]) + tribunal String @db.VarChar(50) + data DateTime + descricao String + dataCriacao DateTime @default(now()) + + @@index([processoId]) +} + +// Novo modelo para órgãos julgadores +model OrgaoJulgador { + id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid + nome String @unique @db.VarChar(200) + processos Processo[] + dataCriacao DateTime @default(now()) + + @@map("orgaos_julgadores") +} + +enum TipoAtendimento { + INICIAL + RETORNO + ENCAMINHAMENTO + ORIENTACAO + ACORDO + OUTROS +} + +model Atendimento { + id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid + protocolo String @unique + clienteId String @db.Uuid + processoId String? @db.Uuid + tipo TipoAtendimento @default(INICIAL) + titulo String @db.VarChar(200) + conteudo String @db.Text + dataAtendimento DateTime @default(now()) + dataCriacao DateTime @default(now()) + usuarioId String @db.Uuid + + // Novas relações para atendimentos relacionados + atendimentoInicialId String? @db.Uuid + atendimentoInicial Atendimento? @relation("AtendimentosRelacionados", fields: [atendimentoInicialId], references: [id]) + atendimentosRelacionados Atendimento[] @relation("AtendimentosRelacionados") + + // Relações existentes + cliente Cliente @relation(fields: [clienteId], references: [id]) + processo Processo? @relation(fields: [processoId], references: [id]) + usuario Usuario @relation(fields: [usuarioId], references: [id]) + anexos Anexo[] // Adicionar esta linha para criar a relação bidirecional + agendamento AgendamentoAtendimento[] // Adicionar esta linha + documentos Documento[] // Adicionar esta linha + status String? @default("ATIVO") @db.VarChar(20) + justificativaCancelamento String? @db.Text + dataAtualizacao DateTime? @default(now()) @updatedAt + + @@index([clienteId]) + @@index([processoId]) + @@index([protocolo]) + @@index([atendimentoInicialId]) + @@map("atendimentos") +} + +model Anexo { + id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid + nome String + url String + tipo String + tamanho Int + atendimento Atendimento? @relation(fields: [atendimentoId], references: [id]) + atendimentoId String? @db.Uuid + tarefa Tarefa? @relation(fields: [tarefaId], references: [id]) + tarefaId String? @db.Uuid + criadoEm DateTime @default(now()) + documento Documento? // Adicionar esta linha + + @@index([atendimentoId]) + @@index([tarefaId]) +} + +enum StatusAgendamento { + AGENDADO + CONFIRMADO + CANCELADO + REALIZADO + NAO_COMPARECEU +} + +model AgendamentoAtendimento { + id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid + clienteId String @db.Uuid + usuarioId String @db.Uuid + data DateTime @db.Timestamp() + observacoes String? @db.Text + status StatusAgendamento @default(AGENDADO) + criadoEm DateTime @default(now()) + atualizadoEm DateTime @updatedAt + atendimentoId String? @db.Uuid // ID do atendimento quando realizado + + cliente Cliente @relation(fields: [clienteId], references: [id]) + usuario Usuario @relation(fields: [usuarioId], references: [id]) + atendimento Atendimento? @relation(fields: [atendimentoId], references: [id]) + + @@map("agendamentos_atendimento") +} + +model Tarefa { + id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid // Usar mesmo padrão das outras tabelas + titulo String + descricao String? + status StatusTarefa + prioridade PrioridadeTarefa + dataInicio DateTime + dataVencimento DateTime + dataConclusao DateTime? // Adicionar este campo + progresso Int @default(0) + responsavel Usuario @relation("tarefasResponsavel", fields: [responsavelId], references: [id]) + responsavelId String @db.Uuid + criadoPor Usuario @relation("tarefasCriadas", fields: [criadoPorId], references: [id]) + criadoPorId String @db.Uuid + processo Processo? @relation(fields: [processoId], references: [id]) + processoId String? @db.Uuid + cliente Cliente? @relation(fields: [clienteId], references: [id]) + clienteId String? @db.Uuid + subtarefas SubTarefa[] + anexos Anexo[] + comentarios Comentario[] + etiquetas String[] + criadoEm DateTime @default(now()) + atualizadoEm DateTime @updatedAt + + @@map("tarefas") +} + +model SubTarefa { + id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid + titulo String + concluida Boolean @default(false) + tarefa Tarefa @relation(fields: [tarefaId], references: [id], onDelete: Cascade) + tarefaId String @db.Uuid + + @@map("subtarefas") +} + +model Comentario { + id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid + texto String + criadoPor Usuario @relation(fields: [criadoPorId], references: [id]) + criadoPorId String @db.Uuid + tarefa Tarefa @relation(fields: [tarefaId], references: [id], onDelete: Cascade) + tarefaId String @db.Uuid + criadoEm DateTime @default(now()) + + @@map("comentarios") +} + +enum StatusTarefa { + PENDENTE + EM_ANDAMENTO + CONCLUIDA + CANCELADA +} + +enum PrioridadeTarefa { + BAIXA + MEDIA + ALTA + URGENTE +} + +enum ResultadoProcesso { + NAO_JULGADO + PROCEDENTE + PARCIALMENTE_PROCEDENTE + IMPROCEDENTE + SEM_ANALISE_MERITO +} + +enum TipoDocumento { + PETICAO + CONTRATO + PROCURACAO + DECLARACAO + OUTROS +} + +model DocumentoModelo { + id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid + nome String @db.VarChar(200) + descricao String? @db.Text + tipo TipoDocumento + conteudo String @db.Text + variaveis String[] // Array de placeholders para substituição + criadoEm DateTime @default(now()) + atualizadoEm DateTime @updatedAt + + @@map("documentos_modelos") +} + +enum TipoCustaAdministrativa { + TAXA_ADMINISTRATIVA + RECURSO + DILIGENCIA + CERTIDAO + COPIA + OUTROS +} + +model CustaAdministrativa { + id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid + processoId String @db.Uuid + processo ProcessoAdministrativo @relation(fields: [processoId], references: [id], onDelete: Cascade) + tipo TipoCustaAdministrativa + descricao String @db.VarChar(200) + valor Decimal @db.Decimal(10, 2) + status StatusPagamento @default(PENDENTE) + vencimento DateTime? + dataPagamento DateTime? + comprovante String? @db.Text + observacoes String? @db.Text + dataCriacao DateTime @default(now()) + numeroParcelas Int @default(1) + parcelaAtual Int @default(1) + + @@index([processoId]) + @@map("custas_administrativas") +} + +enum StatusProva { + PENDENTE + PROCESSANDO + CONCLUIDO + ERRO +} + +model Prova { + id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid + fileName String @db.VarChar(255) + mimeType String @db.VarChar(100) + checksumSha256 String @db.VarChar(64) + checksumSha512 String @db.VarChar(128) + checksumMd5 String @db.VarChar(32) + timestamp String @db.Text + metadata Json + reportPath String @db.VarChar(255) + status StatusProva @default(PENDENTE) + error String? @db.Text + dataCriacao DateTime @default(now()) + dataValida DateTime @updatedAt + + @@map("provas") +} + +// Modelos para o sistema de cálculo judicial +model CalculoJudicial { + id String @id @default(uuid()) + titulo String + descricao String? + dataBase DateTime + dataCalculo DateTime @default(now()) + valorBase Decimal @db.Decimal(15, 2) + valorCorrigido Decimal @db.Decimal(15, 2) + valorFinal Decimal @db.Decimal(15, 2) + status String @default("RASCUNHO") // RASCUNHO, FINALIZADO, ARQUIVADO + usuarioId String? @db.Uuid + processoId String? @db.Uuid + clienteId String? @db.Uuid + + // Relações + usuario Usuario? @relation(fields: [usuarioId], references: [id]) + processo Processo? @relation(fields: [processoId], references: [id]) + cliente Cliente? @relation(fields: [clienteId], references: [id]) + + // Componentes do cálculo + correcoes CorrecaoMonetaria[] + juros JuroCalculo[] + multas MultaCalculo[] + honorarios HonorarioCalculo[] + parcelas ParcelaCalculo[] + descontos DescontoCalculo[] + pensaoAlimenticia PensaoAlimenticia? + + // Metadados + configuracoes Json? + historico HistoricoCalculo[] + exportacoes ExportacaoCalculo[] + + criadoEm DateTime @default(now()) + atualizadoEm DateTime @updatedAt + + @@map("calculosjudiciais") +} + +model CorrecaoMonetaria { + id String @id @default(uuid()) + calculoId String + indice String // INPC, IPCA-E, TR, SELIC etc. + dataInicial DateTime + dataFinal DateTime? + valorOriginal Decimal @db.Decimal(15, 2) + valorCorrigido Decimal @db.Decimal(15, 2) + fatorCorrecao Decimal @db.Decimal(15, 6) + + calculo CalculoJudicial @relation(fields: [calculoId], references: [id], onDelete: Cascade) + + criadoEm DateTime @default(now()) + atualizadoEm DateTime @updatedAt + + @@map("correcoes_monetarias") +} + +model JuroCalculo { + id String @id @default(uuid()) + calculoId String + tipo String // SIMPLES, COMPOSTO + taxa Decimal @db.Decimal(8, 6) // Taxa percentual (ex: 0.01 para 1%) + periodicidade String // MENSAL, ANUAL, DIARIO + natureza String // MORATORIO, COMPENSATORIO, CONVENCIONAL, LEGAL + dataInicial DateTime + dataFinal DateTime? + valorBase Decimal @db.Decimal(15, 2) + valorJuros Decimal @db.Decimal(15, 2) + + calculo CalculoJudicial @relation(fields: [calculoId], references: [id], onDelete: Cascade) + + criadoEm DateTime @default(now()) + atualizadoEm DateTime @updatedAt + + @@map("juros_calculos") +} + +model MultaCalculo { + id String @id @default(uuid()) + calculoId String + tipo String // CONTRATUAL, LEGAL + percentual Decimal @db.Decimal(8, 6) + valorBase Decimal @db.Decimal(15, 2) + valorMulta Decimal @db.Decimal(15, 2) + fundamento String? // Artigo de lei ou cláusula contratual + + calculo CalculoJudicial @relation(fields: [calculoId], references: [id], onDelete: Cascade) + + criadoEm DateTime @default(now()) + atualizadoEm DateTime @updatedAt + + @@map("multas_calculos") +} + +model HonorarioCalculo { + id String @id @default(uuid()) + calculoId String + tipo String // CONTRATUAL, SUCUMBENCIAL, EXECUCAO + percentual Decimal @db.Decimal(8, 6) + valorBase Decimal @db.Decimal(15, 2) + valorHonorario Decimal @db.Decimal(15, 2) + fundamento String? // Fundamentação legal ou contratual + + calculo CalculoJudicial @relation(fields: [calculoId], references: [id], onDelete: Cascade) + + criadoEm DateTime @default(now()) + atualizadoEm DateTime @updatedAt + + @@map("honorarios_calculos") +} + +model ParcelaCalculo { + id String @id @default(uuid()) + calculoId String + numero Int + dataVencimento DateTime + valorOriginal Decimal @db.Decimal(15, 2) + valorCorrigido Decimal @db.Decimal(15, 2) + valorJuros Decimal @db.Decimal(15, 2) + valorMulta Decimal @db.Decimal(15, 2) + valorTotal Decimal @db.Decimal(15, 2) + pago Boolean @default(false) + dataPagamento DateTime? + + calculo CalculoJudicial @relation(fields: [calculoId], references: [id], onDelete: Cascade) + + criadoEm DateTime @default(now()) + atualizadoEm DateTime @updatedAt + + @@map("parcelas_calculos") +} + +model DescontoCalculo { + id String @id @default(uuid()) + calculoId String + tipo String // INSS, IRRF, CUSTAS, OUTRO + descricao String? + percentual Decimal? @db.Decimal(8, 6) + valorFixo Decimal? @db.Decimal(15, 2) + valorBase Decimal @db.Decimal(15, 2) + valorDesconto Decimal @db.Decimal(15, 2) + + calculo CalculoJudicial @relation(fields: [calculoId], references: [id], onDelete: Cascade) + + criadoEm DateTime @default(now()) + atualizadoEm DateTime @updatedAt + + @@map("descontos_calculos") +} + +model HistoricoCalculo { + id String @id @default(uuid()) + calculoId String + usuarioId String? @db.Uuid + acao String // CRIACAO, ATUALIZACAO, RECALCULO, EXCLUSAO + descricao String + valorAnterior Decimal? @db.Decimal(15, 2) + valorNovo Decimal? @db.Decimal(15, 2) + metadados Json? + + calculo CalculoJudicial @relation(fields: [calculoId], references: [id], onDelete: Cascade) + usuario Usuario? @relation(fields: [usuarioId], references: [id]) + + criadoEm DateTime @default(now()) + + @@map("historicos_calculos") +} + +model ExportacaoCalculo { + id String @id @default(uuid()) + calculoId String + usuarioId String? @db.Uuid + tipo String // PDF, EXCEL, WORD + arquivo String // Caminho do arquivo gerado + + calculo CalculoJudicial @relation(fields: [calculoId], references: [id], onDelete: Cascade) + usuario Usuario? @relation(fields: [usuarioId], references: [id]) + + criadoEm DateTime @default(now()) + + @@map("exportacoes_calculos") +} + +model IndiceMonetario { + id String @id @default(uuid()) + nome String // INPC, IPCA-E, TR, SELIC etc. + mesReferencia Int // 1-12 (representando os meses do ano) + anoReferencia Int + valor Decimal @db.Decimal(15, 6) + dataPublicacao DateTime? + fonte String? // IBGE, BACEN, etc. + + criadoEm DateTime @default(now()) + atualizadoEm DateTime @updatedAt + + @@unique([nome, mesReferencia, anoReferencia]) + @@map("indices_monetarios") +} + +model PensaoAlimenticia { + id String @id @default(uuid()) + calculoId String @unique + percentualSalarioMinimo Decimal @db.Decimal(8, 6) + multaPactuada Decimal? @db.Decimal(8, 6) + tipoAtualizacao String @default("INPC") // Tipo de índice para atualização monetária + dataInicial DateTime + dataFinal DateTime? + observacoes String? + + calculo CalculoJudicial @relation(fields: [calculoId], references: [id], onDelete: Cascade) + historicoSalarios HistoricoSalarioMinimo[] + parcelasPensao ParcelaPensao[] + + criadoEm DateTime @default(now()) + atualizadoEm DateTime @updatedAt + + @@map("pensoes_alimenticias") +} + +model HistoricoSalarioMinimo { + id String @id @default(uuid()) + pensaoId String + dataVigencia DateTime + valor Decimal @db.Decimal(15, 2) + + pensao PensaoAlimenticia @relation(fields: [pensaoId], references: [id], onDelete: Cascade) + + criadoEm DateTime @default(now()) + atualizadoEm DateTime @updatedAt + + @@map("historico_salario_minimo") +} + +model ParcelaPensao { + id String @id @default(uuid()) + pensaoId String + competencia DateTime // Mês/ano a que se refere a parcela + valorSalarioMinimo Decimal @db.Decimal(15, 2) + percentual Decimal @db.Decimal(8, 6) + valorOriginal Decimal @db.Decimal(15, 2) + valorCorrigido Decimal @db.Decimal(15, 2) + valorJuros Decimal @db.Decimal(15, 2) + valorMulta Decimal @db.Decimal(15, 2) + valorTotal Decimal @db.Decimal(15, 2) + pago Boolean @default(false) + dataPagamento DateTime? + + pensao PensaoAlimenticia @relation(fields: [pensaoId], references: [id], onDelete: Cascade) + + criadoEm DateTime @default(now()) + atualizadoEm DateTime @updatedAt + + @@map("parcelas_pensao") +} + +// Atualize o modelo CalculoPensaoAlimenticia para usar o tipo UUID +model CalculoPensaoAlimenticia { + id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid + titulo String + descricao String? + status String + dataInicial DateTime + dataFinal DateTime? + percentualSalarioMinimo Decimal @db.Decimal(10, 2) + multaPactuada Decimal? @db.Decimal(10, 2) + tipoAtualizacao String + valorCalculado Decimal @db.Decimal(15, 2) + valorMulta Decimal @db.Decimal(15, 2) + valorTotal Decimal @db.Decimal(15, 2) + observacoes String? + + // Relações com tipos UUID compatíveis + processo Processo? @relation(fields: [processoId], references: [id]) + processoId String? @db.Uuid + + cliente Cliente? @relation(fields: [clienteId], references: [id]) + clienteId String? @db.Uuid + + usuario Usuario @relation(fields: [usuarioId], references: [id]) + usuarioId String @db.Uuid + + criadoEm DateTime @default(now()) + atualizadoEm DateTime @updatedAt + + @@map("calculos_pensao_alimenticia") +} diff --git a/prisma/seed.ts b/prisma/seed.ts new file mode 100644 index 0000000..ed50f7a --- /dev/null +++ b/prisma/seed.ts @@ -0,0 +1,46 @@ +import { PrismaClient, PerfilUsuario } from "@prisma/client"; +import bcrypt from "bcryptjs"; + +const prisma = new PrismaClient(); + +async function main() { + // Criar usuário admin inicial + const adminEmail = "admin@advx.com.br"; + + const existingAdmin = await prisma.usuario.findUnique({ + where: { email: adminEmail }, + }); + + if (existingAdmin) { + await prisma.usuario.update({ + where: { email: adminEmail }, + data: { + perfil: PerfilUsuario.ADVOGADO_ADMIN, + nome: "Administrador", + senha: await bcrypt.hash("admin123", 10), + ativo: true, + }, + }); + } else { + await prisma.usuario.create({ + data: { + nome: "Administrador", + email: adminEmail, + senha: await bcrypt.hash("admin123", 10), + perfil: PerfilUsuario.ADVOGADO_ADMIN, + ativo: true, + }, + }); + } + + console.log(`Seed concluído com sucesso!`); +} + +main() + .catch((e) => { + console.error("Erro durante o seed:", e); + process.exit(1); + }) + .finally(async () => { + await prisma.$disconnect(); + }); diff --git a/public/.htaccess b/public/.htaccess new file mode 100644 index 0000000..22480da --- /dev/null +++ b/public/.htaccess @@ -0,0 +1,9 @@ + + RewriteEngine On + RewriteBase / + RewriteRule ^index\.html$ - [L] + RewriteCond %{REQUEST_FILENAME} !-f + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-l + RewriteRule . /index.html [L] + diff --git a/public/tinymce/langs/pt_BR.js b/public/tinymce/langs/pt_BR.js new file mode 100644 index 0000000..d4a67c4 --- /dev/null +++ b/public/tinymce/langs/pt_BR.js @@ -0,0 +1,232 @@ + +tinymce.addI18n('pt_BR',{ + "Cut": "Recortar", + "Heading 5": "Cabe\u00e7alho 5", + "Header 2": "Cabe\u00e7alho 2", + "Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Seu navegador n\u00e3o suporta acesso direto \u00e0 \u00e1rea de transfer\u00eancia. Por favor use os atalhos Ctrl+X - C - V do teclado", + "Heading 4": "Cabe\u00e7alho 4", + "Div": "Div", + "Heading 2": "Cabe\u00e7alho 2", + "Paste": "Colar", + "Close": "Fechar", + "Font Family": "Fonte", + "Pre": "Pre", + "Align right": "Alinhar \u00e0 direita", + "New document": "Novo documento", + "Blockquote": "Aspas", + "Numbered list": "Lista ordenada", + "Heading 1": "Cabe\u00e7alho 1", + "Headings": "Cabe\u00e7alhos", + "Increase indent": "Aumentar recuo", + "Formats": "Formatos", + "Headers": "Cabe\u00e7alhos", + "Select all": "Selecionar tudo", + "Header 3": "Cabe\u00e7alho 3", + "Blocks": "Blocos", + "Undo": "Desfazer", + "Strikethrough": "Riscar", + "Bullet list": "Lista n\u00e3o ordenada", + "Header 1": "Cabe\u00e7alho 1", + "Superscript": "Sobrescrito", + "Clear formatting": "Limpar formata\u00e7\u00e3o", + "Font Sizes": "Tamanho", + "Subscript": "Subscrever", + "Header 6": "Cabe\u00e7alho 6", + "Redo": "Refazer", + "Paragraph": "Par\u00e1grafo", + "Ok": "Ok", + "Bold": "Negrito", + "Code": "C\u00f3digo", + "Italic": "It\u00e1lico", + "Align center": "Centralizar", + "Header 5": "Cabe\u00e7alho 5", + "Heading 6": "Cabe\u00e7alho 6", + "Heading 3": "Cabe\u00e7alho 3", + "Decrease indent": "Diminuir recuo", + "Header 4": "Cabe\u00e7alho 4", + "Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "O comando colar est\u00e1 agora em modo texto plano. O conte\u00fado ser\u00e1 colado como texto plano at\u00e9 voc\u00ea desligar esta op\u00e7\u00e3o.", + "Underline": "Sublinhar", + "Cancel": "Cancelar", + "Justify": "Justificar", + "Inline": "Em linha", + "Copy": "Copiar", + "Align left": "Alinhar \u00e0 esquerda", + "Visual aids": "Ajuda visual", + "Lower Greek": "\u03b1. \u03b2. \u03b3. ...", + "Square": "Quadrado", + "Default": "Padr\u00e3o", + "Lower Alpha": "a. b. c. ...", + "Circle": "C\u00edrculo", + "Disc": "Disco", + "Upper Alpha": "A. B. C. ...", + "Upper Roman": "I. II. III. ...", + "Lower Roman": "i. ii. iii. ...", + "Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Id deve come\u00e7ar com uma letra, seguido apenas por letras, n\u00fameros, tra\u00e7os, pontos, dois pontos ou sublinhados.", + "Name": "Nome", + "Anchor": "\u00c2ncora", + "Id": "Id", + "You have unsaved changes are you sure you want to navigate away?": "Voc\u00ea tem mudan\u00e7as n\u00e3o salvas. Voc\u00ea tem certeza que deseja sair?", + "Restore last draft": "Restaurar \u00faltimo rascunho", + "Special character": "Caracteres especiais", + "Source code": "C\u00f3digo fonte", + "Language": "Idioma", + "Insert\/Edit code sample": "Inserir\/Editar c\u00f3digo de exemplo", + "B": "B", + "R": "R", + "G": "G", + "Color": "Cor", + "Right to left": "Da direita para a esquerda", + "Left to right": "Da esquerda para a direita", + "Emoticons": "Emoticons", + "Robots": "Rob\u00f4s", + "Document properties": "Propriedades do documento", + "Title": "T\u00edtulo", + "Keywords": "Palavras-chave", + "Encoding": "Codifica\u00e7\u00e3o", + "Description": "Descri\u00e7\u00e3o", + "Author": "Autor", + "Fullscreen": "Tela cheia", + "Horizontal line": "Linha horizontal", + "Horizontal space": "Espa\u00e7amento horizontal", + "Insert\/edit image": "Inserir\/editar imagem", + "General": "Geral", + "Advanced": "Avan\u00e7ado", + "Source": "Endere\u00e7o da imagem", + "Border": "Borda", + "Constrain proportions": "Manter propor\u00e7\u00f5es", + "Vertical space": "Espa\u00e7amento vertical", + "Image description": "Inserir descri\u00e7\u00e3o", + "Style": "Estilo", + "Dimensions": "Dimens\u00f5es", + "Insert image": "Inserir imagem", + "Image": "Imagem", + "Zoom in": "Aumentar zoom", + "Contrast": "Contraste", + "Back": "Voltar", + "Gamma": "Gama", + "Flip horizontally": "Virar horizontalmente", + "Resize": "Redimensionar", + "Sharpen": "Aumentar nitidez", + "Zoom out": "Diminuir zoom", + "Image options": "Op\u00e7\u00f5es de Imagem", + "Apply": "Aplicar", + "Brightness": "Brilho", + "Rotate clockwise": "Girar em sentido anti-hor\u00e1rio", + "Rotate counterclockwise": "Girar em sentido hor\u00e1rio", + "Edit image": "Editar imagem", + "Color levels": "N\u00edveis de cor", + "Crop": "Cortar", + "Orientation": "Orienta\u00e7\u00e3o", + "Flip vertically": "Virar verticalmente", + "Invert": "Inverter", + "Date\/time": "data\/hora", + "Insert date\/time": "Inserir data\/hora", + "Remove link": "Remover link", + "Url": "Url", + "Text to display": "Texto para mostrar", + "Anchors": "\u00c2ncoras", + "Insert link": "Inserir link", + "Link": "Link", + "New window": "Nova janela", + "None": "Nenhum", + "The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "A URL que voc\u00ea informou parece ser um link externo. Deseja incluir o prefixo http:\/\/?", + "Paste or type a link": "Cole ou digite um Link", + "Target": "Alvo", + "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?", + "Insert\/edit link": "Inserir\/editar link", + "Insert\/edit video": "Inserir\/editar v\u00eddeo", + "Media": "imagem", + "Alternative source": "Fonte alternativa", + "Paste your embed code below:": "Insira o c\u00f3digo de incorpora\u00e7\u00e3o abaixo:", + "Insert video": "Inserir v\u00eddeo", + "Poster": "Autor", + "Insert\/edit media": "Inserir\/editar imagem", + "Embed": "Incorporar", + "Nonbreaking space": "Espa\u00e7o n\u00e3o separ\u00e1vel", + "Page break": "Quebra de p\u00e1gina", + "Paste as text": "Colar como texto", + "Preview": "Pr\u00e9-visualizar", + "Print": "Imprimir", + "Save": "Salvar", + "Could not find the specified string.": "N\u00e3o foi poss\u00edvel encontrar o termo especificado", + "Replace": "Substituir", + "Next": "Pr\u00f3ximo", + "Whole words": "Palavras inteiras", + "Find and replace": "Localizar e substituir", + "Replace with": "Substituir por", + "Find": "Localizar", + "Replace all": "Substituir tudo", + "Match case": "Diferenciar mai\u00fasculas e min\u00fasculas", + "Prev": "Anterior", + "Spellcheck": "Corretor ortogr\u00e1fico", + "Finish": "Finalizar", + "Ignore all": "Ignorar tudo", + "Ignore": "Ignorar", + "Add to Dictionary": "Adicionar ao Dicion\u00e1rio", + "Insert row before": "Inserir linha antes", + "Rows": "Linhas", + "Height": "Altura", + "Paste row after": "Colar linha depois", + "Alignment": "Alinhamento", + "Border color": "Cor da borda", + "Column group": "Agrupar coluna", + "Row": "Linha", + "Insert column before": "Inserir coluna antes", + "Split cell": "Dividir c\u00e9lula", + "Cell padding": "Espa\u00e7amento interno da c\u00e9lula", + "Cell spacing": "Espa\u00e7amento da c\u00e9lula", + "Row type": "Tipo de linha", + "Insert table": "Inserir tabela", + "Body": "Corpo", + "Caption": "Legenda", + "Footer": "Rodap\u00e9", + "Delete row": "Excluir linha", + "Paste row before": "Colar linha antes", + "Scope": "Escopo", + "Delete table": "Excluir tabela", + "H Align": "Alinhamento H", + "Top": "Superior", + "Header cell": "C\u00e9lula cabe\u00e7alho", + "Column": "Coluna", + "Row group": "Agrupar linha", + "Cell": "C\u00e9lula", + "Middle": "Meio", + "Cell type": "Tipo de c\u00e9lula", + "Copy row": "Copiar linha", + "Row properties": "Propriedades da linha", + "Table properties": "Propriedades da tabela", + "Bottom": "Inferior", + "V Align": "Alinhamento V", + "Header": "Cabe\u00e7alho", + "Right": "Direita", + "Insert column after": "Inserir coluna depois", + "Cols": "Colunas", + "Insert row after": "Inserir linha depois", + "Width": "Largura", + "Cell properties": "Propriedades da c\u00e9lula", + "Left": "Esquerdo", + "Cut row": "Recortar linha", + "Delete column": "Excluir coluna", + "Center": "Centro", + "Merge cells": "Agrupar c\u00e9lulas", + "Insert template": "Inserir modelo", + "Templates": "Modelos", + "Background color": "Cor do fundo", + "Custom...": "Personalizado...", + "Custom color": "Cor personalizada", + "No color": "Nenhuma cor", + "Text color": "Cor do texto", + "Table of Contents": "\u00edndice de Conte\u00fado", + "Show blocks": "Mostrar blocos", + "Show invisible characters": "Exibir caracteres invis\u00edveis", + "Words: {0}": "Palavras: {0}", + "Insert": "Inserir", + "File": "Arquivo", + "Edit": "Editar", + "Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u00c1rea de texto formatado. Pressione ALT-F9 para exibir o menu, ALT-F10 para exibir a barra de ferramentas ou ALT-0 para exibir a ajuda", + "Tools": "Ferramentas", + "View": "Visualizar", + "Table": "Tabela", + "Format": "Formatar" + }); + \ No newline at end of file diff --git a/public/uploads/Timbrado_2025.pdf b/public/uploads/Timbrado_2025.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5ae6171e1ed75c4671fead09ccf50745609a0b51 GIT binary patch literal 79923 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%0AHoh#tNqg3zk_$eNqP82 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

Y;GPGw+!RcAnxAe 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 Z+b42YPvsyF0B0a*{k>)}>9nt2{|`oJRr~+| literal 0 HcmV?d00001 diff --git a/public/uploads/timbrado-1743643409305-Documento a4 Papel timbrado dentista azul.png b/public/uploads/timbrado-1743643409305-Documento a4 Papel timbrado dentista azul.png new file mode 100644 index 0000000000000000000000000000000000000000..b5a52bf90e0a49b17174bd057c5d2f6335be40d7 GIT binary patch literal 70969 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 z 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 literal 0 HcmV?d00001 diff --git a/public/uploads/timbrado-1743643506911-timbradomv.png b/public/uploads/timbrado-1743643506911-timbradomv.png new file mode 100644 index 0000000000000000000000000000000000000000..b5a52bf90e0a49b17174bd057c5d2f6335be40d7 GIT binary patch literal 70969 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 z z`co@n75I6n?U(JR72TlHh4V%m8Lm#Qm6q3gF?w_PJDS0pCZoQE9V4a{3syg8&OYe`G)^9mlKTL;?yIINDlzTHVZz5&*}UR{%_ zdnz!rGDL|gCAq}&K((ZBdG>lw?pdGJ>G^u;S0mYTp9$bSr_+^l5nW}N<|Ov)Sl=w4 z%W@@nj89?0RqI3(&>`u?W&0kn%9+&2_Q8N^_0K2McLD&4ZzvL|p~+d(+jw|@^EgSI zHD4(lu0Kwt+6J&m`<+)mgdBqNV2FPJy&2lt%eug}Mra+G82?pcjj$iSTbb!1p5Ugn zQ_%Qdr--2=_Aw{G8|!WRgv{F-z~05uzEOIK>qL_*$;#uZ)pa8P2D>1IyGz6izlKZwMPwqbE599u zD#3P2OEv?%b0V8WN@__diH~l|1M`;P4-D%Q*Wzo=i~+mC6FyB-OROl*@k0#8;Y?mNf%G)hFSi<`{&cAmE{%*GQ2tFU z0NEFB18dgldI3*!I`T1x+%YY1`=%UEOSRVuaEY3$<|Z71N~r@1(f%sS|MMH)6HujW zRt~f5RX~YHvTgX90{H=++IZpI@Xtpdk|Lc~yxDDCBpb=kd61*cg-S>tvHYmmS~I4D zK~Q(Fh`DQA>LAMXZ5L%Z^9?ofX&H}sg%D(+6ihy?e_xYV2m_=-wTD@G+C&-By=Cmq8N}8AD8Kn;4z&iyigrZMu*Zh4<<-@sh&QOPEISL!5X$e0! zw7Ax_t1oE}Nxj=+VN5$*zUERtOa6=;RySY(44Ss|{*}M zxsS^XMcQPjsX_{p7yMl3R`lTt)<4s%85SG9UtBjuI(qAZy6oDZyHaeJ^3ig|VEr9N z6@2U=AZv&<;V^p~wVTA)`21d7i*zH-7I;F=)V@SitP0iuk59vUBq-DlRjoxC`|?l~ zb)pwX>7Gci2jh8TgRIu0yfFD%%b^J|Q~-H!dN_Vw}`LOi*MI_mizz0sOj*PHy1ofKNA$ns_h$Q3P$JNWW>uvxB3v&_h#-N_yyEV@R=v~ zH2Ie6G+)l^orw2yt7MIZ-SiLu>>SpWDy6uSsA!L{-g` zGtC+l3=A%R0%(m69IA8*^OFxf&RT1^|74;~9Jk!6_*u)VUPgD!%f82{+D=PQc|_eD z^9KE*r%0xYu4cuT?Q+h)@Cs}Ij9#fPsJe_hz*EEMpBxkbP<*aMQu6vI3&OM_(sz;# z?i{62-(!_PnnZQ|YlR_|L?a(U>C5ld5b=&1LxUAHb#@?{EFDoEU1>S~_wXtL$E(Uo z*3N8wrsSpIyABvF$eHv-NpHP{BG}=J;vb?b`P~RR1LkP>$?1wbO;I>06Z#l~di2nt z>IP~2noIK*2B%{nlpIVNR=fyC$`c<|U50D<{`1Q9W_hr8_?>bYw{U{-NP}b*Nct%0 zN&koUbc|hFT|k#9ppt;JY*#gqr?~9~qu0AFpJd&Qd*pUU{Sys%F_5!)9z+TCF$C5{JF4{;gxT?womyR^x zuPp`YB>bzPmOwWEX=K;>RAu4#>RDC zS4UxPbi_e;X8ltVU%SArdwhFdH-B-n98Cm9eL_dsQF1+M?fQc>(3Qm)2Zl^(w3c@~ zOMh2kds7$~@v#r%>a9jvuV2{1wLFYCtb;M$R&irqw-yvTdZMG$*Lz z>bBseRXYQwGeh)qvpq|mfxbE{mDPw6U_0BpC=b~*i8B74&x_F8pD!Ou9KH#vdk*7hP?1x|| zk$dydC(UEXgjhUwk~KLJHld@Z6HKTWqnTqOuUqEX)-SMz=a)ZlioItKlc6H=KXvT# zkw{UXH&Y{jCEE7n5;s#;o`Fg-rt z#M+|M#|3QcPMgQjr&7d<|I3jMJdU1F`%h~hltbG>ktYskb ztu^HO;dYTknGNCN7x#sit3urU*tbDy%_JT6HERMarm1|%S6tGhwdcopr?qTTvfbO& z<0TowqILeya)NhxbKb~E{2A6QxK;EJ>cF?*Hp+wjnN|7QZ)b9!JiPymU7DJtXcdP_ zn~7dVmms?`On2NSArs2He*%s1?_RMikac-RLNN~G|Ab(I?PJ3|BPsz{s6$KEc^0sS zI*Lk1%X}$Wg5S5mfi5X}(Z@XFrit~$mHX$$N44jZA4hX?&mOiU1i8d44%!_oZ3cAP zcC}w?tw9R|37ey@SKbSy^g?2!E(Fk6C7bMQO0dUL!wN22`CP+L={Eb~vBk|vnL8Ii z?3ee?44n}8Yxl5A0JitfOqln^%KEysc>0BjZh868&Fhax3uQZod}4exAsR7q63dM% zulJ`4S6%7r@;$>=_R-oG0i|9|x?=W8A|LVa-=gVzS#9#o2P+0vsA_B|{NjXt`^q|v zCcY}H)QqJaFNL&>HI5-2eLBXraKA!UnI;#m=W)(qWx}W9W0J7tLz(2uI;m({J$bx| zv)5oG!+62hgcH5EL}oB}yI}->a`D3;=-_USc3}L5Qc$#zB}FMYWN>BNIraOUAXH<| zvvfw2Z+h&)912Suz&v+S(1;{DSU(LJAJ;w-WoqFbaJB_Dabwhn=e5f|YY?COs*%?5 z^(}+^b!;m#9qh20BqDw5)|D8=BO1dfYBua-Gj!b+HXl)3AeJ5xczI4QZU9yD7IiWi zyw*&(mfdJ=-h{uWH)4+89Zz;BH+*|xlJIA*6}kG-*=^=AJmF$_)<%W6K>15hto>_O zIghhP8oGFbRh7&E7rNkD_L%0xLg)+VA``Yna=-ig5r;=tn=7-&IfIRN+{1dca7qFr zVZkN>qd5V06skHWHc5+DE5=VsRBNG^Gqwcw6obuTzaG4Ryj?!K?et<{II~<}?=EXV zplX_&?HJB1Zk&zG;j@`w7j|xs6QbJGY#P*lOz70VN&m$b{c~4o-9zZuAKmA(*HkP$ ztYdbqn%=XAzY2UH6{Mi}0aiW$DeQ8$VL)Vyqg^7qKio&YExY-_&)SO_wz2DtB03Y7 z^ThXym;Q`>l@xr~gQZE@EB0YmU3=>*2hdqLsP@M-XKn$;W8Qn|WB7fhcxxTE1`G3Z zot!SdXny*u;?a;2X2)RZZ~=2J6y{r_WuUs_l+%1AAjP zbmN+Kk5o?{*|@MBa(sQfN`5};#KfchE2{XWX*hX~iXhx5cXi!=?l<=9PT^I`xvRef z{+vmdgwa5pS37l!@wb0Pd3lcPSRJg8YZm7C{IATs{jz#745MY)uqyOP-f_PGzAKK3 zmYQ$`;557@VCzB#qZ&Zmc71TodgqxHSkcW>FRG-f{lZLm2295H8<;g!xgefc>m&3I zd-nDI4UTd{M-7bH{FLqpc{zG^JNgJ=IC`N8yUO#=#|da&PGDn&Z|oak`>j=zoE+-0 zBgaIG@9mu1jHKoK^($cinyW+MzRe4I)bZZA;2mA?-6JVaK4@C*gtr|e!0@}~1%>j5 zhqQHF_M5LTygQHhy`K};?@XUq>pU^vee}13tg$r&;)X;14iLl?@0p;oI^|zz99y?= zhEYUfCYM@QtjnJq`$O}|3$mBbN(`tY{UxeT(r+o$zFZ8S49c>w7cKg-1q*fDDT!o? zP4-})9NTX^9N6#WVve+$;kb$Q?Jd_Hswn=;H?qY4*>=~oKc8Q%ujGE=ynXWi{J4al zReP5B%kKLAcJqCkW?tZ4%-7s+?tQnpyscX)zFxm(b9TjCd)vbF?LS-di+-kQru=!y zdFFofpYt`EAHQ_9>Z*M(Whr}CS9*MEJlij+SN-WT-@nQ}mwq%`{=3}yWw(TwgqhBN z?@ych$LQbU=wIqbc!U%_RI}dWkE^k`_(A60cdk44cl&*|m1=BlzPbIaOqJHti*M4U zjY1O=Qy=O6Z&nNWINvKxg^_8$|AU_=zb}5Pzt{nr{K$dujxs zInPabWxfoVOGbqa3FL#~dia_{y{ zG=}=UA;MP@mbYzU7&qQJeAm3l4SMB`z-moqsEZogwH3mucl>rc2eT&0G!=F;&W8fl zBU$|A_fJSdgVbToG9FlwA-Ap};_btC(w53l*LPf<0t@*AheZWe+uo^FPKSAX<1C|5 jPr`zDG$w~_a{X7|ePgRH6PJ!I0}yz+`njxgN@xNAz$b~h literal 0 HcmV?d00001 diff --git a/public/uploads/timbrado-1743643653538-timbradomv.png b/public/uploads/timbrado-1743643653538-timbradomv.png new file mode 100644 index 0000000000000000000000000000000000000000..b5a52bf90e0a49b17174bd057c5d2f6335be40d7 GIT binary patch literal 70969 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 z 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 literal 0 HcmV?d00001 diff --git a/public/uploads/timbrado-1743643839450-timbradomv.png b/public/uploads/timbrado-1743643839450-timbradomv.png new file mode 100644 index 0000000000000000000000000000000000000000..b5a52bf90e0a49b17174bd057c5d2f6335be40d7 GIT binary patch literal 70969 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 z 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 literal 0 HcmV?d00001 diff --git a/public/uploads/timbrado-1743706131923-532750456-Timbrado_2025.pdf b/public/uploads/timbrado-1743706131923-532750456-Timbrado_2025.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5ae6171e1ed75c4671fead09ccf50745609a0b51 GIT binary patch literal 79923 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%0AHoh#tNqg3zk_$eNqP82 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

Y;GPGw+!RcAnxAe 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 Z+b42YPvsyF0B0a*{k>)}>9nt2{|`oJRr~+| literal 0 HcmV?d00001 diff --git a/public/uploads/timbrado-1744311885048-12655920-Timbrado_2025.pdf b/public/uploads/timbrado-1744311885048-12655920-Timbrado_2025.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5ae6171e1ed75c4671fead09ccf50745609a0b51 GIT binary patch literal 79923 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%0AHoh#tNqg3zk_$eNqP82 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

Y;GPGw+!RcAnxAe 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 Z+b42YPvsyF0B0a*{k>)}>9nt2{|`oJRr~+| literal 0 HcmV?d00001 diff --git a/scripts/create_admin_user.ts b/scripts/create_admin_user.ts new file mode 100644 index 0000000..d70ef5a --- /dev/null +++ b/scripts/create_admin_user.ts @@ -0,0 +1,55 @@ +import { PrismaClient, PerfilUsuario } from "@prisma/client"; +import bcrypt from "bcryptjs"; +import dotenv from "dotenv"; + +dotenv.config(); + +const prisma = new PrismaClient(); + +async function createAdminUser() { + try { + const adminData = { + nome: "Rodrigo Bertoldo de Sousa Martins", + email: "rodrigo@martinsevieira.adv.br", + senha: await bcrypt.hash("34641747", 10), + perfil: PerfilUsuario.ADVOGADO_ADMIN, + ativo: true, + cpf: "06116321100", + oab: "12774", + oabUF: "TO" + }; + + console.log("Tentando criar/atualizar usuário admin..."); + + // Verifica se já existe na tabela usuarios + const existingAdmin = await prisma.usuario.findUnique({ + where: { email: adminData.email } + }); + + if (existingAdmin) { + console.log("Usuário admin já existe. Atualizando..."); + await prisma.usuario.update({ + where: { email: adminData.email }, + data: adminData + }); + console.log("Admin atualizado com sucesso!"); + } else { + console.log("Criando novo usuário admin..."); + await prisma.usuario.create({ + data: adminData + }); + console.log("Novo admin criado com sucesso!"); + } + + console.log("\nCredenciais de acesso:"); + console.log("Email:", adminData.email); + console.log("Senha: 34641747"); + + } catch (error) { + console.error("Erro ao criar/atualizar usuário admin:", error); + } finally { + await prisma.$disconnect(); + } +} + +createAdminUser(); diff --git a/scripts/install-deps.bat b/scripts/install-deps.bat new file mode 100644 index 0000000..e69de29 diff --git a/scripts/migrateProcessos.ts b/scripts/migrateProcessos.ts new file mode 100644 index 0000000..827fa69 --- /dev/null +++ b/scripts/migrateProcessos.ts @@ -0,0 +1,43 @@ +import { PrismaClient } from "@prisma/client"; + +const prisma = new PrismaClient(); + +async function migrateProcessos() { + const processos = await prisma.processo.findMany({ + where: { + OR: [{ tribunalUF: null }, { tribunal: null }], + }, + }); + + console.log(`Encontrados ${processos.length} processos para migrar`); + + for (const processo of processos) { + const { tribunalUF, tribunal } = inferTribunal(processo.orgaoJulgador); + + await prisma.processo.update({ + where: { id: processo.id }, + data: { + tribunalUF, + tribunal, + }, + }); + } + + console.log("Migração concluída com sucesso!"); +} + +function inferTribunal(orgaoJulgador: string): { + tribunalUF: string; + tribunal: string; +} { + if (orgaoJulgador.includes("TJTO")) + return { tribunalUF: "TO", tribunal: "TJTO" }; + if (orgaoJulgador.includes("TRF1")) + return { tribunalUF: "DF", tribunal: "TRF1" }; + // ...adicionar mais casos conforme necessário + return { tribunalUF: "TO", tribunal: "TJTO" }; // Default +} + +migrateProcessos() + .catch(console.error) + .finally(() => prisma.$disconnect()); diff --git a/settings.json b/settings.json new file mode 100644 index 0000000..ed15bab --- /dev/null +++ b/settings.json @@ -0,0 +1,72 @@ +{ + // === TypeScript === + "typescript.tsdk": "node_modules/typescript/lib", + "typescript.enablePromptUseWorkspaceTsdk": true, + "typescript.tsserver.maxTsServerMemory": 4096, + "typescript.tsserver.experimental.enableProjectDiagnostics": false, + "typescript.referencesCodeLens.enabled": false, + "typescript.implementationsCodeLens.enabled": false, + + // === Lint/Format (Ajustes para evitar tarefas em tempo real) === + "editor.formatOnSave": false, + "editor.codeActionsOnSave": { + "source.fixAll": false, + "source.organizeImports": false + }, + "eslint.run": "onType", + "eslint.enable": true, + + // === Exclusões gerais de pastas pesadas (melhora a performance e busca) === + "files.exclude": { + "**/.git": true, + "**/.svn": true, + "**/.hg": true, + "**/.DS_Store": true, + "**/node_modules": true, + "**/dist": true, + "**/build": true, + "**/coverage": true, + "**/.next": true + }, + "search.exclude": { + "**/node_modules": true, + "**/dist": true, + "**/build": true, + "**/coverage": true, + "**/.next": true + }, + "files.watcherExclude": { + "**/node_modules/**": true, + "**/dist/**": true, + "**/build/**": true, + "**/coverage/**": true, + "**/.next/**": true + }, + + // === Auto Save e Sugestões === + "files.autoSave": "off", + "editor.suggest.snippetsPreventQuickSuggestions": false, + "editor.snippetSuggestions": "inline", + "editor.quickSuggestions": { + "other": true, + "comments": false, + "strings": false + }, + + // === Performance adicional de Interface === + "workbench.startupEditor": "none", + "workbench.editor.enablePreview": false, + "workbench.tree.renderIndentGuides": "none", + "breadcrumbs.enabled": false, + "explorer.compactFolders": false, + + // === Terminal e Shell rápido === + "terminal.integrated.enablePersistentSessions": false, + "terminal.integrated.scrollback": 1000, + + // === Telemetria & Experimentos desativados === + "telemetry.telemetryLevel": "off", + "update.showReleaseNotes": false, + "extensions.autoUpdate": false + } + \ No newline at end of file diff --git a/src/App.tsx b/src/App.tsx new file mode 100644 index 0000000..0fe2d5c --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,149 @@ +import React from "react"; +import { + createBrowserRouter, + RouterProvider, + createRoutesFromElements, + Route, + Navigate +} from "react-router-dom"; +import { LoginPage } from "./components/LoginPage"; +import { Dashboard } from "./components/Dashboard"; +import { MainLayout } from "./components/layouts/MainLayout"; +import { PrivateRoute } from "./components/PrivateRoute"; +import { AuthProvider } from "./contexts/AuthContext"; +import { ClientesPage } from "./components/clientes/ClientesPage"; +import { QueryClient, QueryClientProvider } from "react-query"; +import { ClienteDetalhes } from "./components/clientes/ClienteDetalhes"; +import { ProcessosPage } from "./components/processos/ProcessosPage"; +import { ProcessoDetalhes } from "./components/processos/ProcessoDetalhes"; +import { UsuariosPage } from "./components/usuarios/UsuariosPage"; +import { AdminRoute } from "./components/AdminRoute"; +import { PerfilPage } from "./components/perfil/PerfilPage"; +import { AtendimentosPage } from "./components/atendimentos/AtendimentosPage"; +import { AtendimentoDetalhes } from "./components/atendimentos/AtendimentoDetalhes"; +import { LocalizationProvider } from '@mui/x-date-pickers'; +import { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns'; +import { ptBR } from 'date-fns/locale'; +import { ThemeProvider } from './contexts/ThemeContext'; +import { TarefasPage } from "./components/tarefas/TarefasPage"; +import { DocumentosPage } from './components/DocumentosPage'; +import { ToastContainer } from 'react-toastify'; +import 'react-toastify/dist/ReactToastify.css'; +import { GerenciarTemplates } from './components/documentos/GerenciarTemplates'; +import { ConfiguracaoDocumento } from './components/documentos/ConfiguracaoDocumento'; +import { ProcessoAdministrativoList } from './components/processosAdministrativos/ProcessoAdministrativoList'; +import { ProcessoAdminDetalhes } from './components/processosAdministrativos/ProcessoAdminDetalhes'; +import { ProtectedRoute } from './components/ProtectedRoute'; +import { ProvaUpload } from './components/provas/ProvaUpload'; +import { ProvaStatus } from './components/provas/ProvaStatus'; +import { AdminProvas } from './components/provas/AdminProvas'; +import { VerificarProva } from './components/provas/VerificarProva'; +import { ErrorBoundary } from './components/ErrorBoundary'; +import { PublicVerificarProva } from './components/provas/PublicVerificarProva'; +import { ClientProvaUpload } from './components/provas/ClientProvaUpload'; +import { PublicProvaStatus } from './components/provas/PublicProvaStatus'; + +// Importar os componentes de cálculos +import { CalculosList } from './components/calculos/CalculosList'; +import { NovoCalculo } from './components/calculos/NovoCalculo'; +import { DetalhesCalculo } from './components/calculos/DetalhesCalculo'; +import { NovoPensaoAlimenticia } from './components/calculos/NovoPensaoAlimenticia'; + +const queryClient = new QueryClient(); + +const router = createBrowserRouter( + createRoutesFromElements( + <> + } errorElement={} /> + } /> + + {/* Rotas públicas para validação digital */} + } errorElement={} /> + } errorElement={} /> + } errorElement={} /> + + }> + }> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + + + + } /> + } + errorElement={} + /> + {/* Rotas para Cálculos Judiciais */} + + + + } /> + + + + + } /> + + + + + } /> + + {/* Rotas para Pensão Alimentícia */} + + + + } /> + + + + + } /> + + + } /> + + ) +); + +export const App: React.FC = () => { + return ( + + + + + + + + + + + ); +}; + +export default App; diff --git a/src/components/AdminRoute.tsx b/src/components/AdminRoute.tsx new file mode 100644 index 0000000..8c1386b --- /dev/null +++ b/src/components/AdminRoute.tsx @@ -0,0 +1,28 @@ +import { Navigate, Outlet } from "react-router-dom"; +import { useAuth } from "../contexts/AuthContext"; +import { PerfilUsuario } from "../types/usuario"; + +export function AdminRoute() { + const { user } = useAuth(); + + // Debug log + console.log("AdminRoute - User:", user); + console.log("AdminRoute - User perfil:", user?.perfil); + console.log("AdminRoute - Expected perfil:", PerfilUsuario.ADVOGADO_ADMIN); + console.log( + "AdminRoute - Is admin?:", + user?.perfil === PerfilUsuario.ADVOGADO_ADMIN, + ); + + // Aguardar o usuário ser carregado + if (!user) { + return null; + } + + // Verificar se o perfil é ADVOGADO_ADMIN + if (user.perfil !== "ADVOGADO_ADMIN") { + return ; + } + + return ; +} diff --git a/src/components/Dashboard.tsx b/src/components/Dashboard.tsx new file mode 100644 index 0000000..82a707a --- /dev/null +++ b/src/components/Dashboard.tsx @@ -0,0 +1,6 @@ +import React from 'react'; +import { DashboardLayout } from './dashboard/DashboardLayout'; + +export const Dashboard: React.FC = () => { + return ; +}; diff --git a/src/components/DocumentosPage.tsx b/src/components/DocumentosPage.tsx new file mode 100644 index 0000000..a7d95d6 --- /dev/null +++ b/src/components/DocumentosPage.tsx @@ -0,0 +1,364 @@ +import { useState, useEffect, useCallback } from 'react'; +import { useParams, useNavigate, Link } from 'react-router-dom'; +import { DocumentIcon, PlusIcon, TrashIcon, EyeIcon, XMarkIcon, DocumentArrowDownIcon } from '@heroicons/react/24/outline'; +import { DocumentoEditor } from './documentos/DocumentoEditor'; +import { api } from '../lib/api'; +import { toast } from 'react-toastify'; +import { useAuth } from '../contexts/AuthContext'; +import { Dialog } from '@headlessui/react'; +import { DocumentoViewer } from './documentos/DocumentoViewer'; + +interface Documento { + id: string; + nome: string; + conteudo: string; + processoId?: string; + atendimentoId?: string; + criadoEm: string; +} + +interface DocumentoPayload { + nome: string; + conteudo: string; + processoId?: string; + atendimentoId?: string; +} + +export function DocumentosPage() { + const [isEditorOpen, setIsEditorOpen] = useState(false); + const [documentos, setDocumentos] = useState([]); + const [modelos, setModelos] = useState([]); + const [tabValue, setTabValue] = useState(0); + const [isLoading, setIsLoading] = useState(true); + const { processoId, atendimentoId } = useParams(); + const navigate = useNavigate(); + const { user, signOut } = useAuth(); + const [isVisualizadorOpen, setVisualizadorOpen] = useState(false); + const [documentoVisualizado, setDocumentoVisualizado] = useState(null); + const [documentoEmEdicao, setDocumentoEmEdicao] = useState(null); + + const loadData = useCallback(async () => { + if (!user) { + navigate('/login'); + return; + } + + try { + setIsLoading(true); + await Promise.all([loadDocumentos(), loadModelos()]); + } catch (error) { + console.error('Erro ao carregar dados:', error); + if (error?.response?.status === 401) { + signOut(); // Usar a função do AuthContext + navigate('/login'); + } else { + toast.error('Erro ao carregar dados'); + } + } finally { + setIsLoading(false); + } + }, [user, navigate, signOut]); // Adicionar signOut nas dependências + + useEffect(() => { + loadData(); + }, [loadData, processoId, atendimentoId]); + + const loadDocumentos = async () => { + const params = {}; + if (processoId) params.processoId = processoId; + if (atendimentoId) params.atendimentoId = atendimentoId; + + const response = await api.get('/documentos', { params }); + setDocumentos(response.data); + }; + + const loadModelos = async () => { + const response = await api.get('/documentos-modelos'); + setModelos(response.data); + }; + + const handleSave = async (data: DocumentoPayload) => { + try { + const payload = { + nome: data.nome.trim(), + conteudo: data.conteudo.trim(), + tipo: documentoEmEdicao?.tipo || 'OUTROS', + modeloId: documentoEmEdicao?.modeloId, + processoId: data.processoId || processoId, + atendimentoId: data.atendimentoId || atendimentoId + }; + + if (documentoEmEdicao?.id) { + await api.put(`/documentos/${documentoEmEdicao.id}`, payload); + toast.success('Documento atualizado com sucesso'); + } else { + await api.post('/documentos', payload); + toast.success('Documento criado com sucesso'); + } + + await loadDocumentos(); + setIsEditorOpen(false); + setDocumentoEmEdicao(null); + } catch (error: any) { + console.error('Erro ao salvar documento:', error); + toast.error(error?.response?.data?.message || 'Erro ao salvar documento'); + } + }; + + const handleDeleteDocumento = async (id) => { + try { + await api.delete(`/documentos/${id}`); + toast.success('Documento excluído com sucesso'); + await loadDocumentos(); + } catch (error) { + console.error('Erro ao excluir documento:', error); + if (error?.response?.status === 401) { + toast.error('Sessão expirada. Por favor, faça login novamente.'); + } else { + toast.error('Erro ao excluir documento'); + } + } + }; + + const handleVisualizar = async (doc) => { + try { + setDocumentoVisualizado(doc); // Simplificar para usar o documento diretamente + setVisualizadorOpen(true); + } catch (error) { + console.error('Erro ao visualizar documento:', error); + toast.error('Erro ao visualizar documento'); + } + }; + + const handleExportPDF = async (documento) => { + try { + const configRes = await api.get('/documentos/configuracoes'); + const response = await api.post('/documentos/exportar-pdf', { + nome: documento.nome, + conteudo: documento.conteudo, + escritorio: configRes.data + }, { responseType: 'blob' }); + + // Criar URL do blob e fazer download + const url = window.URL.createObjectURL(new Blob([response.data])); + const link = document.createElement('a'); + link.href = url; + link.setAttribute('download', `${documento.nome}.pdf`); + document.body.appendChild(link); + link.click(); + link.parentNode.removeChild(link); + window.URL.revokeObjectURL(url); + + toast.success('PDF gerado com sucesso!'); + } catch (error) { + console.error('Erro ao gerar PDF:', error); + toast.error('Erro ao gerar PDF'); + } + }; + + const handleEdit = (documento) => { + // Garantir que todos os campos necessários estejam presentes + setDocumentoEmEdicao({ + id: documento.id, + nome: documento.nome, + conteudo: documento.conteudo, + tipo: documento.tipo || 'OUTROS', + modeloId: documento.modeloId, + processoId: documento.processoId || processoId, + atendimentoId: documento.atendimentoId || atendimentoId + }); + setVisualizadorOpen(false); + setIsEditorOpen(true); + }; + + const handleUseModelo = (modelo) => { + setDocumentoEmEdicao({ + nome: modelo.nome, + conteudo: modelo.conteudo, + modeloId: modelo.id, + tipo: 'OUTROS', + processoId: processoId, + atendimentoId: atendimentoId + }); + setIsEditorOpen(true); + }; + + if (isLoading) { + return
Carregando...
; + } + + return ( +
+
+

Documentos

+
+ + {user?.perfil === 'ADVOGADO_ADMIN' && ( + + )} +
+
+ +
+ +
+ + {tabValue === 0 && ( +
+ {documentos.map((doc) => ( +
+
{/* Ajustado min-height e layout */} +
+
+ +

{doc.nome}

+
+

+ Criado em: {new Date(doc.criadoEm).toLocaleDateString()} +

+
+ + {/* Botões em flex-wrap para melhor responsividade */} +
+ + + +
+
+
+ ))} +
+ )} + + {tabValue === 1 && ( +
+ {modelos.map((modelo) => ( +
+
+
+ +

{modelo.nome}

+
+

{modelo.descricao}

+ +
+
+ ))} +
+ )} + + setVisualizadorOpen(false)} + className="relative z-50" + > + + + { + setIsEditorOpen(false); + setDocumentoEmEdicao(null); + }} + onSave={handleSave} + processoId={processoId} + atendimentoId={atendimentoId} + documento={documentoEmEdicao} // Passando o documento em edição + /> +
+ ); +} \ No newline at end of file diff --git a/src/components/ErrorBoundary.tsx b/src/components/ErrorBoundary.tsx new file mode 100644 index 0000000..1500e41 --- /dev/null +++ b/src/components/ErrorBoundary.tsx @@ -0,0 +1,54 @@ +import React from 'react'; +import { Card } from './ui/Card'; +import { isRouteErrorResponse, useRouteError } from 'react-router-dom'; + +export function ErrorBoundary() { + const error = useRouteError(); + console.error(error); + + return ( +
+
+ +
+

+ Ocorreu um erro +

+ +
+ {isRouteErrorResponse(error) ? ( +
+

Status: {error.status}

+

Mensagem: {error.data.message || error.statusText}

+
+ ) : error instanceof Error ? ( +
+

Erro: {error.message}

+ {error.stack && ( +
+ Ver detalhes técnicos +
+                        {error.stack}
+                      
+
+ )} +
+ ) : ( +

Ocorreu um erro desconhecido.

+ )} +
+ + +
+
+
+
+ ); +} diff --git a/src/components/LoginPage.tsx b/src/components/LoginPage.tsx new file mode 100644 index 0000000..9b6af7e --- /dev/null +++ b/src/components/LoginPage.tsx @@ -0,0 +1,141 @@ +import React, { useState, useEffect } from "react"; +import { useNavigate, useLocation } from "react-router-dom"; +import { useAuth } from "../contexts/AuthContext"; + +export const LoginPage: React.FC = () => { + const [email, setEmail] = useState(""); + const [senha, setSenha] = useState(""); + const [error, setError] = useState(""); + const [loading, setLoading] = useState(false); + const navigate = useNavigate(); + const { signIn, isAuthenticated } = useAuth(); + const location = useLocation(); + + useEffect(() => { + if (isAuthenticated) { + const from = location.state?.from?.pathname || "/dashboard"; + navigate(from, { replace: true }); + } + }, [isAuthenticated, navigate, location]); + + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + try { + setLoading(true); + console.log("Tentando login com:", { email, senha }); // Debug + await signIn(email, senha); + navigate("/dashboard"); + } catch (error) { + console.error("Erro detalhado:", error); // Debug detalhado + setError("Email ou senha inválidos"); + } finally { + setLoading(false); + } + }; + + return ( +
+ {/* Círculos decorativos */} +
+
+
+ + {/* Logo */} +
+

AdvX

+
+
+ + {/* Card de Login */} +
+
+

+ Bem-vindo de volta +

+

Entre com suas credenciais

+
+ + {error && ( +
+ {error} +
+ )} + +
+
+
+ + setEmail(e.target.value)} + className="w-full px-4 py-3 rounded-lg bg-white/10 border border-white/20 text-white placeholder-blue-200 focus:ring-2 focus:ring-blue-400 focus:border-transparent transition duration-200" + placeholder="seu@email.com" + required + disabled={loading} + /> +
+
+ + setSenha(e.target.value)} + className="w-full px-4 py-3 rounded-lg bg-white/10 border border-white/20 text-white placeholder-blue-200 focus:ring-2 focus:ring-blue-400 focus:border-transparent transition duration-200" + placeholder="••••••••" + required + disabled={loading} + /> +
+
+ + +
+ +
+

+ Problemas com acesso? Contate o administrador +

+
+
+
+ ); +}; diff --git a/src/components/PrivateRoute.tsx b/src/components/PrivateRoute.tsx new file mode 100644 index 0000000..4d9556a --- /dev/null +++ b/src/components/PrivateRoute.tsx @@ -0,0 +1,14 @@ +import React from "react"; +import { Navigate, Outlet, useLocation } from "react-router-dom"; +import { useAuth } from "../contexts/AuthContext"; + +export const PrivateRoute: React.FC = () => { + const { isAuthenticated } = useAuth(); + const location = useLocation(); + + return isAuthenticated ? ( + + ) : ( + + ); +}; diff --git a/src/components/ProtectedRoute.tsx b/src/components/ProtectedRoute.tsx new file mode 100644 index 0000000..73db1e3 --- /dev/null +++ b/src/components/ProtectedRoute.tsx @@ -0,0 +1,36 @@ +import { useAuth } from '../contexts/AuthContext'; +import { Navigate, useLocation } from 'react-router-dom'; + +interface ProtectedRouteProps { + children: React.ReactNode; + roles?: string[]; +} + +export function ProtectedRoute({ children, roles }: ProtectedRouteProps) { + const { user } = useAuth(); + const location = useLocation(); + + console.log('ProtectedRoute - Current Path:', location.pathname); + console.log('ProtectedRoute - Required Roles:', roles); + console.log('ProtectedRoute - User:', user); + + if (!user) { + console.log('ProtectedRoute - No user, redirecting to login'); + return ; + } + + if (!roles || roles.length === 0) { + console.log('ProtectedRoute - No roles required, allowing access'); + return <>{children}; + } + + if (!roles.includes(user.perfil)) { + console.log('ProtectedRoute - Access denied'); + console.log('Required roles:', roles); + console.log('User role:', user.perfil); + return ; + } + + console.log('ProtectedRoute - Access granted'); + return <>{children}; +} diff --git a/src/components/Sidebar.tsx b/src/components/Sidebar.tsx new file mode 100644 index 0000000..95743a5 --- /dev/null +++ b/src/components/Sidebar.tsx @@ -0,0 +1,25 @@ +import { useLocation } from 'react-router-dom'; +import { + HomeIcon, + ScaleIcon, + UserGroupIcon, + UserIcon, + ClipboardDocumentCheckIcon, + DocumentTextIcon, +} from '@heroicons/react/24/outline'; + +export function useNavigation() { + const { pathname } = useLocation(); + + return [ + { name: 'Dashboard', href: '/dashboard', icon: HomeIcon }, + { name: 'Processos', href: '/processos', icon: ScaleIcon }, + { name: 'Clientes', href: '/clientes', icon: UserGroupIcon }, + { name: 'Atendimentos', href: '/atendimentos', icon: UserIcon }, + { name: 'Tarefas', href: '/tarefas', icon: ClipboardDocumentCheckIcon }, + { name: 'Documentos', href: '/documentos', icon: DocumentTextIcon }, + ].map(item => ({ + ...item, + current: pathname === item.href + })); +} \ No newline at end of file diff --git a/src/components/atendimentos/AgendamentoCalendario.tsx b/src/components/atendimentos/AgendamentoCalendario.tsx new file mode 100644 index 0000000..0c10dc4 --- /dev/null +++ b/src/components/atendimentos/AgendamentoCalendario.tsx @@ -0,0 +1,247 @@ +import { useState, useEffect } from 'react'; +import { format, startOfWeek, addDays, isSameDay, parseISO, getHours } from 'date-fns'; +import { ptBR } from 'date-fns/locale'; +import { AgendamentoForm } from './AgendamentoForm'; +import { AtendimentoForm } from './AtendimentoForm'; +import api from '../../services/api'; + +interface Agendamento { + id: string; + data: string; + cliente: { + id: string; + nome: string; + }; + status: string; + tipo?: string; + observacoes?: string; +} + +export function AgendamentoCalendario() { + const [selectedDate, setSelectedDate] = useState(new Date()); + const [agendamentos, setAgendamentos] = useState([]); + const [formOpen, setFormOpen] = useState(false); + const [selectedAgendamento, setSelectedAgendamento] = useState(null); + const [atendimentoFormOpen, setAtendimentoFormOpen] = useState(false); + + useEffect(() => { + loadAgendamentos(selectedDate); + }, [selectedDate]); + + const loadAgendamentos = async (date: Date) => { + try { + const response = await api.get('/agendamentos', { + params: { data: date.toISOString() } + }); + setAgendamentos(response.data); + } catch (error) { + console.error('Erro ao carregar agendamentos:', error); + } + }; + + const weekDays = [...Array(7)].map((_, i) => { + const day = addDays(startOfWeek(selectedDate, { locale: ptBR }), i); + return format(day, 'EEEE', { locale: ptBR }); + }); + + const timeSlots = [...Array(9)].map((_, i) => { + const hour = i + 9; // Começa às 9h + return `${hour}:00`; + }); + + const getAgendamentosForSlot = (dayIndex: number, hour: number) => { + return agendamentos.filter((agendamento: Agendamento) => { + const agendamentoDate = parseISO(agendamento.data); + const slotDate = addDays(startOfWeek(selectedDate, { locale: ptBR }), dayIndex); + + return isSameDay(agendamentoDate, slotDate) && getHours(agendamentoDate) === hour; + }); + }; + + const handleAgendamentoClick = async (agendamento: Agendamento) => { + try { + // Buscar atendimento inicial se o tipo não for INICIAL + if (agendamento.tipo !== 'INICIAL') { + const response = await api.get(`/atendimentos/iniciais/${agendamento.cliente.id}`); + const atendimentosIniciais = response.data; + + // Pegar o atendimento inicial mais recente + const atendimentoInicial = atendimentosIniciais[0]; + + setSelectedAgendamento({ + ...agendamento, + atendimentoInicial: atendimentoInicial + }); + } else { + setSelectedAgendamento(agendamento); + } + setAtendimentoFormOpen(true); + } catch (error) { + console.error('Erro ao buscar atendimento inicial:', error); + } + }; + + const handleEditAgendamento = async (agendamento: Agendamento) => { + try { + // Editar agendamento existente + setSelectedAgendamento(agendamento); + setFormOpen(true); + } catch (error) { + console.error('Erro ao editar agendamento:', error); + } + }; + + const handleDeleteAgendamento = async (id: string) => { + if (window.confirm('Tem certeza que deseja excluir este agendamento?')) { + try { + await api.delete(`/agendamentos/${id}`); + await loadAgendamentos(selectedDate); + } catch (error) { + console.error('Erro ao excluir agendamento:', error); + } + } + }; + + return ( +
+
+

Agenda de Atendimentos

+ +
+ +
+ {/* Coluna de horários */} +
+
{/* Espaço para alinhar com cabeçalho */} + {timeSlots.map(time => ( +
+ {time} +
+ ))} +
+ + {/* Colunas dos dias */} + {weekDays.map((day, dayIndex) => ( +
+
+ {day} +
+ {timeSlots.map((time, i) => { + const hour = i + 9; + const slotsAgendamentos = getAgendamentosForSlot(dayIndex, hour); + + return ( +
setFormOpen(true)} + > + {slotsAgendamentos.map((agendamento: Agendamento) => ( +
+
+
{agendamento.cliente.nome}
+
+ + {agendamento.status !== 'REALIZADO' && ( + + )} + +
+
+
+ {format(parseISO(agendamento.data), 'HH:mm')} +
+
+ ))} +
+ ); + })} +
+ ))} +
+ + setFormOpen(false)} + onSave={() => { + loadAgendamentos(selectedDate); + setFormOpen(false); + }} + /> + + {selectedAgendamento && ( + { + setAtendimentoFormOpen(false); + setSelectedAgendamento(null); + }} + onSave={async () => { + await loadAgendamentos(selectedDate); + setAtendimentoFormOpen(false); + setSelectedAgendamento(null); + }} + clienteId={selectedAgendamento.cliente.id} + initialData={{ + titulo: `Atendimento - ${selectedAgendamento.cliente.nome}`, + agendamentoId: selectedAgendamento.id, + tipo: selectedAgendamento.tipo || 'INICIAL', + atendimentoInicialId: selectedAgendamento.atendimentoInicial?.id + }} + /> + )} +
+ ); +} + +function getStatusColor(status: string) { + switch (status) { + case 'AGENDADO': + return 'bg-blue-100 text-blue-800'; + case 'CONFIRMADO': + return 'bg-green-100 text-green-800'; + case 'CANCELADO': + return 'bg-red-100 text-red-800'; + case 'REALIZADO': + return 'bg-purple-100 text-purple-800'; + case 'NAO_COMPARECEU': + return 'bg-gray-100 text-gray-800'; + default: + return 'bg-gray-100 text-gray-800'; + } +} diff --git a/src/components/atendimentos/AgendamentoForm.tsx b/src/components/atendimentos/AgendamentoForm.tsx new file mode 100644 index 0000000..dd9fb4d --- /dev/null +++ b/src/components/atendimentos/AgendamentoForm.tsx @@ -0,0 +1,208 @@ +import { useState, useCallback, useEffect } from 'react'; +import { DateTimePicker } from '@mui/x-date-pickers'; +import api from '../../services/api'; + +// Implementar debounce +function debounce(fn: Function, ms = 300) { + let timeoutId: ReturnType; + return function (this: any, ...args: any[]) { + clearTimeout(timeoutId); + timeoutId = setTimeout(() => fn.apply(this, args), ms); + }; +} + +interface AgendamentoFormProps { + open: boolean; + onClose: () => void; + onSave: () => void; + clienteId?: string; + agendamento?: { + id: string; + data: string; + cliente: { + id: string; + nome: string; + }; + tipo: string; + observacoes?: string; + }; +} + +export function AgendamentoForm({ open, onClose, onSave, clienteId: defaultClienteId, agendamento }: AgendamentoFormProps) { + const [data, setData] = useState(null); + const [observacoes, setObservacoes] = useState(''); + const [error, setError] = useState(''); + const [isSaving, setIsSaving] = useState(false); + const [tipo, setTipo] = useState(''); + + // Adicionar estados para busca de cliente + const [searchTerm, setSearchTerm] = useState(''); + const [searchResults, setSearchResults] = useState([]); + const [selectedClient, setSelectedClient] = useState(null); + const [clienteId, setClienteId] = useState(defaultClienteId || ''); + + // Preencher form quando editar + useEffect(() => { + if (agendamento) { + setData(new Date(agendamento.data)); + setClienteId(agendamento.cliente.id); + setSearchTerm(agendamento.cliente.nome); + setTipo(agendamento.tipo || ''); + setObservacoes(agendamento.observacoes || ''); + } + }, [agendamento]); + + // Busca de clientes com debounce + const searchClients = useCallback( + debounce(async (term: string) => { + if (term.length < 3) return; + try { + const response = await api.get(`/clientes/search?q=${term}`); + setSearchResults(response.data); + } catch (error) { + console.error('Erro ao buscar clientes:', error); + } + }, 300), + [] + ); + + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + if (!data || !clienteId) { + setError('Data e cliente são obrigatórios'); + return; + } + + try { + setIsSaving(true); + if (agendamento) { + // Atualizar agendamento existente + await api.put(`/agendamentos/${agendamento.id}`, { + clienteId, + data: data.toISOString(), + observacoes, + tipo, + }); + } else { + // Criar novo agendamento + await api.post('/agendamentos', { + clienteId, + data: data.toISOString(), + observacoes, + tipo, + }); + } + onSave(); + onClose(); + } catch (error) { + setError(agendamento ? 'Erro ao atualizar agendamento' : 'Erro ao criar agendamento'); + } finally { + setIsSaving(false); + } + }; + + return ( +
+
+

Agendar Atendimento

+ +
+ {/* Busca de Cliente */} +
+ + { + setSearchTerm(e.target.value); + searchClients(e.target.value); + }} + className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500" + placeholder="Buscar cliente..." + /> + + {searchResults.length > 0 && ( +
+ {searchResults.map(client => ( +
{ + setSelectedClient(client); + setClienteId(client.id); + setSearchTerm(client.nome); + setSearchResults([]); + }} + > +
{client.nome}
+
{client.cpfCnpj}
+
+ ))} +
+ )} +
+ +
+ +
+ + {/* Campo de Tipo de Atendimento */} +
+ +
+ +
+